The Event Engine is the backend process used by NAV to process the event queue. Whenever a NAV subsystem posts an event to the queue, the Event Engine will pick it up and decide what do to with it.
Typically, the Event Engine will generate an alert from the event, or it may ignore the event entirely, depending on the circumstances. In some cases, it will delay the alert for a grace period, while waiting for another corresponding event to resolve the pending problem.
Most of the work of the Event Engine is done by event handler
plugins from the
nav.eventengine.plugins namespace. Each event picked
from the queue will be offered to each of the plugins, until one of them
decides to handle the event. If no plugins wanted to handle the event, the
Event Engine will perform a very simple default routine to translate
the event directly into an alert (possibly using alert hints given in the event
The operation of the Event Engine can be customized using
configuration options in
eventengine.conf. Most of the configuration
concerns itself with configuring the grace periods (timeouts) for various types
of alerts. The default configuration looks somewhat like this:
# NAV eventengine configuration [export] # If set, the script option will point to a program that will receive a # continuous stream of JSON serialized alert objects on its STDIN. ;script = /path/to/event/receiver/script [timeouts] # # This section configures timeout values for alert quarantines. A quarantine # is when one or multiple alerts are held back for a period of time, while # waiting for the problem to resolve itself. It is a protection against a # torrent of alerts for things that are rapidly flapping. # # All options are commented out with default values. Uncomment to change the # defaults. Valid units are s=seconds, m=minutes, h=hours, d=days. # # When a boxDown event is received, how long to wait for resolve before # sending out a boxDownwarning. ;boxDown.warning = 1m # When a boxDown event is received, how long to wait for resolve before # finally declaring the IP device as down. ;boxDown.alert = 4m # When a moduleDown event is received, how long to wait for resolve before # sending out a moduleDownWarning. ;moduleDown.warning = 1m # When a moduleDown event is received, how long to wait for resolve before # finally declaring the module as down. ;moduleDown.alert = 4m # When a linkDown event is received, how long to wait for resolve before # finally declaring the link as down. ;linkDown.alert = 4m # When an snmpAgentDown event is received, how long to wait for resolve before # finally declaring the SNMP agent as down. ;snmpAgentDown.alert = 4m # When a bgpDown event is received, how long to wait for resolve before # finally declaring the BGP session to be down. ;bgpDown.alert = 1m [linkdown] # This section contains options to control which link down events to # send alerts about. Also see settings in ipdevpoll.conf about which links to # generate events for in the first place. # When enabled, only link loss on redundant links cause alerts to be sent. # The rationale is that on a non-redundant link, you will get boxDown alerts # for the devices behind that link, which are now unreachable. ;only_redundant = yes # If a linkDown event is posted for a switch port that doesn't carry any of # these vlans (tagged or untagged), no alert is sent. This is a # space-separated list of VLAN tag numbers. An empty value means no filtering # based on VLAN. ;limit_to_vlans =