osmc 2014: opennms 14 | tarus balog
DESCRIPTION
This talk gives an overview about the new features in OpenNMS 14. There is a new topology UI to navigate through your network. For NOCs there is a functionality added to present information on wallboards and a operators panel. There is also some new technology developed for persisting time series data in a Cassandra based time series database called NewTS.TRANSCRIPT
![Page 2: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/2.jpg)
#MonitoringSucks
http://www.adventuresinoss.com
![Page 3: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/3.jpg)
Agenda
•OpenNMS Overview
– History
– Main Feature Areas
– Organization
•OpenNMS 14
– Topology (demo)
– Wall Boards
– Ops Panel
•Automation Demo
•Questions and Answers
![Page 4: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/4.jpg)
OpenNMS is the world's first
enterprise-grade network
management application
platform developed under the
open source model.
![Page 5: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/5.jpg)
“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
![Page 6: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/6.jpg)
“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)
![Page 7: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/7.jpg)
“network management application platform”
The Architecture of OpenNMS has been
designed to allow for easy integration of
other tools, both proprietary and open.
![Page 8: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/8.jpg)
“open source model”
OpenNMS is published under the AGPLv3
and all components are licensed under an
OSI-qualified free software license.
![Page 9: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/9.jpg)
![Page 10: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/10.jpg)
•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
![Page 11: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/11.jpg)
![Page 12: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/12.jpg)
opennms.org
![Page 13: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/13.jpg)
opennms.com
• Home of The OpenNMS Group, Inc.
• Provides Services:
– Support
– Consulting
– Custom Development
– Training
– Licensing
![Page 14: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/14.jpg)
opennms.eu
![Page 15: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/15.jpg)
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
![Page 16: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/16.jpg)
OpenNMS 14
• Reflects 10+ years of development
• More frequent releases
• Best Release to Date:
– Numerous bug fixes big and small
– Graphical Improvements
![Page 17: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/17.jpg)
Maps! We have Maps! (demo)
![Page 18: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/18.jpg)
Ops Panel and Wall Board
![Page 19: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/19.jpg)
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
![Page 20: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/20.jpg)
Automations Example: Did a script run?
External Script
Script Started
Script Finished
Script Error
Port 5817
O
p
e
n
N
M
S
![Page 21: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/21.jpg)
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" />
![Page 22: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/22.jpg)
selectFinishedScriptsNoTracker
<trigger name="selectFinishedScriptsNoTracker" operator=">=" 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 WHERE eventuei='uei.opennms.org/scripts/scriptTracker') </statement> </trigger>
![Page 23: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/23.jpg)
doNothingAction
<action name="doNothingAction" > <statement> UPDATE node SET nodeid = -1 WHERE nodeid = -1 </statement> </action>
![Page 24: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/24.jpg)
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>
![Page 25: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/25.jpg)
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" />
![Page 26: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/26.jpg)
selectFinishedScripts
<trigger name="selectFinishedScripts" operator=">=" 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>
![Page 27: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/27.jpg)
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> </action>
![Page 28: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/28.jpg)
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" />
![Page 29: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/29.jpg)
selectTrackerAlarms
<trigger name="selectTrackerAlarms" operator=">=" 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 < 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>
![Page 30: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/30.jpg)
doNothingAction
<action name="doNothingAction" > <statement> UPDATE node SET nodeid = -1 WHERE nodeid = -1 </statement> </action>
![Page 31: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/31.jpg)
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>
![Page 32: OSMC 2014: OpenNMS 14 | Tarus Balog](https://reader034.vdocuments.us/reader034/viewer/2022042614/559452181a28abe14f8b467c/html5/thumbnails/32.jpg)
Looking To the Future: IoT
• Newts: New Time Series Database
• Minion/Dominion:
https://github.com/OpenNMS/smnnepo