Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

DevJam 2019 - Building an ALEC Time Engine

126 Aufrufe

Veröffentlicht am

Talk from David Smith about how to create your custom correlation in our ALEC framework.

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

DevJam 2019 - Building an ALEC Time Engine

  1. 1. Building an ALEC Time Engine DEV-JAM 2019 David Smith – Software Developer @ OpenNMS
  2. 2. Alarm Correlation • What is Alarm Correlation? • What is a Situation? • Benefits of Alarm Correlation
  3. 3. ALEC is a framework for Alarm Correlation • ALEC as an extension to OpenNMS • Direct (via OIA) • Distributed (via Kafka)
  4. 4. ALEC is a framework for Alarm Correlation • Direct (via OIA)
  5. 5. ALEC is a framework for Alarm Correlation • Distributed (via Kafka)
  6. 6. ALEC is a framework for Alarm Correlation • What is the Framework that ALEC provides: – Data sources: Alarm, Inventory, Situations, Feedback – A Driver to control the engine – A simplified API – just implement an Engine and an EngineFactory
  7. 7. How is it done? • Correlation Engine processing Alarms – Input: Stream of Alarms, Inventory, Feedback – Driver: Ticks – Engine Output: New Alarms (Situations) with Alarms in Buckets
  8. 8. How to build an Engine • Create a Karaf feature that – implements the Engine and EngineFactory APIs – Pass initial configuration via blueprint.xml • Existing Engines you can use as references – ClusterEngine – DBScan – DeepLearning
  9. 9. What is a Time Based Correlation engine • A simple implementation of the Engine API – For demo, we will only consider incoming Alarms • Sliding Window – Alarms that come in all at the same time are often related – We can choose the size of the sliding window • Improvements not considered in the demo – Using inventory info
  10. 10. Dependencies <dependency> <groupId>org.opennms.alec.engine</groupId> <artifactId>org.opennms.alec.engine.api</artifactId> <version>2.0.0-SNAPSHOT</version> <type>bundle</type> </dependency> <dependency> <groupId>org.opennms.alec.datasource</groupId> <artifactId>org.opennms.alec.datasource.common</artifactId> <version>2.0.0-SNAPSHOT</version> <type>bundle</type> </dependency> Use '1.0.1' if you are depending on public Maven artifacts * Use '2.0.0-SNAPSHOT' if you build ALEC locally
  11. 11. The Correlation EngineFactory Interface • Engine Factory interface: – String getName() – used in Logging and to name the Thread your engine will run in in addition to being a handle for your engine. – Engine createEngine() – used to instantiate your engine. An ideal place to inject configuration options public String getName() { return "DevJam!"; } public Engine createEngine() { return new DevJamEngine(sliceMillis); }
  12. 12. The Correlation Engine Interface ● Engine interface: – < see code in IDE > –
  13. 13. Deployment • Log into OpenNMS Karaf – ssh admin@localhost -p 8101 • Add repo for ALEC – feature:repo-add mvn:org.opennms.alec/alec-karaf-features/2.0.0-SNAPSHOT/xml • Add our engine repo – feature:repo-add mvn:org.opennms.devjam/alec-temporal-engine/1.0.0-SNAPSHOT/xml • Install OIA and the core ALEC components: – Feature:install opennms-integration-api – feature:install alec-features-graph-api alec-datasource-opennms-direct alec-processor-standalone alec-driver- main • Install the DevJam! Engine – feature:install alec-engine-temporal
  14. 14. The Possibilities • Correlate based solely on 'space' • Rules-Based Correlation • Domain Specific correlation • All data in Alarms and Inventory are available
  15. 15. Further Reading: • ALEC Documentation: https://alec.opennms.com/ • GitHub: OpenNMS ALEC : OpenNMS Architecture for Learning Enabled Correlation – https://github.com/OpenNMS/alec DevJam 2019 : Time Engine Sample Project – https://github.com/smith-opennms/devjam2019
  16. 16. The end. Thank you. Questions? smith@opennms.com