SlideShare a Scribd company logo
1 of 32
Download to read offline
OpenNMS 14 and Beyond
OSMC 2014 – 20 November 2014
Tarus Balog
tarus@opennms.org
#MonitoringSucks
http://www.adventuresinoss.com
Agenda
•OpenNMS Overview
– History
– Main Feature Areas
– Organization
•OpenNMS 14
– Topology (demo)
– Wall Boards
– Ops Panel
•Automation Demo
•Questions and Answers
OpenNMS is the world's first
enterprise-grade network
management application
platform developed under the
open source model.
“world's first”
•NetSaint 2000-01-10 1323
•OpenNMS 2000-03-29 4141
•Zabbix 2001-03-23 23494
•Nagios 2001-05-03 26589
•RRDTool 2003-01-13 71544
•ZenOSS 2006-03-20 163126
•Icinga 2009-04-21
“enterprise-grade”
• Nearly 63,000 Devices on a One Instance (Swisscom)
• 1.2 Million Data Points Every Five Minutes (New Edge)
• 320,000 Interfaces per Device (Wind)
• 2000 events/sec (SRNS)
• 4000 Remote Monitors (Papa Johns)
“network management application platform”
The Architecture of OpenNMS has been
designed to allow for easy integration of
other tools, both proprietary and open.
“open source model”
OpenNMS is published under the AGPLv3
and all components are licensed under an
OSI-qualified free software license.
•Event Management: including custom events, SNMP traps,
syslog, event translation, automations and correlation.
•Provisioning: Both automated and directed discovery. Fully
supported via ReST.
•Performance Data Collection: SNMP, HTTP, XML, JDBC,
JMX, WMI
•Service Assurance: Service Checks with Outage Models
The Four Main Areas of OpenNMS
opennms.org
opennms.com
• Home of The OpenNMS Group, Inc.
• Provides Services:
– Support
– Consulting
– Custom Development
– Training
– Licensing
opennms.eu
OpenNMS Versions (old)
• Stable (Production) Versions Have an Even Number:
– 1.8
– 1.10
– 1.12
• Unstable (Development) Versions Have an Odd Number:
– 1.7
– 1.9
– 1.11
OpenNMS 14
• Reflects 10+ years of development
• More frequent releases
• Best Release to Date:
– Numerous bug fixes big and small
– Graphical Improvements
Maps! We have Maps! (demo)
Ops Panel and Wall Board
Alarms and Automations
• Alarms exist to
– Reduce similar events
– Perform correlation
• Automations consist of
– Trigger (optional)
– Action
– Event (optional)
• Automations operate mainly on alarms but can access
the whole database
• Used for correlation
Automations Example: Did a script run?
External Script
Script Started
Script Finished
Script Error
Port 5817
O
p
e
n
N
M
S
Step 1: Create a Tracker Alarm
• Trigger: See if a ScriptFinished alarms exists without a
tracker alarm
• Action: NOP
• Event: Create a new event that will generate the
tracker alarm
<automation name="generateTracker" interval="30000" active="true"
trigger-name="selectFinishedScriptsNoTracker"
action-name="doNothingAction"
action-event="createTrackerAlarm" />
selectFinishedScriptsNoTracker
<trigger name="selectFinishedScriptsNoTracker"
operator="&gt;=" row-count="1" >
<statement>
SELECT alarmid AS _alarmid,
nodeid AS _nodeid,
eventuei AS _eventuei,
lasteventtime AS _ts,
substring(eventparms from '.*name=(w+).*') AS _parmname
FROM alarms
WHERE eventuei='uei.opennms.org/scripts/scriptFinished'
AND substring(reductionkey from
'uei.opennms.org/scripts/scriptFinished:(.*)') NOT IN
(SELECT substring(reductionkey from '.*scriptTracker:.*:(.*)')
FROM alarms
doNothingAction
<action name="doNothingAction" >
<statement>
UPDATE node
SET nodeid = -1
WHERE nodeid = -1
</statement>
</action>
createTrackerAlarm
<action-event name="createTrackerAlarm" for-each-result="true" >
<assignment type="field" name="uei"
value="uei.opennms.org/scripts/scriptTracker" />
<assignment type="field" name="nodeid" value="${_nodeid}" />
<assignment type="parameter" name="name" value="${_parmname}" />
<assignment type="parameter" name="alarmId" value="${_alarmid}" />
<assignment type="parameter" name="alarmEventUei" value="${_eventUei}" />
</action-event>
Step 2: Create a Tracker Alarm
• Trigger: See if a new ScriptFinished has arrived
• Action: Update the last event time for the Tracker
• Event: none
<automation name="updateTracker" interval="30000" active="true"
trigger-name="selectFinishedScripts"
action-name="updateTrackerAlarms" />
selectFinishedScripts
<trigger name="selectFinishedScripts" operator="&gt;=" row-
count="1" >
<statement>
SELECT alarmid AS _alarmid,
nodeid AS _nodeid,
lasteventtime AS _lasteventtime,
substring(eventparms from '.*name=(w+).*') AS _parmname,
now() AS _ts
FROM alarms
WHERE eventuei='uei.opennms.org/scripts/scriptFinished'
</statement>
</trigger>
updateTrackerAlarms
<action name="updateTrackerAlarms" >
<statement>
UPDATE alarms
SET firstautomationtime =
COALESCE(firstautomationtime, ${_ts}),
lastautomationtime = ${_ts},
lasteventtime = ${_lasteventtime}
WHERE eventuei = 'uei.opennms.org/scripts/scriptTracker'
AND substring(reductionkey from
'uei.opennms.org/scripts/scriptTracker:(.*)')
= ${_nodeid}||':'||${_parmname}
</statement>
Step 3: See if the Tracker Alarm is
Updated
• Trigger: Select all of the open Tracker alarms and
check if they have been updated.
• Action: NOP
• Event: Create a new event that will generate the
“script did not run” alarm
<automation name="generateScriptDidNotRun" interval="30000" active="true"
trigger-name="selectTrackerAlarms"
action-name="doNothingAction"
action-event="createScriptDidNotRunAlarm" />
selectTrackerAlarms
<trigger name="selectTrackerAlarms" operator="&gt;=" row-count="1" >
<statement>
SELECT alarmid AS _alarmid,
nodeid AS _nodeid,
eventuei AS _eventuei,
lasteventtime AS _lasteventtime,
now() as _ts,
substring(eventparms from '.*name=(w+).*') AS _parmname
FROM alarms
WHERE eventuei='uei.opennms.org/scripts/scriptTracker'
AND lasteventtime &lt; now() - interval '3 minutes'
AND substring(reductionkey from 'uei.opennms.org/scripts/scriptTracker:(.*)')
NOT IN (select substring(reductionkey from '.*scriptNotRunning:(.*)')
FROM alarms WHERE eventuei='uei.opennms.org/scripts/scriptNotRunning')
</statement>
</trigger>
doNothingAction
<action name="doNothingAction" >
<statement>
UPDATE node
SET nodeid = -1
WHERE nodeid = -1
</statement>
</action>
createScriptDidNotRun
<action-event name="createScriptDidNotRunAlarm" for-each-result="true" >
<assignment type="field" name="uei"
value="uei.opennms.org/scripts/scriptNotRunning" />
<assignment type="field" name="nodeid" value="${_nodeid}" />
<assignment type="parameter" name="name" value="${_parmname}" />
<assignment type="parameter" name="alarmId" value="${_alarmid}" />
<assignment type="parameter" name="alarmEventUei"
value="${_eventUei}" />
</action-event>
Looking To the Future: IoT
• Newts: New Time Series Database
• Minion/Dominion:
https://github.com/OpenNMS/smnnepo

More Related Content

Similar to OSMC 2014 | OpenNMS 14 by Tarus Balog

Empowering the "mobile web"
Empowering the "mobile web"Empowering the "mobile web"
Empowering the "mobile web"
Chris Mills
 

Similar to OSMC 2014 | OpenNMS 14 by Tarus Balog (20)

Building Self-Defending Applications With OWASP AppSensor JavaOne 2016
Building Self-Defending Applications With OWASP AppSensor JavaOne 2016Building Self-Defending Applications With OWASP AppSensor JavaOne 2016
Building Self-Defending Applications With OWASP AppSensor JavaOne 2016
 
OSMC 2016 - ZMON Zalandos OS approach to monitoring in the cloud and DCs by J...
OSMC 2016 - ZMON Zalandos OS approach to monitoring in the cloud and DCs by J...OSMC 2016 - ZMON Zalandos OS approach to monitoring in the cloud and DCs by J...
OSMC 2016 - ZMON Zalandos OS approach to monitoring in the cloud and DCs by J...
 
OSMC 2016 | ZMON: Zalando's OS approach to monitoring in the cloud and DCs by...
OSMC 2016 | ZMON: Zalando's OS approach to monitoring in the cloud and DCs by...OSMC 2016 | ZMON: Zalando's OS approach to monitoring in the cloud and DCs by...
OSMC 2016 | ZMON: Zalando's OS approach to monitoring in the cloud and DCs by...
 
OpenNMS - My Notes
OpenNMS - My NotesOpenNMS - My Notes
OpenNMS - My Notes
 
Intro To webOS
Intro To webOSIntro To webOS
Intro To webOS
 
Network Automation with Salt and NAPALM: a self-resilient network
Network Automation with Salt and NAPALM: a self-resilient networkNetwork Automation with Salt and NAPALM: a self-resilient network
Network Automation with Salt and NAPALM: a self-resilient network
 
Testing kubernetes and_open_shift_at_scale_20170209
Testing kubernetes and_open_shift_at_scale_20170209Testing kubernetes and_open_shift_at_scale_20170209
Testing kubernetes and_open_shift_at_scale_20170209
 
StackStrom: If-This-Than-That for Devops Automation
StackStrom: If-This-Than-That for Devops AutomationStackStrom: If-This-Than-That for Devops Automation
StackStrom: If-This-Than-That for Devops Automation
 
Aplicações assíncronas no Android com
Coroutines & Jetpack
Aplicações assíncronas no Android com
Coroutines & JetpackAplicações assíncronas no Android com
Coroutines & Jetpack
Aplicações assíncronas no Android com
Coroutines & Jetpack
 
IoT Supercharged: Complex event processing for MQTT with Eclipse technologies
IoT Supercharged: Complex event processing for MQTT with Eclipse technologiesIoT Supercharged: Complex event processing for MQTT with Eclipse technologies
IoT Supercharged: Complex event processing for MQTT with Eclipse technologies
 
Aplicações Assíncronas no Android com Coroutines e Jetpack
Aplicações Assíncronas no Android com Coroutines e JetpackAplicações Assíncronas no Android com Coroutines e Jetpack
Aplicações Assíncronas no Android com Coroutines e Jetpack
 
Empowering the “Mobile Web” with Chris Mills
Empowering the “Mobile Web” with Chris MillsEmpowering the “Mobile Web” with Chris Mills
Empowering the “Mobile Web” with Chris Mills
 
Empowering the Mobile Web - Mills
Empowering the Mobile Web - MillsEmpowering the Mobile Web - Mills
Empowering the Mobile Web - Mills
 
Empowering the "mobile web"
Empowering the "mobile web"Empowering the "mobile web"
Empowering the "mobile web"
 
AllDayDevOps 2019 AppSensor
AllDayDevOps 2019 AppSensorAllDayDevOps 2019 AppSensor
AllDayDevOps 2019 AppSensor
 
TinyOS 2.1 tutorial at IPSN 2009
TinyOS 2.1 tutorial at IPSN 2009TinyOS 2.1 tutorial at IPSN 2009
TinyOS 2.1 tutorial at IPSN 2009
 
Serverless London 2019 FaaS composition using Kafka and CloudEvents
Serverless London 2019   FaaS composition using Kafka and CloudEventsServerless London 2019   FaaS composition using Kafka and CloudEvents
Serverless London 2019 FaaS composition using Kafka and CloudEvents
 
Basic Understanding and Implement of Node.js
Basic Understanding and Implement of Node.jsBasic Understanding and Implement of Node.js
Basic Understanding and Implement of Node.js
 
08.Push Notifications
08.Push Notifications 08.Push Notifications
08.Push Notifications
 
Android Jumpstart Jfokus
Android Jumpstart JfokusAndroid Jumpstart Jfokus
Android Jumpstart Jfokus
 

Recently uploaded

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Recently uploaded (20)

Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
ManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide Deck
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 

OSMC 2014 | OpenNMS 14 by Tarus Balog

  • 1. OpenNMS 14 and Beyond OSMC 2014 – 20 November 2014 Tarus Balog tarus@opennms.org
  • 3. Agenda •OpenNMS Overview – History – Main Feature Areas – Organization •OpenNMS 14 – Topology (demo) – Wall Boards – Ops Panel •Automation Demo •Questions and Answers
  • 4. OpenNMS is the world's first enterprise-grade network management application platform developed under the open source model.
  • 5. “world's first” •NetSaint 2000-01-10 1323 •OpenNMS 2000-03-29 4141 •Zabbix 2001-03-23 23494 •Nagios 2001-05-03 26589 •RRDTool 2003-01-13 71544 •ZenOSS 2006-03-20 163126 •Icinga 2009-04-21
  • 6. “enterprise-grade” • Nearly 63,000 Devices on a One Instance (Swisscom) • 1.2 Million Data Points Every Five Minutes (New Edge) • 320,000 Interfaces per Device (Wind) • 2000 events/sec (SRNS) • 4000 Remote Monitors (Papa Johns)
  • 7. “network management application platform” The Architecture of OpenNMS has been designed to allow for easy integration of other tools, both proprietary and open.
  • 8. “open source model” OpenNMS is published under the AGPLv3 and all components are licensed under an OSI-qualified free software license.
  • 9.
  • 10. •Event Management: including custom events, SNMP traps, syslog, event translation, automations and correlation. •Provisioning: Both automated and directed discovery. Fully supported via ReST. •Performance Data Collection: SNMP, HTTP, XML, JDBC, JMX, WMI •Service Assurance: Service Checks with Outage Models The Four Main Areas of OpenNMS
  • 11.
  • 13. opennms.com • Home of The OpenNMS Group, Inc. • Provides Services: – Support – Consulting – Custom Development – Training – Licensing
  • 15. OpenNMS Versions (old) • Stable (Production) Versions Have an Even Number: – 1.8 – 1.10 – 1.12 • Unstable (Development) Versions Have an Odd Number: – 1.7 – 1.9 – 1.11
  • 16. OpenNMS 14 • Reflects 10+ years of development • More frequent releases • Best Release to Date: – Numerous bug fixes big and small – Graphical Improvements
  • 17. Maps! We have Maps! (demo)
  • 18. Ops Panel and Wall Board
  • 19. Alarms and Automations • Alarms exist to – Reduce similar events – Perform correlation • Automations consist of – Trigger (optional) – Action – Event (optional) • Automations operate mainly on alarms but can access the whole database • Used for correlation
  • 20. Automations Example: Did a script run? External Script Script Started Script Finished Script Error Port 5817 O p e n N M S
  • 21. Step 1: Create a Tracker Alarm • Trigger: See if a ScriptFinished alarms exists without a tracker alarm • Action: NOP • Event: Create a new event that will generate the tracker alarm <automation name="generateTracker" interval="30000" active="true" trigger-name="selectFinishedScriptsNoTracker" action-name="doNothingAction" action-event="createTrackerAlarm" />
  • 22. selectFinishedScriptsNoTracker <trigger name="selectFinishedScriptsNoTracker" operator="&gt;=" row-count="1" > <statement> SELECT alarmid AS _alarmid, nodeid AS _nodeid, eventuei AS _eventuei, lasteventtime AS _ts, substring(eventparms from '.*name=(w+).*') AS _parmname FROM alarms WHERE eventuei='uei.opennms.org/scripts/scriptFinished' AND substring(reductionkey from 'uei.opennms.org/scripts/scriptFinished:(.*)') NOT IN (SELECT substring(reductionkey from '.*scriptTracker:.*:(.*)') FROM alarms
  • 23. doNothingAction <action name="doNothingAction" > <statement> UPDATE node SET nodeid = -1 WHERE nodeid = -1 </statement> </action>
  • 24. createTrackerAlarm <action-event name="createTrackerAlarm" for-each-result="true" > <assignment type="field" name="uei" value="uei.opennms.org/scripts/scriptTracker" /> <assignment type="field" name="nodeid" value="${_nodeid}" /> <assignment type="parameter" name="name" value="${_parmname}" /> <assignment type="parameter" name="alarmId" value="${_alarmid}" /> <assignment type="parameter" name="alarmEventUei" value="${_eventUei}" /> </action-event>
  • 25. Step 2: Create a Tracker Alarm • Trigger: See if a new ScriptFinished has arrived • Action: Update the last event time for the Tracker • Event: none <automation name="updateTracker" interval="30000" active="true" trigger-name="selectFinishedScripts" action-name="updateTrackerAlarms" />
  • 26. selectFinishedScripts <trigger name="selectFinishedScripts" operator="&gt;=" row- count="1" > <statement> SELECT alarmid AS _alarmid, nodeid AS _nodeid, lasteventtime AS _lasteventtime, substring(eventparms from '.*name=(w+).*') AS _parmname, now() AS _ts FROM alarms WHERE eventuei='uei.opennms.org/scripts/scriptFinished' </statement> </trigger>
  • 27. updateTrackerAlarms <action name="updateTrackerAlarms" > <statement> UPDATE alarms SET firstautomationtime = COALESCE(firstautomationtime, ${_ts}), lastautomationtime = ${_ts}, lasteventtime = ${_lasteventtime} WHERE eventuei = 'uei.opennms.org/scripts/scriptTracker' AND substring(reductionkey from 'uei.opennms.org/scripts/scriptTracker:(.*)') = ${_nodeid}||':'||${_parmname} </statement>
  • 28. Step 3: See if the Tracker Alarm is Updated • Trigger: Select all of the open Tracker alarms and check if they have been updated. • Action: NOP • Event: Create a new event that will generate the “script did not run” alarm <automation name="generateScriptDidNotRun" interval="30000" active="true" trigger-name="selectTrackerAlarms" action-name="doNothingAction" action-event="createScriptDidNotRunAlarm" />
  • 29. selectTrackerAlarms <trigger name="selectTrackerAlarms" operator="&gt;=" row-count="1" > <statement> SELECT alarmid AS _alarmid, nodeid AS _nodeid, eventuei AS _eventuei, lasteventtime AS _lasteventtime, now() as _ts, substring(eventparms from '.*name=(w+).*') AS _parmname FROM alarms WHERE eventuei='uei.opennms.org/scripts/scriptTracker' AND lasteventtime &lt; now() - interval '3 minutes' AND substring(reductionkey from 'uei.opennms.org/scripts/scriptTracker:(.*)') NOT IN (select substring(reductionkey from '.*scriptNotRunning:(.*)') FROM alarms WHERE eventuei='uei.opennms.org/scripts/scriptNotRunning') </statement> </trigger>
  • 30. doNothingAction <action name="doNothingAction" > <statement> UPDATE node SET nodeid = -1 WHERE nodeid = -1 </statement> </action>
  • 31. createScriptDidNotRun <action-event name="createScriptDidNotRunAlarm" for-each-result="true" > <assignment type="field" name="uei" value="uei.opennms.org/scripts/scriptNotRunning" /> <assignment type="field" name="nodeid" value="${_nodeid}" /> <assignment type="parameter" name="name" value="${_parmname}" /> <assignment type="parameter" name="alarmId" value="${_alarmid}" /> <assignment type="parameter" name="alarmEventUei" value="${_eventUei}" /> </action-event>
  • 32. Looking To the Future: IoT • Newts: New Time Series Database • Minion/Dominion: https://github.com/OpenNMS/smnnepo