|
Registering to Receive Notification
Notifications can be defined as unsolicited messages or asynchronous notifications or event reports, which indicate some predefined condition or event that has occurred and is of interest to the Manager. NMS JMX Agent supports a feature for sending Notifications to the High Level Manager. The NMS JMX Agent receives information by registering itself as a Topo Observer and FaultObserver to the Web NMS. The registration parameters are TopoObserver and FaultObserver in the WebNMSAgentApp process of the NmsProcessesBE.conf file. They can be set to true or false. The default value is true.
NMS JMX Agent sends autonomous notifications when any of the following conditions occur in an NE:
Whenever a Managed Object is discovered/added.
Whenever a Managed Object is deleted.
Whenever a Managed Object's property is changed.
Whenever a Managed Object's severity is raised to 'Warning'.
Whenever a Managed Object's severity is raised to 'Minor'.
Whenever a Managed Object's severity is raised to 'Major'.
Whenever a Managed Object's severity is raised to 'Critical'.
Whenever a threshold event is generated.
In the SNMP terminology, unsolicited messages/notifications are referred to as 'Traps'. When the NMS JMX Agent detects that a predetermined event has occurred, traps are generated by the agent (SNMP) and sent to one or more Trap destinations (i.e. the Managers). At each trap destination, a process called Trap listener resides and receives all the trap messages sent by the agent and reports them in a trap log. The Managers can determine the type of event that caused the agent to generate the trap, by examining the data stored in the variable bindings (varbinds) of each trap message. The varbinds contain the identity and values of the MIB variables that provide information on the specific event. Traps can be sent to specific managers. This can be done with the help of the Trap Forwarding Table which contains all the information regarding the trap destination (i.e. the Managers).
A TL1 Autonomous message is the one that is sent from the Agent to the appropriate Manager without having an explicit input message associated with it. These are unsolicited messages from the agent to report both alarmed and non-alarmed events to the manager.
The notification can either be persistent or non-persistent. By default, the notifications (both the SNMP Traps and the TL1 Autonomous Messages), are persistent in nature, in NMS JMX Agent. You need to set the parameter "persist" specified in the WebNMSAgentApp process of the NMSProcessesBE.conf file to true or false. By default the value is false.
The SNMP Traps and the TL1 Autonomous messages received by the Managers are stored in the database and can be retrieved at a later point in time. The Notification log table and the Varbind log table keep a tab on the Notifications sent and on the Varbind contents respectively. This feature ensures the Persistence of Notifications. Retrieving of lost notifications is possible through this feature.
All the notifications sent to the Managers are stored in the database. If the Manager did not receive the notifications due to some unforeseen reasons, then the notifications can be retrieved from the database. The database can be accessed using two log tables, the Notification log table and the Varbind log table.
The Notification log table (notiLog table) contains the following details:
| Table Attribute |
Description |
|---|---|
|
notiLogIndex |
index number |
|
notiLogTime |
the time of origin of the notification |
|
notiLogNumVarBinds |
the number of Varbinds contained in the Notification |
|
notiLogOid |
the OID for which the notification has been generated |
Through the notiLogIndex, selective recovery of the Notifications is possible. This table will give a nutshell of all the Notifications.
The details of the notifications are available in the Varbind log table. The entries of this table are referred by the notiLogIndex. The varbind table contains the following details:
| Table Attribute |
Description |
|---|---|
|
notiLogIndex |
index number |
|
varbindIndex |
index number of the Varbind |
|
varbindType |
the type of the Varbind |
|
varbindValue |
the value of the Varbind |
You can also specify the number of notifications to be stored in the database by setting the value of the maxRows attribute in the PersistenceTrapMib. For example, if you specify maxRows as 10, then only the last ten notifications will be stored in the database.
Registering Managers to Receive Notifications During Build-time
During Build-time, the Managers can be configured to receive notifications by configuring the V1V2TrapForwardingTable.xml or V3TrapForwardingTable.xml file found in <Web NMS Home>/conf/jmx_agent/conf directory. Please make sure that the below mentioned changes are done before the Web NMS Server is started.
To Receive Traps from SNMP v2c Agent
Open the V1V2TrapForwardingTable.xml file. Add or edit the entries as required, according to the following format:
<row>
<column name="managerHost" value="127.0.0.1" />
<column name="managerPort" value="8003" />
<column name="version" value="2" />
<column name="community" value="public" />
<column name="timeOut" value="3200" />
<column name="retries" value="0" />
<column name="rowStatus" value="1" />
</row>
where
managerHost - Specifies the host name in which the Manager is running.
managerPort - Specifies the port to which the Manager has to listen to receive notifications.
version - Specifies the version of the trap
community - Specifies the community to which the trap belongs
timeout - Specifies the timeout value
retries - Specifies the number of retries allowed
rowStatus - the state of the service is mentioned in this attribute. The various states are 1 - active, 2 - notInService, 3 - notReady, 4 - createAndGo, 5 - createAndWait, 6 - destroy.
Save the file V1V2TrapForwardingTable.xml
Start the Web NMS Server
To Receive Traps from SNMP v3 Agent
Open the V3TrapForwardingTable.xml file (This file will be present only if the SNMP Agent version is V3). Add or edit the entries are required, according the following format:
<row>
<column name="v3ManagerHost" value="127.0.0.1" />
<column name="v3ManagerPort" value="8003" />
<column name="v3ManagerVersion" value="3" />
<column name="v3ManagerCommunity" value="public" />
<column name="v3ManagerUserName" value="noAuthUser" />
<column name="v3ManagerUserSecModel" value="3" />
<column name="v3SecurityLevel" value="0" />
<column name="v3ManagerUserContextName" value="noAuth" />
<column name="v3ManagerTimeOut" value="5000" />
<column name="v3ManagerRetries" value="0" />
<column name="v3RowStatus" value="1" />
</row>
where
v3managerHost - Specifies the host name in which the Manager is running
v3managerPort - Specifies the port to which the Manager has to listen to receive the notifications
v3ManagerVersion - Specifies the version of the trap.
v3ManagerCommunity - Specifies the community of the trap.
v3ManagerUserName - Specifies the user name which is configured for v3 agent.
v3ManagerUserSecModel - Specifies the user security model of the v3 agent.
v3SecurityLevel - Specifies the security level used in the v3 protocol.
v3ManagerUserContextName - Specifies the context name of the user.
v3ManagerTimeOut - Specifies the timeout value.
v3ManagerRetries - Specifies the number of retries allowed.
v3RowStatus - Specifies the state of the service is mentioned in this attribute and the various states are listed below:
1 - active, 2 - notInSevice, 3 - notReady, 4 - createAndGo, 5 - createAndWait and 6 - destroy
Save the file V3TrapForwardingTable.xml
Start the Web NMS Server
Registering Managers to Receive Notifications During Run-time
The Notifications are sent to the Managers who have been registered with NMS JMX Agent. With the help of the MIB Browser open the AdventNet-WebNMS-MIB and enter the details of the Manager for registering the Manager to receive Notifications. Only after getting registered with the Agent, the Managers will be able to receive the Notifications. Separate tables are provided for SNMP and SNMPv3 to enable the Managers to register to receive notifications. The details are explained in the section given below.
Forwarding of Notification (Trap Forwarding)
The notification are sent to the managers who have been registered with WebNMS. The details as to whom the notifications must be sent can be configured by following the steps given below:
Open the MIB Browser
Load the AdventNet-WebNMS-MIB
Modify the details in the Forwarding table, i.e., the details of the Managers which are to receive the notifications.
The details of the Forwarding Table are as given below:
| Table Attribute |
Description |
|---|---|
|
v1v2ManagerHost |
Specifies the host name in which the Manager is running |
|
v1v2ManagerPort |
Specifies the port to which the Manager is listening to receive the notifications |
|
v1v2ManagerVersion |
Specifies the version of the trap |
|
v1v2ManagerCommunity |
Specifies the community used by the agent to send trap or inform to this manage |
|
v1v2ManagerTimeout |
Specifies the time out value in seconds for SNMPv2c INFORM |
|
v1v2ManagerRetries |
Specifies the number of retries in the case of SNMPV2c INFORM. |
|
v1v2ManagersStatus |
Specifies the status of this conceptual row. Until instances of all corresponding columns are appropriately configured, the value of the corresponding instance of the usmUserStatus column is 'notReady'" |
If some Managers need not receive the Notification temporarily then the row status attribute of the ForwardingTable need to be set with the value (2), indicating notInservice. A particular Manager can also be permanently be unregistered from receiving Notifications by deleting the row corresponding to that Manager in the table. Thus the row can be selected and deleted permanently.
For the SNMPv3, the following details need to be filled in the v3ForwardingTable:
| Table Attribute |
Description |
|---|---|
|
v3managerHost |
Specifies the host name in which the Manager is running |
|
v3managerPort |
Specifies the port to which the Manager should listen to receive the notifications |
|
v3ManagerVersion |
Specifies the version of the trap |
|
v3ManagerCommunity |
Specifies the community string used by the agent when sending SNMP v1/v2c TRAPS or INFORMS to the Manager. It used to support backward compatability,i.e. without any change in the table,user can send both SNMPv1 and v2c TRAPS and INFORMS |
|
v3ManagerUserName |
Specifies the user name which is configured for v3 agent. |
|
v3ManagerUserSecModel |
Specifies the user security model of the v3 agent |
|
v3ManagerUserSecLevel |
Specifies |
|
v3ManagerUserContextName |
Specifies the context name of the user |
|
v3ManagerTimeout |
Specifies the time out value in seconds for INFORM request |
|
v3ManagerRetries |
Specifies the number of retries for a failed INFORM reqeust |
|
v3ManagerStatus |
Specifies the status of this conceptual row.Until instances of all corresponding columns are appropriately configured, the value of the corresponding instance of the usmUserStatus column is 'notReady'" |
Filtering the Managers for Specific Traps
The TrapForwarding Table contains the list of all the Managers to which the traps are to be sent. The Managers to which the traps have to be forwarded can be filtered. Thus the NMS JMX Agent would send traps only to the specific Managers. This is done by writing a user class implementing the interface SnmpManagerFilter and overriding the method getManagerList(). This method passes the SnmpTrapHolder as the argument. The SnmpTrapHolder includes the trap message generated by the Web NMS JMX Agent and the manager list configured in the Trap Forwarding Table. This method returns a vector, containing the filtered managers.
A sample code snippet of a user class implementing the SnmpManagerFilter interface is given below:
|
... public class MyFilter implements SnmpManagerFilter { public Vector getManagerList(SnmpTrapHolder holder) { System.out.println(" TrapOID = " + holder.getTrapOID()); System.out.println(" Trap Properties are:"); holder.getTrapProperties().list(System.out); System.out.println(" TimeTicks = " + holder.getTimeticks()); System.out.println(" Community = " + holder.getCommunity()); Vector managers = holder.getManagers(); for(int i = 0; i < managers.size(); i++) { ManagerInfo manager = (ManagerInfo)managers.elementAt(i); System.out.println(" Manager" + (i+1) + " Host = " + manager.getHost() + " Port = " + manager.getPort()); } return managers; } } |
Invoking the User Class
To invoke the user class implementing the SnmpManagerFilter interface, specify the entry of the user class in nmsInterfaces.conf file in <Web NMS Home>/conf directory.
Example Entry in nmsInterfaces.conf
<NMS_INTERFACES_CONF>
<INTERFACES
...
...
snmpManagerFilter="FilterClassName"/>
</NMS_INTERFACES_CONF>
By default NMS JMX Agent sends the SNMP traps to all the configured managers in the Trap Forwarding Table. When the method getManagerList() is overridden, the NMS JMX Agent invokes the user class implementing the SnmpManagerFilter interface (read from the nmsInterfaces.conf file) before sending each trap. This user class would return the filtered list of managers, and thus traps would be sent only to the specific managers.
Notifications are sent for each type of Management Information like Topology Notification and Fault Notifications.
|