O.S. : Ubuntu12.04 LTS
OpenNMS Version : 1.10.7

OpenNMS base on TMN & FCAPS network management models.

OpenNMS Block Diagram

Discovery & Monitor daemons

  • Eventd
    Event handling daemon
    Configuration files:
    eventconf.xml -> Defines the UEI (Universal Event Identifiers).
    eventd-configuration.xml -> Defines operating parameters for eventd such as timeouts, listener threads and listener port.
    events-archiver-configuation.xml -> Configuration for event archive daemon.
    events.archiver.properties -> Fine tune events archive subsystem.
    etc/events/*.xml -> Vendor UEI define files.
    Listening “eventsConfigChange” event.

  • Discovery (discovery-configuration.xml)
    Discovery service implement the Singleton pattern.
    Listening events:
    discPause, interfaceDeleted, discResume, nodeGainedInterface, discoveryConfigChange and reloadDaemonConfig.

  • Capsd (Capabilities daemon, capsd-configuration.xml)
    Notified by the discovery process when a new node is discovered, the polls for all the capabilities for this node and loading the data collected into the database.
    Listening events:
    deleteService, changeService, deleteInterface, newSuspect, froceRescan, addInterface, nodeDeleted, addNode, updateServer, nodeAdded, duplicateNodeDeleted, deleteNode and updateService.

  • Collectd (collectd-configuration.xml)
    Responsible for gathering and storing data from various sources, including SNMP, JMX, HTTP and NSClient.
    Listening events:
    nodeGainedService, primarySnmpInterfaceChanged, reinitializePrimarySnmpInterface, interfaceReparented, nodeDeleted, duplicateNodeDeleted, interfaceDeleted, serviceDeleted, schedOutagesChanged, configureSNMP, thresholdConfigChange, reloadDaemonConfig and nodeCategoryMembershipChanged.

  • Poller (poller-configuration.xml)
    Polling services, including ICMP, DNS, FTP, HTTP, HTTPS, SSH, MySQL….
    Listening events:
    nodeGaineService, serviceDeleted, interfaceReparented, nodeDeleted, nodeLabelChanged, duplicateNodeDeleted, interfaceDeleted, suspendPollingService, resumePollingService, schedOutagesChanged, demandPollService, thresholdConfigChange, assetInfoChanged and nodeCategoryMembershipChanged.

  • RTC (Real-Time Collector)
    The RTC initializes its data from the database when it comes up then subscribes to the events subsystem to receive events of interest to keep the data up-to-date.
    Listening events:
    nodeGainedService, nodeLostService, interfaceDown, nodeDown, nodeUp, nodeCategoryMembershipChanged, interfaceUp, nodeRegainedService, serviceDeleted, serviceunmanaged, interfaceReparented, subscribe, unsubscribe and assetInfoChanged.

Note:
There are two major ways that OpenNMS gathers data about the network.
The first is through polling. Processes called monitors connect to a network resource and perform a simple test to see if the resource is responding correctly. If not, events are generated.
The second is through data collection using collectors. Currently, the only collector is for SNMP data.
Collectd record SNMP data to RRDTool in /share/rrd/snmp/NodeID/*, Ex: tcpOutSegs.jrb, icmpInEchos.jrb, tcpInSegs.jrb, ifInOctets.jrb, ifoutOctets.jrb…
Poller record Service data to RRDTool in /share/rrd/response/IP/*, Ex: icmp.jrb ssh.jrd…

OpenNMS configuration files:
http://www.opennms.org/wiki/Configuration_File_Index

Discovery & Monitor Flow

Here is the event flow when press “Save and Restart Discovery” button on WebGUI.
Figure1

Figure2

References :
White Paper: Project OpenNMS
The architecture of OpenNMS
論OpenNMS 在 SUSE linux 之應用