The SNMP server event manager works in conjunction with the Event MIB (RFC 2981). The purpose of this application is to allow many management functions (for example, fault detection, configuration management, accounting management, and performance management). These functions are traditionally performed by the network management station. However, by using the SNMP server event manager, you can distribute some of these functions to E-series routers and automate them.
The rapid growth of networks has made it impractical to directly manage networks from a single network management station (NMS). This brought about a need for a model that both automated and distributed event management. The goal was to allow devices to monitor themselves and other devices, and to take action under certain conditions.
The Event MIB (RFC 2981) defines a method for creating trigger conditions, testing those conditions, and determining which action to take when a trigger meets those conditions.
The Event MIB allows you to define test conditions for object integers that are accessible in the agent, making it possible to monitor any aspect of a device without defining specific notifications and complicating the agent definition. In this model, because devices have the ability to monitor themselves or other devices, the processing is distributed throughout the network. Also, sending the information only to the NMS that uses an event model reduces both network overhead and processing drain on the NMS.
The Event MIB has three major parts: the trigger table, the objects table, and the event table. These tables also contain subordinate MIB tables that contain more detailed information about the trigger tests.
The trigger table (mteTriggerTable) lists any currently-defined trigger conditions. Triggers fall into three categories—existence, Boolean, and threshold.
An existence trigger tests for the existence of a MIB object instance; you can specify that the trigger occur by either the appearance, disappearance, or change in value of a MIB instance.
A Boolean trigger tests whether the value of a MIB object (base syntax integer) is equal, unequal, greater than, less than, less than or equal to, or greater than or equal to some defined value.
A threshold trigger verifies a MIB object (base syntax integer) in relation to either a rising threshold value, falling threshold value, or both.
You can configure both Boolean and threshold tests to trigger on an absolute value or a delta value over a determined polling interval.
Subordinate MIB tables exist within the trigger section of each type of trigger test. In other words, each type of trigger (existence, threshold, and Boolean) contains a table that stores added information about that type of trigger test.
For example, a trigger entry of a specific type of test in the mteTriggerTable creates a linked entry in the appropriate subtable. In turn, this subtable contains more specific information about the specific test.
A delta table also exists within the trigger tables. This table stores information about any delta values based on any Boolean and threshold triggers. The delta table stores a MIB object that indicates whether any discontinuities occurred for any delta trigger (for example, a router reset).
![]() |
Note: When determining discontinuity, the MIB object must be a time-based counter or number. When a polling interval expires and the event agent (router) needs to perform a delta calculation, it first checks the discontinuity MIB object for that trigger. If a discontinuity occurs, the agent does not perform the test for that trigger until the next polling interval. |
The objects table (mteObjectsTable) defines objects that you want to add to event messages. In other words, you can create a list of user-specified objects and bind them to a trigger event. This can provide a snapshot of other values on a router when the trigger occurs. You can bind objects to a specific trigger, a type of test (for example, existence or Boolean tests), or a type of event (for example, rising or falling events).
![]() |
Note: This release does not support the objects table. |
The event table (mteEventTable) defines what action you want the device to take when a trigger occurs. This action can be in the form of a notification, setting a specified MIB object, or both. The results of these actions are controlled within two subordinate MIB tables—notification and set.
Notifications (mteNotifications), or traps, define what the router sends when an event occurs. These traps include the following:
Sets define certain modifications to other MIB objects based on a particular event.
To configure the SNMP server event manager:
- host1(config)#snmp-server management-event
- host1(config-mgmtevent)#
![]() |
Note: You must create a management event instance for each virtual router. |
- host1(config-mgmtevent)#resource 275
- host1(config-mgmtevent)#event sysadmin failuretrigger
- host1(config-mgmtevent-event)#exit
- host1(config-mgmtevent)#event sysadmin fallingtrigger
- host1(config-mgmtevent-event)#exit
- host1(config-mgmtevent)#event sysadmin risingtrigger
- host1(config-mgmtevent-event)#exit
![]() |
Note: You must create a separate event for each trap notification that you want to use. However, you can specify the trap notification and enable the trap before exiting the event context. |
- host1(config-mgmtevent)#event sysadmin failuretrigger
- host1(config-mgmtevent-event)#notification
id mteTriggerFailure
- host1(config-mgmtevent-event)#exit
- host1(config-mgmtevent)#event sysadmin fallingtrigger
- host1(config-mgmtevent-event)#notification
id mteTriggerFalling
- host1(config-mgmtevent-event)#exit
- host1(config-mgmtevent)#event sysadmin risingtrigger
- host1(config-mgmtevent-event)#notification
id mteTriggerRising
- host1(config-mgmtevent-event)#exit
![]() |
Note: The mteTriggerFailure notification is a global value. Once you create a failure event notification, it is automatically bound to every trigger with the same owner. If a failure occurs, and the trigger owner and the event owner are the same, the router sends the trap. |
- host1(config-mgmtevent)#event sysadmin failuretrigger
- host1(config-mgmtevent-event)#enable
- host1(config-mgmtevent-event)#exit
- host1(config-mgmtevent)#event sysadmin fallingtrigger
- host1(config-mgmtevent-event)#enable
- host1(config-mgmtevent-event)#exit
- host1(config-mgmtevent)#event sysadmin risingtrigger
- host1(config-mgmtevent-event)#enable
- host1(config-mgmtevent-event)#exit
- host1(config-mgmtevent)#
![]() |
Note: Once enabled, you cannot edit an event or trigger configuration. To change an enabled event or trigger, you must delete it and re-create it. |
- host1(config-mgmtevent)#trigger george trigger1
- host1(config-mgmtevent-trigger)#
- host1(config-mgmtevent-trigger)#sample value-id
1.3.6.1.2.1.60.1.2.1.1.7
- host1(config-mgmtevent-trigger)#frequency
100
![]() |
Note: Unless you specify that you want to perform delta sampling, the values are absolute. |
- host1(config-mgmtevent-trigger)#delta-sampling
- host1(config-mgmtevent-trigger)#delta-sampling
discontinuity-id 1.3.6.1.2.1.31.1.1.1.19.9
- host1(config-mgmtevent-trigger)#delta-sampling
discontinuity-id-type timeStamp
- host1(config)#snmp security read
You can define a Boolean test, existence test, or threshold test. See the following sections for procedures.
You can configure a Boolean trigger to test whether the value of an integer object is equal, unequal, greater than, less than, less than or equal to, or greater than or equal to some defined value.
To define a Boolean test:
- host1(config-mgmtevent-trigger)#boolean-test
comparison greater
- host1(config-mgmtevent-trigger)#boolean-test
startup
![]() |
Note: You do not need to bind a failure event to a trigger. If you create a failure event and a failure occurs, the router sends the trap if the event owner is the same as the trigger owner. |
- host1(config-mgmtevent-trigger)#boolean-test
event george trigger1
When specifying an event, use the exact owner name and event name.Specify the Boolean value to which the test compares.
- host1(config-mgmtevent-trigger)#boolean-test
value 5175438
- host1(config-mgmtevent-trigger)#agent context-name
router1
You can obtain the agent context name for a virtual router from the show snmp agent command. The agent context name is independent of the virtual router name.Enable the trigger.
- host1(config-mgmtevent-trigger)#enable
Once enabled, you cannot edit an event or trigger configuration. To change an enabled event or trigger, you must delete it and re-create it.
An existence test looks for the existence of a MIB object. The appearance, disappearance, or a change in value of the object can trigger the existence test.
To define an existence test:
- host1(config-mgmtevent-trigger)#existence-test
test-type changed
- host1(config-mgmtevent-trigger)#existence-test
startup absent
![]() |
Note: You do not need to bind a failure event to a trigger. If you create a failure event, if a failure occurs, and if the trigger owner and the event owner are the same, the router sends the trap. |
- host1(config-mgmtevent-trigger)#boolean-test
event george trigger1
When specifying an event, make sure to use the exact owner name and event name.
- host1(config-mgmtevent-trigger)#agent context-name
router1
You can obtain the agent context name for a virtual router from the show snmp agent command. The agent context name is independent of the virtual router name.
- host1(config-mgmtevent-trigger)#enable
Once enabled, you cannot edit an event or trigger configuration. To change an enabled event or trigger, you must delete it and re-create it.
To define a threshold test:
![]() |
Note: The rising value must always be larger than the falling value. Entering a lower rising value than a falling value will provide invalid results or errors. |
- host1(config-mgmtevent-trigger)#threshold-test
startup rising
![]() |
Note: You do not need to bind a failure event to a trigger. If you create a failure event, if a failure occurs, and if the trigger owner and the event owner are the same, the router sends the trap. |
- host1(config-mgmtevent-trigger)#threshold-test
event falling sysadmin fallingtrigger
- host1(config-mgmtevent-trigger)#threshold-test
event rising sysadmin risingtrigger
When specifying an event, make sure to use the exact owner name and event name.
- host1(config-mgmtevent-trigger)#agent context-name
router1
You can obtain the agent context name for a virtual router from the show snmp agent command. The agent context name is independent of the virtual router name.
- host1(config-mgmtevent-trigger)#enable
Once enabled, you cannot edit an event or trigger configuration. To change an enabled event or trigger, you must delete it and re-create it.
agent context-name
![]() |
Note: Use caution when assigning wildcards. Wildcards can rapidly use up trigger resources. |
- host1(config-mgmtevent-trigger)#agent context-name
router1 wildcard
- host1(config-mgmtevent-trigger)#agent context-name
router1 wildcard limit 15
![]() |
Note: SNMP server security defaults to “ no access.” When using a separate virtual router, you must use the snmp-server security command and provide “ read” or “ read-write” access to other virtual routers. |
boolean-test
- host1(config-mgmtevent-trigger)#boolean-test
comparison less
- host1(config-mgmtevent-trigger)#boolean-test
value 5175438
- host1(config-mgmtevent-trigger)#boolean-test
event sysadmin booleanTrigger
- host1(config-mgmtevent-trigger)#boolean-test
startup
delta-sampling
- host1(config-mgmtevent-trigger)#delta-sampling
enable
- host1(config-mgmtevent-event)#enable
- host1(config-mgmtevent-trigger)#enable
event
- host1(config-mgmtevent)#event sysadmin failuretrigger
- host1(config-mgmtevent-event)#
existence-test
- host1(config-mgmtevent-trigger)#existence-test
event sysadmin existenceTrigger
- host1(config-mgmtevent-trigger)#existence-test
startup present
- host1(config-mgmtevent-trigger)#existence-test
test-type absent
frequency
- host1(config-mgmtevent)#frequency 100
notification id
- host1(config-mgmtevent-event)#notification
id mteTriggerFailure
resource
![]() |
Caution: When assigning wildcards, make sure to allow for enough trigger resources. |
- host1(config-mgmtevent-event)#resource 250
sample
- host1(config-mgmtevent)#sample value-id 1.3.6.1.2.1.60.1.2.1.1.7
set
- host1(config-mgmtevent-event)#set context-name
router1
- host1(config-mgmtevent-event)#set id 1.3.6.1.2.1.2.2.1.7.123
- host1(config-mgmtevent-event)#set value 2
snmp-server management-event
- host1(config)#snmp-server management-event
- host1(config-mgmtevent)#
snmp-server security
- host1(config)#snmp-server security read
threshold-test
- host1(config-mgmtevent-trigger)#threshold-test
absolute-value rising 2000 falling 1900
- host1(config-mgmtevent-trigger)#threshold-test
startup rising
- host1(config-mgmtevent-trigger)#threshold-test
event sysadmin failureTrigger
trigger
- host1(config-mgmtevent)#trigger fred trigger1
- host1(config-mgmtevent-trigger)#
To view the status of the SNMP agent, use the following show snmp agent command. To view statistics associated with events, resources, and triggers, use the show snmp management-event command.
show snmp agent
host1#show snmp agent context name: router1 access permission level: no access snmp proxy: enabled
show snmp management-event
host1#show snmp management-event
Resource
---------------------------------------------------------------------------
SampleMinimum: 1
SampleInstanceMaximum: 50
SampleInstances: 14
SampleInstancesHigh: 14
SampleInstancesLacks: 0
Triggers
---------------------------------------------------------------------------
Owner: unitTest
Name: booleantest1
Test: boolean
SampleType: absoluteValue
ValueID: 1.3.6.1.2.1.92.1.1.2.0
ValueIDLimit: 0
ValueIDWildcard: False
ContextName: router1
ContextNameLimit: 0
ContextNameWildcard: False
Frequency: 40
ObjectsOwner: unitTest
Objects: test3
Enabled: False
EntryStatus: createAndWait
------------------------ Boolean
Comparison: equal
Value: 300
Startup: False
ObjectsOwner:
Objects:
EventOwner: unitTest
Event: eventTest1
--------------------------------- Trigger
Owner: unitTest
Name: booleantest2
Test: boolean
SampleType: absoluteValue
ValueID: 1.3.6.1.2.1.92.1.1.2.0
ValueIDLimit: 0
ValueIDWildcard: False
ContextName: router1
ContextNameLimit: 0
ContextNameWildcard: False
Frequency: 40
ObjectsOwner: unitTest
Objects: test3
Enabled: False
EntryStatus: createAndWait
------------------------ Existence
Test: absent
Startup: absent
ObjectsOwner: unitTest
Objects: test3
EventOwner: unitTest
Event: eventTest3
------------------------ Threshold
Startup: falling
Rising: 200
Falling: 100
DeltaRising: 0
DeltaFalling: 0
ObjectsOwner:
Objects:
RisingEventOwner: unitTest
RisingEvent: eventTest2
FallingEventOwner: unitTest
FallingEvent: eventTest3
DeltaRisingEventOwner:
DeltaRisingEvent:
DeltaFallingEventOwner:
DeltaFallingEvent:
------------------------ Delta
DiscontinuityID: 1.3.6.1.2.1.92.1.1.2
DiscontinuityIDWildcard: True
DiscontinuityIDType: timeTicks
Objects --------------------------------------------------------------------------- Owner: unitTest Name: test1 Index: 1 ID: 1.3.6.1.2.1.11.1.0 IDWildcard: False EntryStatus: active Index: 2 ID: 1.3.6.1.2.1.11.2.0 IDWildcard: False EntryStatus: active Index: 5 ID: 1.3.6.1.2.1.11.30.0 IDWildcard: False EntryStatus: active
Events --------------------------------------------------------------------------- Owner: unitTest Name: eventTest1 Actions: notification set Enabled: True EntryStatus: active ------------------------ Notification Notification: mteTriggerFired ObjectsOwner: unitTest Objects: test3 ------------------------ Set Object: 1.3.6.1.2.1.11.1.0 ObjectWildcard: False Value: -20 ContextName: router ContextNameWildcard: True