SevOne NMS Documentation
All SevOne NMS user documentation is available online from the SevOne Support website.
Enter email address and password.
Click Login.
Click the Solutions icon.
© Copyright 2015, SevOne Inc. All rights reserved. SevOne, SevOne PAS, SevOne DNC, Deep Flow Inspection, and Rethink Performance are either registered trademarks or trademarks of SevOne Inc. Other brands, product, service and company names mentioned herein are for identification purposes only and may be trademarks of their respective owners.
This document describes the best practices for SevOne NMS users to implement and manage the polling of Simple Network Management Protocol (SNMP) data from your network.
SNMP is a standard that provides a means for devices to report statistics. SNMP is a key technology to manage networks of any size. Virtually all operating systems such as Cisco routers, Linux servers, etc. support SNMP. Devices that support SNMP run an SNMP agent that is built into the operating system to store information about the device. SevOne NMS polls performance metrics from any SNMP agent compatible with SNMP versions 1, 2c, and 3.
In SevOne NMS, plugins are mechanisms that poll (collect, ask for, etc.) data from technologies. Plugins define a way to get data, usually via some protocol such as SNMP, ICMP, WMI, etc. Many plugins are automatically enabled when you add a device to SevOne NMS so you can poll applicable objects with minimal configuration. SNMP requires device specific input.
Objects are discrete components of a device or a software component that have one or more performance indicators on which SevOne NMS can monitor, trend, and alert. SevOne NMS considers an element to be any performance object. Indicators are grouped by indicator types which in turn are grouped by object types. For SNMP, there are additional level of grouping by object subtype and device type.
Object Types - Define logical things to ask for information about.
Indicator Types - Define kinds of metrics that object types can have.
The SNMP plugin enables the collection of basic performance metrics and QoS data. SNMP metadata is vital for the proper operation of flow technology monitoring and other plugins such as IP SLA, NBAR, Process, and Proxy Ping.
SevOne NMS provides a starter set of Management Information Bases (MIBs), object types, and indicator types that enable you to gather poll data and to generate reports right out of the box. New technology and the multitude of device manufacturers prevent any MIB database from being comprehensive. MIBs you add to SevOne NMS via the MIB Manager are not necessarily certified. Uncertified MIBs in SevOne NMS can be used for trap event definitions and for SNMP walks that can resolve OIDs to indicator names. Device certification is the translation of SNMP MIBs and OIDs to SevOne NMS object types and indicator types. You can certify MIBs for new devices to enable polling and monitoring of SNMP data from the Object Identifiers (OIDs) in the MIB. The Manage Object Types and Indicator Types chapter in this document provides some certification information. The SevOne NMS Device Certification Guide describes how to certify new MIBs so you can monitor SNMP and other poll data from a device who's MIBs are not yet in SevOne NMS.
Devices for which you enable the SNMP plugin can display metrics for the following common SNMP indicators on the Device Summary.
CPU Total - Displays the following CPU total data, when available.
Name
Idle CPU Time
Kernel CPU Time
Nice CPU Time
System CPU Time
User CPU Time
Waiting CPU Time
CPU - Displays the following information for each CPU, when available.
Name
CPU Load
Memory - Displays the following memory information, when available.
Name
Description
Available Real Memory
Available Swap Memory
Total Free Memory
Total Used Memory
Disks - Displays the following disk information, when available.
Name
Description
Available Disk Space
Used Disk Space
Storage Used
Used Storage Indicators
Hard Drive Storage Used
Interfaces - Displays the following information for each interface on the device.
Interface Name
Utilization (In Out)
This chapter describes how to enable devices to send SNMP data to SevOne NMS. This workflow is outside of the SevOne NMS application and may not present all of the steps your network requires to enable devices to send SNMP data. If these instructions are not applicable for your network please reference the device manufacturer's documentation.
You must enable the device to allow SevOne NMS to use the following version specific SNMP commands during device discovery.
SNMP Version 1
snmpget operation: SNMP_MSG_GET
snmpset operation: SNMP_MSG_SET
snmpwalk operation: SNMP_MSG_GETNEXT
SNMP Version 2
snmpget operation: SNMP_MSG_GET
snmpset operation: SNMP_MSG_SET
snmpwalk operation: SNMP_MSG_GETBULK
non repeaters: 0
max repetitions: 20
SNMP Version 3
snmpget operation: SNMP_MSG_GET
snmpset operation: SNMP_MSG_SET
snmpwalk operation: SNMP_MSG_GETBULK
non repeaters: 0
max repetitions: 20
SNMP Timeouts
Timeout: 3 seconds
Retries: 2
For a Cisco router, enter this command to enable SNMP.
router(config)# snmp-server community <YourReadCommunityStringHere> ro
router(config)# snmp-server community <YourWriteCommunityStringHere> rw
router(config)# snmp-server location <Your location here>
router(config)# snmp-server contact <yourAdmin@yourServer.com>
Enter this command to verify the operation.
router(config)# show snmp
The Cluster Manager enables you to define the SNMP settings for new devices to use by default. This speeds up the addition of new devices.
Perform the following steps to define cluster wide SNMP settings. You can override each of these settings for individual devices from the Edit Device page.
From the navigation bar, click the Administration menu and select Cluster Manager. The default display is at the cluster level.
At the cluster level, select the Cluster Settings tab.
Select the SNMP subtab.
Select the Strictly Support RFC 2233 check box to have interfaces under 20Mbps not support 64-bit counters when 32-bit counters are available and to have interfaces over 20Mbps not support 32-bit counters when 64-bit counters are available. Certain combinations of Strictly Support RFC 2233 and Prefer 64-bit can result in data loss.
Select the SNMP Version Lock check box to use the version of SNMP you select. This prevents SevOne NMS from trying to determine the proper version if the version you select fails.
Select the Discover Max PDU for Devices to attempt to discover the maximum data packet size that devices allow. SNMP PDU (Protocol Data Unit) data types are complex data types that are specific to SNMP. The PDU field contains the body of an SNMP message. There are two PDU data types, GetRequest and SetRequest, which hold all the necessary data to get and set parameters.
Click the Counter Preference drop-down. This setting controls how SNMP discovery determines what counter type (32-bit or 64-bit) to choose. If you select the Strictly Support RFC 2233 check box, this setting does not apply to in and out utilization for interfaces. Certain combinations of Strictly Support RFC 2233 and Prefer 64-bit can result in data loss.
Select Allow Both to use both 64-bit and 32-bit counters for an object.
Select Prefer 64-bit to have interfaces under 20Mbps not support 64-bit counters when 32-bit counters are available and to have interfaces over 20Mbps not support 32-bit counters when 64-bit counters are available.
Select Prefer 32-bit to use 32-bit counters.
In the Synchronize Objects section:
Select the Administrative State check box to hide and not poll objects that are administratively down. Leave clear to poll administratively down objects normally. The Object Manager enables you to override this setting on a per object basis.
Select the Operationally Down check box to hide and not poll objects that are operationally down. Leave clear to poll operationally down objects normally. The Object Manager enables you to override this setting on a per object basis.
Click + next to Default Community Strings to display the SNMP community strings. The field on the left displays the list of read community strings SevOne NMS uses to authenticate onto devices. The field on the right displays the write community strings SevOne NMS uses to authenticate onto devices. When SevOne NMS discovers a device and attempts to poll SNMP data, the first string in the list is tested. If that string fails, the subsequent strings are tested, in sequence, until a string is successful. The successful read community string appears on the Edit Device page for the device.
In the Read Community Strings field and the Write Community Strings field, click Add to display a pop-up that enables you to enter a string.
Repeat the previous step to add additional strings.
Click the arrows to move the string up or down in the list. The discovery process goes through the list sequentially.
Click Save.
The SNMP plugin is automatically enabled when you add a new device to SevOne NMS to discover and monitor SNMP indicators for the object types you do not disable from the Object Types page. The Device Manager provides access to the Edit Device page where you can disable/enable and configure the SNMP plugin for each device.
Perform the following steps to enable the SNMP plugin for each device from which to discover SNMP objects and to poll SNMP metrics.
From the navigation bar, click Devices and select Device Manager to display the Device Manager.
Click next to a device to display the Edit Device page.
In the plugin section (displays SNMP by default), click the drop-down and select SNMP, if needed.
Select the SNMP Capable check box to enable discovery of the SNMP object types and to poll SNMP data on the device.
Click the Version drop-down and select an SNMP version. If you select a version that is not compatible with the device, SevOne NMS tries a lower SNMP version (unless you select the Lock Version check box).
Select the Lock Version check box to use the SNMP version you select in the previous step. This prevents SevOne NMS from trying to determine the proper version if the version you select fails.
In the SNMP Port field, enter the port number on the device for SevOne NMS to poll SNMP data (default - 161).
If you select Version 1 or Version 2, perform the following steps.
In the Read Community String field, enter the read community string SevOne NMS needs if the string is different from what you enter on the Cluster Manager. Leave blank to use the Cluster Manager entry.
In the Write Community String field, enter the write community string SevOne NMS needs if the string is different from what you enter on the Cluster Manager. Leave blank to use the Cluster Manager entry. This is required if you use the Proxy Ping plugin or the IP SLA plugin where SevOne NMS sends SNMP SET commands to the device.
If you select Version 3, perform the following steps.
In the Username field, enter the user name SevOne NMS needs to authenticate onto the device.
In the Password field, enter the password SevOne NMS needs to authenticate onto the device.
Click the Authentication Type drop-down.
Select None (usmNoAuthProtocol) to not use an authentication method to send or receive messages.
Select MD5 (usmHMACMD5AuthProtocol) to use MD5 authentication protocol for messages.
Select SHA (usmHMACSHAAuthProtocol) to use SHA authentication protocol for messages.
If you select MD5 or SHA in the previous step, click the Encryption Type drop-down.
Select None to not use encryption to send or receive messages.
Select AES to use the Advanced Encryption Standard encryption method.
Select DES to use the Data Encryption Standard encryption method.
If you select AES or DES in the previous step, in the Encryption Key field, enter the localized key the authentication protocol on the device requires to authenticate messages.
In the Test OID field, enter the OID to use to verify the SNMP settings (default = .1.3.6.1.2.1.1.1.0 which is the value for sysDescr.0).
In the Query Delay field, enter the number of seconds to wait after each SNMP command or query during discovery. The SNMP plugin issues a series of SNMP queries to discover objects on the device. There are some devices that cannot handle the frequency at which SevOne NMS issues these queries. This enables you to slow down the query frequency. You should consider this setting based on the number of SNMP objects on the device.
Example: If you set this to 20 seconds for a device with a few objects, discovery could be quick, but if you set this to 20 seconds for a device with hundreds of objects, discovery could take weeks.
In the Query Delay (on Failure) field, enter the number of seconds to wait after a failure of an SNMP command or query. When an SNMP query fails (expected behavior during SNMP discovery) this is the number of second to wait before the SNMP plugin issues the next query.
Click the Test This Device's Saved Settings link to display the SNMP Walk page where you can perform an SNMP walk.
Click the Synchronize Interface Administrative Status drop-down.
Select Auto to use the setting from the Cluster Manager.
Select On to disable and hide the administratively down interfaces and to enable and display the administratively up interfaces.
Select Off to poll all interfaces by default.
Click the Synchronize Interface Operational Status drop-down.
Select Auto to use the setting from the Cluster Manager.
Select On to disable and hide the operational down interfaces and to enable and display the operational up interfaces.
Select Off to poll all interfaces by default.
Click the Strict RFC 2233 Support drop-down.
Select Auto to use the setting from the Cluster Manager.
Select No to not use strict RFC 2233 Support.
Select Yes to set interfaces found to be under 20Mbps to not support 64 bit counters when 32-bit counters are also available.
Click the Prefer 64-bit Counters drop-down.
Select Auto to use the setting from the Cluster Manager.
Select Allow Both to use both 64-bit and 32-bit counters.
Select Prefer 64-bit to set interfaces found to be under 20Mbps to not support 64-bit counters when 32-bit counters are also available.
Select Prefer 32-bit to use 32-bit counters.
Select the IP/Interface Correlation check box to walk the ipAdEntAddr-like entries for IP address information. Some SNMP agents do not support this and may have issues with it. Some devices have vast numbers of IP addresses which increases discovery time. This information helps monitor flow technologies but is not required.
Select the Trap Destination Discovery check box to discover trap destinations for the device. Some SNMP agents do not support this and may have issues with it. Some devices have vast numbers of destinations which increases discovery time.
Click the View Device Trap Destination Associations link to view the trap destinations that are available for the device.
Click the Max PDU Discovery drop-down.
Select Auto to use the setting from the Cluster Manager.
Select On to attempt to discover the maximum number of PDUs allowed for the device.
Select Off to not attempt to find the maximum number of PDUs on the device.
In the Max PDU field, enter the maximum number of PDUs to discover on the device.
Click Edit Indicator Types to Monitor to display the Indicator Type Map page where you select to enable or disable the SNMP indicator types to poll on the device. Note the legend/explanation for the indicators.
Bold - The SNMP plugin polls the indicator by default when discovered on a device.
Italic - The indicator's object type is enabled from the Object Types page Manager.
Normal - The indicator's object type is disabled and the indicator is not being polled.
Select the check box for each individual indicator to poll the indicators you select for the device.
SevOne NMS provides starter set SNMP object types for the SNMP plugin to poll. SNMP object types are enabled by default. The SNMP plugin goes through all possible object types and generates a list of individual object indexes for each object type. The rules for the object type are applied to each index that the SNMP plugin encounters to generate a unique object per index. The SNMP plugin uses text related to and based on OIDs to create human readable object names and descriptions. OIDs are evaluated as follows: Anything that is not text, a variable, an operator, a normal number, or otherwise special symbol is considered an OID. When an OID is evaluated, it evaluates to the value of the OID on the current device. If the OID is not present on the device, the OID, followed by the default SNMP index, is used instead. If the OID cannot be evaluated, it evaluates to the empty string. This provides the ability to use logical and mathematical expressions to store a resultant value in order to relate OIDs to each other. The SNMP plugin uses this to cross reference OIDs across the device's SNMP tree to gather descriptive information about a particular object.
OIDs are named by a series of numbers that comprise each specific OID.
Example: sysDescr is a simple case with the OID .1.3.6.1.2.1.1.1
Everything that comes after a named OID is referred to as its index. The [INDEX] variable is set to the SNMP index of the current object. This is a vector variable and each index in the vector corresponds with each index key you define for the object type. In the case of sysDescr, there is always only a .0, meaning that there is only one instance of sysDescr. .0 is generally used to mean that there will only ever be one instance of a particular OID. Usually, system-wide information is presented as .0 information. There is no practical limit to the count of numbers that may follow an OID. The goal is to keep that count small and meaningful. Cisco generally uses integer indexes that have a constant amount of numbers that follow each OID. Many server manufacturers use string indexes for maximum readability. A string index represents a piece of text (the string) as a series of characters and each character is then represented as its ASCII value.
Example: ifDescr is indexed by a single number (that is not 0). ifDescr.3 might be the description of an Ethernet card in a server.
Variables are evaluated as OIDs. The SNMP plugin treats variables like variables in any other language that stores a value of an expression. There are two types of variables: scalars and vectors. A scalar is anything that is a single something (e.g., a number or some text). A vector is an array of things. SNMP plugin vectors are different from vectors in normal scripting languages because SNMP plugin vectors are geared toward OIDs broken down into vectors by the . character. When used in an expression, both scalars and vectors are evaluated and inserted "raw" into the expression. This means that they may be treated as OIDs and evaluated as such. Scalars have nothing special done to them when they are evaluated. Variables are basically just a name surrounded by square brackets. Variable names may consist of any number of the following characters: a-z, A-Z, 0-9, and _.
Example: [Variable Name ]
The SNMP plugin evaluates OIDs in the context of a certain SNMP agent at the discovery time for each individual device. Discovery executes statements, in the context of that device, whereby every time an OID is encountered the device is queried for its value. As the SNMP discovery script goes through each possible object type, it generates a list of individual object indexes for that object type. The rules for each object type is applied to each index that it encounters to generate a unique object per index.
The following SNMP object type fields are evaluated in the following sequence for each object.
Variables
Subtype Expression
Assert Expression
Name Expression
Description Expression
The Object Rules page enables you to define rules to disable polling of objects and the Object Manager enables you to manage the objects on each device. The Object Types page enables you to manage SNMP object types and indicator types.
To access the Object Type Manager from the navigation bar, click the Administration menu, select Monitoring Configuration, and then select Object Type Manager.
Click the Filter drop-down and select SNMP Poller to display the object types the SNMP plugin can poll in the Object Types hierarchy on the left.
Perform the following steps to manage SNMP object types.
Above the Object Types hierarchy, click Add or click to display the Add/Edit SNMP Object Type pop-up.
In the Name field, enter the object type name.
Each of the following fields has a corresponding check box on the right side to enable you to make changes at this level of the hierarchy and below. The changes you make when you select the right-hand check box override and do not affect the parent object type definition.
Click the Indexed By to display the SNMP OID Browser where you select an index OID.
Select the Reverse Engineer check box to have instances of this object type be uniquely identified by evaluating the OID of the SNMP object specified in the Indexed By field, as opposed to its value. How the values encoded within the OID are evaluated is based on the configuration of the Index Keys field. You should leave this check box selected for the vast majority of object types.
The Index Keys fields enable you to select the index keys to use to determine how to treat the remaining octets after the index. In the Possible Values field, select index keys to assign to the object type (use Ctrl or Shift keys to multi-select) then move the index keys to the Index Keys field. Index keys in the Index Keys field are assigned to the object type and they display in the sequence in which they appear listed. Possible values include the following:
Integer - A single number that indicates there is a constant amount of numbers following each OID.
String - A string prefixed with the string length. This typically appears with double quotes.
String (Implied) - A string with no length information. This must only occur as the last index value.
Variable - A variable amount of numbers prefixed with the amount of items. This is typically used for IPv4 versus IPv6 indexes.
Variable (Implied) - A Variable amount of numbers, but with no length information. This must occur as the last index value. This can be used to "eat up" the remainder of the index.
Click the Name Expression to display the SNMP OID Browser where you select an OID that results in a unique name for all object types on a device.
Click the Description Expression to display the SNMP OID Browser where you select an OID to add additional information about the object type.
Click the Subtype to display the SNMP OID Browser where you select an OID to define a subtype for the object type (used for thresholds and reports). This can generate the following variables:
- [TYPE]: The numerical value of the subtype.
- [TYPE]: The name of the subtype.
- [TYPE]: The description of the subtype.
Click the Assert to display the SNMP OID Browser where you select an OID to use in the assert expression that generates a list of individual object indexes. This is skipped if the object does not pass the assert expression. No variables are generated.
Example: To match only Ethernet interfaces and ignore everything else, enter the following statement.
ifType == 6
This separates memory from disks in the Host Resources MIB; both use hrStorageIndex, but each has a different value for hrStorageType. You should not modify the default Interface definition.
Click the Last-change OID to display the SNMP OID Browser where you select an OID for the SNMP plugin to use to determine if a change was made to the object type since it was last polled. If the object type changed, the SNMP plugin invalidates the current data.
Click the Admin-status to display the SNMP OID Browser where you select an OID for the SNMP plugin to use to determine the administrative status of the object.
Click the Oper-status to display the SNMP OID Browser where you select an OID for the SNMP plugin to use to determine the operational status of the object.
In the Variable field, enter the variables, expressions, and operators to you want the SNMP plugin to evaluate first for use with the other fields.
Click Edit Subtypes to display the Object Subtype Manager where you manage the object subtypes.
Click Save.
In the Object Types hierarchy, click to select the object type to which to associate device types.
In the Device Type section on the right, click Associate to display a pop-up that enables you to associate the SNMP object type with device types on which you want to poll data.
Select the check box for each device type to which to associate the object type.
Click Associate to create the association and to close the pop-up.
Indicator types determine what indicators are polled for an object type. The indicator types list displays the indicator types for the object type you select in the Object Types hierarchy. There are two types of indicator types.
Atomic indicator types are measured directly by the plugin.
Synthetic indicator types are indicators whose value is dependent upon other indicators; atomic and/or synthetic. Synthetic indicators enable you to combine the data from several indicators into one synthetic indicator so that SevOne NMS can properly evaluate indicators such as Percentage Loss, Percent Error, Percent Idle, and other high precision metrics.
Perform the following steps on the Object Types page to manage SNMP atomic indicator types.
Click on an SNMP object type in the hierarchy to display its indicator types on the right.
Click Add Atomic Indicator Type or click next to an atomic indicator type to display the Add/Edit SNMP Indicator Type pop-up.
In the Indicator Name field, enter the name of the indicator type.
In the Description field, enter the name to display.
View the Indexed By OID you define for the object type. You cannot edit this field.
For certain 64 bit OIDs, click the OID (high bit) to display the SNMP OID Browser where you select an OID to describe the top 32 bits on the OID. See note below.
Click the OID to display the SNMP OID Browser where you select an OID to describe the object type expression.
Click the Indicator Type drop-down and select a type.
Click the Measured As drop-down and select a data unit.
Click the Display As drop-down and select a display unit.
Click the Max Value Expression to display the SNMP OID Browser where you select an OID that is the maximum value for the indicator type.
Click the Measured As drop-down and select a data unit.
Select the Default Allowed for New Devices check box to have the SNMP plugin poll the indicator type by default when the object type is enabled and you enable the SNMP plugin for a device.
Click Save.
OID High Bits - SNMP version 1 specifications allow for 32 bit, unsigned integer counters. A 32 bit counter increments up to around four billion, then wraps back to zero, and continues. SNMP version 2 introduced 64 bit unsigned integer counters that can count much higher. 64 bit counters have twice the bits and twice the physical capacity of 32 bit counters to make them far more powerful and accurate. Manufacturers had two options to incorporate 64 bit counters.
Create a new 64 bit OID to represent the same thing as the 32 bit version.
Create a second 32 bit OID that represents the high bits of the 64 bit version.
Synthetic indicator types enable you to perform math on multiple metrics collected from multiple indicators on a single monitored object in order to calculate new KPIs.
Synthetic indicator types behave similar to the Calculation Editor that enables you to create custom calculation objects that perform math on multiple metrics collected from multiple objects and/or multiple synthetic indicators that you poll via the Calculation plugin. These features enable you create your own KPIs even when those KPIs do not exist on a device such as Percentage Loss, Percent Error, and Percent Idle. Synthetic indicators are always gauge type indicators and SevOne NMS evaluates all the indicator values the synthetic indicator uses as if the value is a gauge.
Example: You want to monitor voice gateways to reveal which PRI gets the most or least usage. Typical poll metrics enable you to report on the status of individual bearer channels and not the sum of all channels at any given time. This makes it difficult to monitor and alert on total PRI usage. Synthetic indicators enable you to sum the bearer channel statuses (each channel gets a value of 1 when busy), divide by the total number of bearer channels (23), and then multiply by 100, to collect the desired metric for PRI % usage.
Click on an SNMP object type in the hierarchy to display its indicator types on the right. If the object type does not have any indicator types, the Add Synthetic Indicator Type button does not appear.
Click Add Synthetic Indicator Type or click next to a synthetic indicator type to display the Add/Edit Synthetic Indicator Type pop-up.
In the Indicator Name field, enter the name of the synthetic indicator type.
In the Description field, enter the name to display.
The Synthetic Indicator Expression field enables you to define the calculation.
If the border around the field turns red, your calculation is invalid and your graph results will be erroneous.
Click an indicator type in the Available Source Indicators field and drag it to the Synthetic Indicator Expression field. The Available Source Indicators field contains the indicator types associated to the object type you select in the hierarchy.
Enter applicable operators in the Synthetic Indicator Expression field to formulate the calculation. See the Acceptable Operators section below.
Drag additional source indicator types and enter additional mathematical symbols to create the expression in the Synthetic Indicator Expression field.
The Maximum Value Expression field enables you to define the indicator type maximum value calculation.
Click an indicator type in the Available Source Indicators field and drag it to the Maximum Value Expression field.
Enter applicable operators in the Maximum Value Expression field to formulate the calculation. See the Acceptable Operators section below.
Drag additional source indicator types and enter additional mathematical symbols to create the expression in the Maximum Value Expression field.
Click the Measure As drop-down and select the unit of measure to use to measure the data.
Click the Display As drop-down and select the unit of measure in which a display the data.
Select the Default Allowed for New Devices check box to have the plugin poll the indicator type by default when the object type is enabled and you enable the plugin for a device.
Click Save.
Acceptable Operators
Your expression formula can include the following characters:
+ add
- subtract
* multiply
/ device
& & logical and
|| logical or
<= less or equal
>= greater or equal
! not equal
== equal
> greater than
< less than
^ raise x to the power of y
% modulus
?: if then else
If your calculation results in either of the following invalid values, there will be a gap in your graph: Not a Number (NAN) and Infinity (+/-INF). The following is how SevOne NMS attempts to prevent invalid values.
In sequence of processing:
Zero divided by zero results in NAN.
Any positive value divided by zero results in +INF.
Any negative value divided by zero results in -INF.
Zero multiplied by +/-INF results in NAN.
Any value added to, subtracted from, multiplied by, divided by, or divided from NAN results in NAN.
Any value compared to NAN (<, <=, ==, >=, >) results in 0. NAN != NAN.
Any value compared to +INF is less than +INF, except that +INF == +INF
Any value compared to -INF is greater than -INF, except that -INF == -INF
Any value added to or subtracted from +INF results in +INF
Any positive value multiplied by +/-INF results in +/-INF
Any value divided by +/-INF results in 0
The Object Subtype Manager enables you to manage the object subtypes that group the objects you want the SNMP plugin to poll.
Perform the following steps to manage SNMP object subtypes.
From the navigation bar, click the Administration menu, select Monitoring Configuration, and then select Object Subtype Manager. You can also access the Object Subtype Manager from the Object Types page.
Click the Plugin drop-down and select SNMP Poller.
Click the Object Type drop-down and select an object type to display its object subtypes in the list.
Click Add Subtype or click to display the Object Subtype Editor pop-up.
In the Name field, enter the name of the object subtype.
In the Description field, enter the object subtype description.
Select the Is Common check box to enable the objects associates with the subtype to appear in lists of common objects.
Click Add to add a new line to the Rules list.
In the Identifier field, enter the string to match in order to apply the rule.
Click Update to save the rule.
Repeat the Add steps to define additional rules. Each rule is evaluated and appropriate rules are applied.
Click Save.
Management Information Bases (MIBs) are the files that enable the raw machine generated Object Identifiers (OIDs) to display in a way that is more understandable to users. SevOne NMS groups OIDs under the guise of an object. An object is defined by an index value and may have multiple OIDs which each use the object's index to resolve their values. Each of these OIDs under an object is known as an indicator.
Example: SevOne NMS conceptually creates an object outlined as follows.
Object
Index: 1
Indicators
RFC1213-MIB::ifIndex
RFC1213-MIB::ifDescr
RFC1213-MIB::ifType
RFC1213-MIB::ifSpeed
RFC1213-MIB::ifPhysAddress
RFC1213-MIB::ifAdminStatus
RFC1213-MIB::ifOperStatus
RFC1213-MIB::ifInOctets
RFC1213-MIB::ifInDiscards
RFC1213-MIB::ifOutOctets
RFC1213-MIB::ifOutDiscards
Each interface object typically has the same definition but a different index value, therefore, all interfaces to the system are closely related. SevOne NMS monitors every SNMP item that is part of an object.
Each entry in the SNMP structure is a series of numbers, such as .1.3.6.1.2.1.1.1. As you read the number, each number to the right is more specific than the number to its left. Each number to the right is thought of as a child of the number to its left. A string of such numbers is known as an OID because it defines a unique identifier for a particular thing, or object.
Management Information Bases (MIBs) define textual names for OIDs. Manufacturers tend to have their own MIBs to describe specific things about their systems.
Example: The name of the OID (.1.3.5.1.2.1.1.1) is sysDescr. This OID is used for the system description of a device.
The MIB Manager enables you to view MIB details and to add MIBs. MIBs are the files that enable the raw machine generated OIDs to display in a way that is more understandable to users. For a list of MIBs and MIB definitions, visit www.mibsearch.com. SevOne NMS provides a list of standard MIBs.
To access the MIB Manager from the navigation bar, click the Administration menu, select Monitoring Configuration, and then select MIB Manager.
The list displays the following MIB information.
Name - Displays the MIB name.
Size - Displays the size of the MIB file.
Revision - Displays the number of times you upload the MIB to SevOne NMS.
Date Added - Displays the date the MIB was added.
Date Updated - Displays the date the MIB was most recently edited.
The following controls enable you to manage MIBs.
Select the check boxes for the MIBs to manage and click .
Select Add MIBs to open the MIB Uploader.
Select Delete Selected MIBs to remove the MIBs
Select Download All MIBs to create a .zip file of all MIBs that you can download for email, backup, etc.
Select Download Selected MIBs to open and view the MIB files or to save the MIBs to your computer.
Select Delete Selected MIBs to remove the MIBs.
Click Add MIBs to display the MIB Uploader pop-up.
Click Select MIB(s) to display the File Uploader pop-up.
Navigate to the MIB file to upload and select it. To add multiple MIBs, zip the MIB files into a .zip format file and select the .zip file.
Click Open on the File Uploader pop-up.
Click Upload on the MIB Uploader pop-up.
Click Download All MIBs to create a .zip file of all MIBs that you can download for email, backup, etc.
The SNMP OID Browser enables you to select the OID you use to create SNMP object types and SNMP traps.
You can access the SNMP OID Browser from the navigation bar, click the Administration menu, select Monitoring Configuration, and then select SNMP OID Browser. Typically you access the SNMP OID Browser from an SNMP object type definition workflow or from a trap event configuration workflow. When an applicable OID appears on the right, click Select OID to return to the Object Types page.
The OID Tree section displays the OID hierarchical structure. The Search field enables you to filter the list of OIDs by name or by number. Navigate the OID tree hierarchy and select an OID to display more information on the right. The OID Information section displays the following information.
Name - Displays the OID name.
OID - Displays the OID number.
Access - Displays the type of access available for the OID such as Read, Read/Write, etc.
Type - Displays how the OID appears such as String, Integer, etc.
Status - Displays the OID status such as Current, Deprecated, or 0 (no status).
Description - Displays the OID description.
The textual name of an OID is only unique in the MIB to which it belongs so OIDs are accurately written as follows: <MIB Name>::<OID name>
snmpget - When a device is queried for an OID.
snmpwalk - When a device is queried for an OID and all of its conceptual children.
snmpset - When the value for an OID is set on a device.
In the case of interfaces (and most SNMP objects), an OID is dedicated to providing the index number.
Example: Walking ifIndex yields the following:
RFC1213-MIB::ifIndex.1 = INTEGER: 1
RFC1213-MIB::ifIndex.2 = INTEGER: 2
RFC1213-MIB::ifIndex.8 = INTEGER: 8
The value of each OID is also the index, which simplifies how to obtain the proper indexes.
The SNMP Walk page enables you to walk MIBs. The MIB does not need to be in SevOne NMS to perform a walk which is useful when you want to certify a MIB.
To access the SNMP Walk page from the navigation bar, click the Devices menu and select SNMP Walk. You can also access the SNMP Walk page from the Device Manager.
When you access the SNMP Walk page from the Device Manager, some of the following fields are pre-populated.
In the IP Address/Hostname field, enter the IP address or Hostname of the device.
In the SNMP Port field, enter the port on which the device is listening for SNMP traffic.
Click the SNMP Version drop-down and select the SNMP version of the device.
In the Read Community String field, enter the read community string of the device.
Click the SNMP Command drop-down.
Select snmpwalk to query a device for an OID and all of its conceptual children.
Select snmpget to query the device for an OID.
In the OID field, enter the OID to walk. If you leave this to the default OID, the walk may take a while. Be specific with your search. You should use ".1.3" or ".1.3.6" to avoid partial or broken walks.
Click the Output Format drop-down.
Select Default to display OIDs in text format (e.g. IF-MIB::ifInErrors.1).
Select Default With Numeric Indexes to translate strings to ASCII numeric values.
Select Numeric OIDs to translate OIDs into numeric format (e.g. .1.3.6.1.2.1.2.2.1.14.2).
Select Certification Walk to translate OIDs into a form that SevOne Support Engineers can use to perform device certifications.
Click the Source Peer drop-down and select the peer to perform the walk.
Click Walk to perform the SNMP walk.
After the walk performs, click Select Result Text to copy the results to your computer clipboard so you can paste the results into an email or document etc.
Conceptualize Objects, SNMP Walks
The following is a sample SNMP walk of the RFC1213 MIB for a particular device to illustrate what a sample SNMP walk may look like.
RFC1213-MIB::ifIndex.1 = INTEGER: 1
RFC1213-MIB::ifIndex.2 = INTEGER: 2
RFC1213-MIB::ifIndex.8 = INTEGER: 8
RFC1213-MIB::ifDescr.1 = STRING: "Ethernet3/0"
RFC1213-MIB::ifDescr.2 = STRING: "Serial3/0"
RFC1213-MIB::ifDescr.8 = STRING: "Loopback0"
RFC1213-MIB::ifType.1 = INTEGER: ethernet-csmacd(6)
RFC1213-MIB::ifType.2 = INTEGER: frame-relay(32)
RFC1213-MIB::ifType.8 = INTEGER: softwareLoopback(24)
RFC1213-MIB::ifSpeed.1 = Gauge32: 10000000
RFC1213-MIB::ifSpeed.2 = Gauge32: 1544000
RFC1213-MIB::ifSpeed.8 = Gauge32: 4294967295
RFC1213-MIB::ifPhysAddress.1 = Hex-STRING: 00 30 80 F3 1F F1
RFC1213-MIB::ifPhysAddress.2 = ""
RFC1213-MIB::ifPhysAddress.8 = ""
RFC1213-MIB::ifAdminStatus.1 = INTEGER: up(1)
RFC1213-MIB::ifAdminStatus.2 = INTEGER: up(1)
RFC1213-MIB::ifAdminStatus.8 = INTEGER: up(1)
RFC1213-MIB::ifOperStatus.1 = INTEGER: up(1)
RFC1213-MIB::ifOperStatus.2 = INTEGER: down(2)
RFC1213-MIB::ifOperStatus.8 = INTEGER: up(1)
RFC1213-MIB::ifInOctets.1 = Counter32: 1890978658
RFC1213-MIB::ifInOctets.2 = Counter32: 0
RFC1213-MIB::ifInOctets.8 = Counter32: 0
RFC1213-MIB::ifInDiscards.1 = Counter32: 85
RFC1213-MIB::ifInDiscards.2 = Counter32: 0
RFC1213-MIB::ifInDiscards.8 = Counter32: 0
RFC1213-MIB::ifOutOctets.1 = Counter32: 2071381140
RFC1213-MIB::ifOutOctets.2 = Counter32: 0
RFC1213-MIB::ifOutOctets.8 = Counter32: 2819292
RFC1213-MIB::ifOutDiscards.1 = Counter32: 0
RFC1213-MIB::ifOutDiscards.2 = Counter32: 0
RFC1213-MIB::ifOutDiscards.8 = Counter32: 0
All of these OIDs refer to three interfaces, identified by the final number of each OID; in this case 1 (for Ethernet3/0), 2 (for Serial3/0), and 8 (for Loopback0). The information about each particular interface is interleaved with that of the others.
Perform the following steps to find out whether Ethernet3/0 is up or down.
Search every ifDescr entry until you fine the one whose value matches Ethernet3/0.
Remember the index (the last number) for it.
Check the value for ifOperStatus using that index.
The Device Type page enables you to use discovery to classify and organize devices. Device types enable you to associate a collection of object types to multiple devices. Each device can belong to multiple device types. The device type concept enables you to organize devices for SNMP polling purposes which expedites policy definition and enables you to run manufacturer independent reports for similar but not identical objects. For end users, device types appear in all device group lists and provide an additional method to secure, sort, and filter devices.
You can define rules to automatically add devices, across multiple manufacturers/products, that implement the "same" MIBs to device types. Device type rules run during discovery to add the devices to the device types you create. You can manually pin devices to device types and the Device Manager also enables you to pin devices to device types.
To access the Device Types page from the navigation bar, click the Administration menu, select Monitoring Configuration, and then select Device Types.
The device type hierarchy appears on the left. There are two first level device types; SevOne Device Types and Custom Device Types. SevOne Device Types provide common, logical, poll focused, collections of devices that are used in starter set reports, policies, etc. You cannot edit or delete the SevOne Device Types. Custom Device Types provide the ability to monitor more diverse devices and cutting edge technologies. Check boxes enable you to simultaneously manage the metadata values, drag and drop, and delete multiple device types.
Select the custom device type under which to add a new device type.
Click Add Device Types to display a pop-up.
In the Device Type Name field, enter the device type name.
Click Save on the pop-up.
- Click to edit the values for the metadata attributes you want to associate with the device types. See the Manage Metadata Values section below.
- Click to edit a device type name.
Drag and drop device types to different places in the custom device type hierarchy.
- Click to delete the device group. When you delete a device group that has associated policies, a message appears to inform you that associated policies will be deleted.
On the message, click View Policies to display the Policy Association pop-up that lists the policies associated to the device group.
Select the policies to move and click Reassign Selected or click Reassign All to display a pop-up that enables you to select the device group to which to move the policies.
On the pop-up, click the drop-down and select the device group to which to move the policies and click OK.
Click Done to move the policies.
The in the device type hierarchy Actions column provides access to the Edit Metadata pop-up that enables you to manage the values for the metadata attributes you want to associate with the device type. The Metadata Schema page enables you to manage metadata attributes.
Click in the Actions column to display the Edit Metadata pop-up.
Click in the Actions column to make the Values field editable.
In the Values field, enter the value for the attribute with the applicable attribute type specific format.
Date/Time: Must have a valid date and time format and can use natural language processing such as; 3 Thursdays ago at 5pm.
Integer: Type: Value must be numeric.
IP Address: Must use one of the following formats:
IPv4: 172.16.254.1
IPv6: 2001:db8:0:1234:0:567:8:1 or 10.1.1.100 or 10.1.1.100/16
MAC Address: Must use the following format: 0A:00:27:00:00:00
Latitude and Longitude: Must have valid coordinates that are decimal values: -90.00 to 90.00 values for Latitude and -180.00 to 180.00 for Longitude
String: Supports up to 1024 UTF-16 characters including PCRE regex.
Text: Supports up to 65K UTF-16 varchar characters including PCRE regex.
URL: Must have FQDN validation, supports username prefix, ports, protocol AND ?/& for HTTP GET variables, and optional additional PCRE regex for validation, and must be fewer than 255 characters.
Click Update to save the value.
Click on a device type in the hierarchy to display the device type membership rules in the upper section on the right. Membership rules enable you to automatically add devices to the device type when the SNMP plugin discovers devices that contain objects that meet the rule criteria.
Click Add Rule or click to display the Add/Edit Device Type Membership Rule pop-up. Each rule requires only one field. If you populate several fields per rule, the criteria you enter in that rule are cumulative.
Example: Enter Remote in the Name field and enter ^192\.168 in the Management IP Address field in the same rule criteria row. The device must have both Remote in the name AND an IP address that starts with 192.168 to be added to the device type.
Device Name - Enter the name of the devices to add to the device type (wild cards are implied).
Device Description - Enter the description of the devices to add to the device type.
Management IPAddress - Enter the IP address of the devices to add to the device type (^192\.168 adds all devices whose IP address starts with 192.168).
sysDescr - Enter the text you get when you SNMP walk the sysDescr OID.
sysContact – Enter the text you get when you SNMP walk the sysContact OID.
sysLocation - Enter the text you get when you SNMP walk the sysLocation OID.
sysName – Enter the text you get when you walk the sysName OID.
sysObjectID - Enter the text you get when you SNMP walk the sysObjectID OID.
Walkable OID – Enter the number of the OID to walk.
Click Save to save the rule criteria.
Repeat these steps to add additional rules to use the OR Boolean.
Example: Enter Remote in the Name field in the first row in the rule table then click Create Rule. Enter ^192\.168 in the second row in the rule table. The device can have either Remote in the name OR an IP address that starts with 192.168 to be added to the device type.
The Object Types tab in the lower right section contains two groups of object types Inherited and Local. The Object Types tab displays the following information.
Object Type - Displays the name of the object type.
Plugin - Displays the name of the plugin that polls the object type.
Defined In - Displays Local for object types that are defined at this level in the Device Type hierarchy or displays a link that navigates you to the level in the Device Types hierarchy from where the object type inherits its definition.
The Object Types tab enables you to associate the SNMP object types you want the SNMP Plugin to attempt to poll on the devices that are members of the device type.
On the Object Types tab, click Associate to display the Associate pop-up.
Select the check box for each object type to poll on the devices that are members of the device type.
Click Associate on the pop-up to associate the object types to the device type.
The Device Type Membership tab displays the devices that are members of the device type. When you pin a device to a device type, rules do not affect the device's membership and you must manually unpin the device to remove its membership. When a rule adds a device to a device type, if you change the rule, the devices that were added by the rule can automatically be removed from the device type.
- Indicates the device is a member that was pinned to the device type at this level.
- Indicates the device is a member that was pinned to a lower level device type.
– Indicates the device is a member that was added by a device type membership rule at this level.
- Indicates the device is a member that was added by a device type membership rule at a lower level.
The Pin Devices button enables you to pin devices to the device type and enables you to pin or unpin devices that are members of the type.
Click Pin Devices to display a pop-up that displays all devices in SevOne NMS.
Select the check box for each device to pin to the device type.
Click Pin to Type on the pop-up to pin the devices you select to the device type.
In the Membership list, select the check box for each device to pin to the device type, click , and select Pin Selected Devices to pin the devices you select to the device type.
Select the check box for each device to unpin from the device type, click , and select Unpin Selected Devices to unpin the devices you select from the device type. If you pin a device that was added by a rule, when you unpin the device it is removed from the membership list. If you do not change the rule, the device appears in the list again upon the next discovery.
Simple Network Management Protocol traps are an aspect of SNMP that enables a device to send information. Traps include events such as when a new interface is added or a device is restarted. Trap events enable you to assign real meaning to SNMP traps. SevOne NMS provides several common trap events and the Trap Event Editor enables you to define trap events that are specific to your environment.
The Logged Traps page displays the SNMP traps SevOne NMS receives for which you define a trap event. Logged traps have a trap event. The Cluster Manager enables you to define how long to save logged traps.
To access the Logged Traps page from the navigation bar, click the Events menu, select Archives, and then select Logged Traps.
The logged traps list displays logged traps from most recent to oldest. Filters enable you to limit the traps that appear in the list. All filters are optional and cumulative.
IP Address - Displays the IP address from where the trap was sent.
Time - Displays the time SevOne NMS received the trap.
OID - Displays the trap's object identifier (OID) that met the conditions for the trap event.
Variable Number - Displays the number of variable conditions associated with the trap.
Click on a trap to display the following information in the Variable Conditions section.
Variable - Displays the name of the variable.
Type - Displays the variable type.
Value - Displays the value that triggers the trap.
The Unknown Traps page displays the SNMP traps for which no trap events apply. The traps that appear on the Unknown Traps screen are less meaningful than traps for which you define a trap event. Trap events enable you to assign real meaning to SNMP traps. The goal is to enable you to define trap events (either ignore, log, or alert) for the traps that are specific to your environment. The Cluster Manager enables you to define how long to save unknown traps.
To access the Unknown Traps page from the navigation bar, click the Events menu, select Archives, and then select Unknown Traps.
The unknown traps list displays traps from most recent to oldest. Filters enable you to limit the traps that appear in the list. All filters are optional and cumulative.
IP Address - Displays the IP address from where the trap came.
Time - Displays the time SevOne NMS received the trap.
OID - Displays the trap's object identifier (OID) that could be used to define a trap event.
Variable Number - Displays the number of variable conditions associated with the traps.
Click on a trap to display the following in the Variable Conditions section.
Variable - Displays the name of the variable with a check box. Select the check box to include the variable in the trap event definition.
Type - Displays the variable type.
Value - Displays the value that triggers the trap.
The Configure Trap Event button enables you to define a trap event for the unknown trap. After you define the trap event, the trap is handled in the way you specify and future trap occurrences appear on the Logged Traps page, when applicable.
Select a trap in the list.
Select the check boxes for the variables to include in the trap event definition.
Click Configure Trap Event to display the Trap Event Editor with applicable fields pre-populated.
The Trap Event Editor enables you to configure how to handle traps. Traps that you associate to a trap event can appear on the Logged Traps page and traps without a trap event appear on the Unknown Traps page. SevOne NMS provides a collection of common, default trap events.
To access the Trap Event Editor from the navigation bar, click the Events menu, select Configuration, and then select Trap Event Editor. Typical access to the Trap Event Editor is from the Unknown Traps page that provides a Configure Trap Event button.
Each trap has a primary OID that designates the trap type. Each trap event has a target OID. When the trap primary OID matches the trap event target OID and any trap event variable conditions you define, the trap triggers the trap event.
Filters enable you to limit the trap events that appear in the list. All filters are optional and cumulative.
There are several paths to access the Event Editor pop-up dialog that enables you to create and edit trap events.
Click Add Trap Event, click to edit a trap event or from the Unknown Traps page, select an unknown trap and click Configure Trap Event.
Select the Enabled check box to enable the trap event. Leave clear to not apply the trap event and to display applicable traps on the Unknown Traps page.
The Match options enable you to apply the trap event to a specific OID, device groups, devices, or operating systems. Matching is a logical OR option, meaning that the trap primary OID must come from the specified device group, device, or operating system to trigger the trap event. To make the trap event applicable for all device groups, devices, and operating systems, do not define any Match options.
The Target OID field provides an to access the SNMP OID Browser where you select the target OID for the trap event. When you edit a trap event or you access the Trap Event Editor from the Unknown Traps page, this field displays the name of the OID you select. You can enter the OID name in this field if you know the OID name.
Click the Device Groups drop-down and select the check boxes for the device groups to associate with the trap event.
Click the Devices drop-down and select the devices to associate with the trap event.
Click the Operating System drop-down and select the operating systems to associate with the trap event.
The Variable Conditions field enables you to define the conditions for which the trap event is applicable.
Click Add to add a row to the table and to define a new variable condition.
Click in the OID field to display the SNMP OID Browser where you select the trap target OID.
Click the Op drop-down and select a comparison operator.
In the Value field, enter the value that must be met to associate the trap to the trap event.
Click Update to save the OID with the trap event.
The Unique OIDs field enables you to designate unique OIDs to associate to the trap event.
Click Add to add a row to the table and to add an OID.
Click in the OID field to display the SNMP OID Browser where you select the OID.
Click Update to save the OID with the trap event.
Select the Log check box to display the trap on the Logged Traps page. All traps received appear on either the Unknown Traps page or the Logged Traps page. To have a trap not appear on either of these pages, define an enabled trap event and leave this check box clear.
Example: For devices that send traps when traffic is denied through a firewall rule, a logged trap enables you to trace the events to a firewall to determine the cause of missed traffic. Frequent but irrelevant traps such as when devices send traps each time a new IP address is leased via DHCP may not be useful.
Select the Alert check box to have the trap trigger an alert.
Click the drop-down and select the alert severity to display for the alert.
In the text field, enter the message to appear for the trap when the trap event triggers. You can use the following variables in the message.
$dev - To display the name of the device from which the trap came.
$oid - To display the trap OID in name format.
$oidnum - To display the trap OID in number format.
$var - To display the variable condition for the trap in name format.
$varnum - To display the variable condition for the trap in number format.
Select the Email check box to enable the following fields.
Select the Mail Once check box to send one email when a trap triggers the first occurrence of the trap event. All subsequent occurrences are not emailed.
Click the Users drop-down and select the users to receive an email when the trap event triggers.
Click the Roles drop-down and select the user roles to receive an email when the trap event triggers.
In the Email Addresses field, click Add to enter the email addresses where an email is to be sent when the trap event triggers.
Click Save.
The Trap Destination page enables you to define the destinations where you want SevOne NMS to send traps. Trap destinations can be third party applications such as your company's event console or fault management system. Each trap can be sent to multiple destinations.
To access the Trap Destination page from the navigation bar, click the Events menu, select Configuration, and then select Trap Destinations.
- Click the Action icon and select Add New Destination or select the check box for a destination to edit then click Edit Selected to display the Trap Destination Settings pop-up.
In the Name field, enter the trap destination name.
In the IP Address field, enter the IP address of the trap destination device.
In the Port Number field, enter the port number to which to send the trap.
In the SNMP Read Only Community String field, enter the read only community string SevOne NMS needs to authenticate onto the device.
Click the SNMP Version drop-down and select an SNMP version.
Select the Default check box to send traps to the destination by default. You can designate multiple default trap destinations and you can define individual thresholds and policies to not use a default destination for specific traps when you define thresholds and policies.
Select the Enable check box to enable the trap destination.
Click Save.
The Trap Destination Associations page enables you to associate devices or device groups with the trap destinations you define on the Trap Destinations page. SevOne NMS sends traps from devices or device groups to their associated trap destinations. Trap destinations can be applications such as your company's third party event console or fault management system.
To access the Trap Destination Associations page from the navigation bar, click the Events menu, select Configuration, and then select Trap Destination Associations.
Click the Grouping drop-down.
Select Device Group to associate all the devices in a device group to trap destinations.
Select Device to associate an individual device to trap destinations.
Click the Device Group/Device drop-down and select the device group or the device to which to associate trap destinations.
In the Unassigned Trap Destinations field, select the trap destinations (use the Ctrl or Shift keys to multi-select) to associate to the device group or device.
- Click to move the trap destinations you select to the Assigned Trap Destinations field. Traps are sent from the device group or device to the trap destinations in the Assigned Trap Destinations field.
Select a trap destination in the Assigned Trap Destinations field and click Disable to save the trap association but suspend sending traps to the destination. Disabled trap destinations appear in light text.
Select a disabled trap destination in the Assigned Trap Destinations field and click Enable to enable the association.
SevOne SNMP Scripting (S3) is a scripting language developed by SevOne to enable the SNMP plugin to discover complex SNMP objects. The primary purpose of S3 is to describe an SNMP OID in relation to other SNMP OIDs. S3 creates text that relates to and is based on OIDs in order to create SNMP object names and descriptions. S3 also relates OIDs to each other via logical and mathematical expressions to store the resultant value for later use such as to cross reference OIDs across a device SNMP tree and to gather descriptive information about a particular object.
The SNMP plugin uses S3 for the following:
Define an object name.
Define an object description.
Define an object type.
Determine which objects to include.
Define an indicator.
The SNMP plugin uses the following scoring formula to name a newly discovered object.
Assume that the best score to begin is 0.
Go through all of the objects for the device.
If the existing object’s Object Type is the wrong name, skip.
The best possible score is 5.
Assume that the new object description is valid.
If the new object description is the same as the Object Type name, then the object description is no good.
If two things that the SNMP plugin already found have the object description, then the object description is no good.
Assume that the old description is valid.
If the existing object description is the same as the Object Type name, then the object description is no good.
If two existing objects already have that object description, then the object description is no good.
If either object description is no good, then the best possible score is now 4.
The current score is 0.
If the object names are the same, then increase the current score by 3.
Otherwise, if the new object description is good and the existing object name is the same as the new object description, then increase the current score by 1.
If both object descriptions are good and the same, then increase the score by 1.
Otherwise, if the existing object description is good and the existing object description is the same as the new object name, then increase the current score by 1.
If the SNMP indexes are the same, then increase the current score by 1.
If the score is at least 2, and the score is better than the best score so far, consider the objects the same.
Human breakdown:
// Scoring analysis.
//
// Possible scores: / Current name matches existing name. [+3]
// 3,1,0 | Current description is good.
// \ Current description matches existing name. [+1]
//
// Possible scores: / Existing description is good.
// 1,0 | Current description is good.
// | Existing description matches current description. [+1]
// \ Existing description matches current name. [+1]
//
// Possible scores: / Current index matches existing index. [+1]
// 1,0 \
//
// So, when are things the same?
// 1. The names are the same.
// 2. The description (if good) matches an existing name AND the descriptions (if good) are the same.
// 3. The description (if good) matches an existing name AND the name is matches an existing description (if good).
// 4. The description (if good) matches an existing name AND the indexes are the same.
// 5. The name is matches an existing description (if good) AND the indexes are the same.
So what does this mean?
SevOne NMS has discovered and polls a router with two network cards with two ports on each.
All objects belong to the Interfaces object type.
Each port is an object.
Object Name |
Object Description |
SNMP Index |
Note |
Score |
Eth0 |
Internet Access |
1 |
Existing object with poll data |
n/a |
Eth1 |
Interface |
2 |
Existing object with poll data |
n/a |
Eth2 |
Site One |
3 |
Existing object with poll data |
n/a |
Eth3 |
Back Link |
4 |
Existing object with poll data |
n/a |
You rename the ports on the router. Upon rediscovery the SNMP Plugin continues to poll the objects with no change or data loss as long as you do not change the object description or the SNMP index.
Object Name |
Object Description |
SNMP Index |
Note |
Score |
Ethernet0 |
Internet Access |
1 |
No data lost, polled as if it were still Eth0 |
x |
Ethernet1 |
Interface |
2 |
No data lost, polled as if it were still Eth1 |
x |
Ethernet2 |
Site One |
3 |
No data lost, polled as if it were still Eth2 |
x |
Ethernet3 |
Back Link |
4 |
No data lost, polled as if it were still Eth3 |
x |
You remove the first card from the router. The router automatically renames each port. Upon rediscovery the SNMP plugin continues to polls the objects with no change or data loss as long as you do not change the description or the index.
Object Name |
Object Description |
SNMP Index |
Note |
Score |
|
|
|
Data stored for the number of Days Until Delete setting in the Cluster Manager |
x |
|
|
|
Data stored for the number of Days Until Delete setting in the Cluster Manager |
x |
Ethernet0 |
Site One |
3 |
No data lost, polled as if it were still Ethernet2 |
x |
Ethernet1 |
Back Link |
4 |
No data lost, polled as if it were still Ethernet3 |
x |
You add the card back to the router within the number of Days Until Delete setting in the Cluster Manager. The router automatically changes the object name.
Object Name |
Object Description |
SNMP Index |
Note |
Score |
Ethernet0 |
Internet Access |
1 |
Data gap for when the card was removed but otherwise no data lost, polled as if it were still Ethernet0 |
x |
Ethernet1 |
Interface |
2 |
Data gap for when the card was removed but otherwise no data lost, polled as if it were still Ethernet1 |
x |
Ethernet2 |
Site One |
3 |
No data lost, polled as if it were still Ethernet0 from previous discovery. |
x |
Ethernet3 |
Back Link |
4 |
No data lost, polled as if it were still Ethernet1 from previous discovery. |
x |
You decide to rename port four and change its description.
Object Name |
Object Description |
SNMP Index |
Note |
Score |
Ethernet0 |
Internet Access |
1 |
No data lost, polled as if it were still Ethernet0 from previous discovery. |
x |
Ethernet1 |
Interface |
2 |
No data lost, polled as if it were still Ethernet1 from previous discovery. |
x |
Ethernet2 |
Site One |
3 |
No data lost, polled as if it were still Ethernet2 from previous discovery. |
x |
Eth3 |
Site Three |
4 |
New object created and new poll data collected. Existing data stored for the number of Days Until Deleted setting in the Cluster Manager. |
x |
At an extraordinarily high level, SevOne NMS groups each SNMP object by an SNMP object type. Each object has indicators that are grouped by indicator type. SNMP Objects are composed of OIDs which in turn break down into MIBs.
Device manufacturers name SNMP OIDs by a series of numbers, (e.g., The OID sysDescr is .1.3.6.1.2.1.1.1). Everything that comes after a named OID is the OID index. System wide information is usually denoted as .0 information. The .0 generally means there is only one instance of the OID, (e.g., The sysDescr index is always .0). The OID ifDescr is indexed by a single number that is not 0, (e.g., The description of an Ethernet card in a server might be ifDescr.3). There is no limit to the count of numbers that follow an OID. Some manufacturers use integer indexes that have a constant amount of numbers that follow each OID and some manufacturers use string indexes for readability. A string index represents a piece of text (the string) as a series of characters where each character is represented as its ASCII value. String indexes are sometimes prefixed with the length of the string.
Integer - A single number of any size.
A simple integer that could be used for an interface index.
7
String (with length) - A string of text, prefixed with the number of characters and followed by the ASCII value of each character.
The text CPU is the number of characters followed by the ASCII value of each.
3.67.80.85
String (no length) - A string where the length is not prefixed.
The text CPU in ASCII values.
67.80.85
Number (with length) - A string index where the numbers do not have an ASCII meaning.
The IP address with its length before the octets.
4.192.158.0.1
Number (no length) - A string index with no length where the numbers do not have an ASCII meaning.
The IP address with no length information appears as a series of integer indexes. This is useful when there is no guaranteed how many numbers there could be.
192.168.0.1
S3 uses the full numeric OID representation (starting with .1) to remove the dependency on the MIBs and to remove potential ambiguity of the OID. This makes the object definition fully portable to another system because different MIBs can arbitrarily redefine OIDs.
Another S3 feature is that white space characters such as spaces, tabs, and new line characters are optional and exist for readability. All of the following are equivalent:
• 7+9
• 7 + 9
• 7
+9
• 7
+
9
An S3 script is a sequential evaluation of one or many statements. Each statement is executed in sequence. The only logic provided by S3 comes from flavors of the ternary operator which acts like an IF statement. The final result of the script is the result of the final statement in the script.
Example 1:
Statement 1
Example 2:
Statement 1
Statement 2
Statement 3
A statement is the atomic unit of a script. A statement can assign a value to a variable or a statement can be an expression that evaluates to some value. Each statement evaluates to some value upon execution, (e.g., For a variable assignment, the value of the statement is the value of the variable).
Statements are lists of expressions and expression chains may be very complex and long. All S3 statements must end in a semicolon <;>. The last statement in a script may omit the semicolon.
Simple statement:
Expression ;
List statement where the final value is the concatenation of both expressions:
Expression 1 Expression 2 ;
An expression is the atomic unit of a statement. S3 is an OID-evaluation language and a text creation language. Multiple expressions can lie next to each other and their results are concatenated together. This differs from more logical and mathematical languages.
Example: 1 + 2 3 + 4
In C there needs to be a joining operation between the 2 and the 3 because they are considered two disjointed expressions which results in a syntax error.
In S3 this is seen as two separate expressions next to each other: 1+ 2 and 3 + 4 and the result of the statement is 37. The white space does not matter unless enclosed in quotes.
An expressions is anything that evaluates to a value. This value need not be numeric. A piece of text evaluates to itself. An expression might be the number 7, the word Hello, or a complex mathematical formula. Expressions can be chains of symbols and operators as long as the entire expression evaluates to a single value.
Number
7
String:
'Hello'
Complex Formula:
( ( 1 + 2 ) / 12 + 34 ) * 10
Variable or OID that evaluates to a number or string:
[INDEX]
.1.3.6.1.2.1.1.1.0
Multiple grouped expressions (enclosed within parentheses) concatenated together:
( 7 'Hello' ( ( 1 + 2 ) / 12 + 34 ) * 10 [INDEX] .1.3.6.1.2.1.1.1.0 )
Variables are evaluated as OIDs to store the value of an expression. S3 has two types of variables; scalars and vectors.
Scalar - Anything that is a single number or some text.
Vector - An array of things. Vectors in S3 are different from vectors in normal scripting languages. Vectors in S3 are geared toward OIDs because an individual OID is represented as .<number> and a full OID is a series of .<numbers>s one after another. S3 breaks down variables into vectors by the "." character.
Variables are a name surrounded by square brackets. Variable names consist of the following characters: a-z, A-Z, 0-9, and - .
[Variable Name]
A variable assignment is an expression. The evaluation of the assignment is the new variable value. A variable assignment uses the = operator.
[Variable name] = Expression
S3 uses the following conventions to differentiate SevOne system variables from user variables to prevent user variables from overwriting system variables. There is no rule to enforce this.
SevOne system variables use capital letters and underscores for spaces. [MY_VARIABLE]
User variables use lowercase letters, a capital letter in the next word, and no underscore for spaces. [myVariable]
S3 can treat and evaluate variables as OIDs. Each variable must be declared before use. There is no special declaration syntax, but a variable must have an assigned value before use in an expression. Both scalar variables and vector variables are evaluated and inserted raw into the expression. S3 does nothing special to scalar variables when scalar variables are evaluated.
When a vector variable is evaluated, each of the vector variable's components is written, separated by "."s. Elements in vector variables are zero-indexed numerically. The first element starts at 0, the second starts at 1, and so on. To access a particular element of a vector variable, surround the element index in curly braces after the variable.
[Variable Name ]{Index number }
A variable cannot be used as an index number. The index number must be an actual number.
Each element in a vector variable is usually a scalar variable. There are exceptions when an element in a vector variable is another vector variable.
Some variables should not be evaluated as an OID. Enclose the variable in back ticks to prevent the variable from being evaluated as an OID. If a variable simply contains a number, the variable is treated as a normal number if not back ticked; however, it is always safe to back tick a variable to prevent improper evaluation. Text evaluates to itself. Text is considered anything enclosed in quotes. Back ticks may be in a single quoted string and that single quote string may be in a back tick quoted string.
Single quotes (') - Single quotes are used for raw text. The content of the text is not processed in any way, e.g., 'Anything here'
Back Ticks (`) - Back ticks are used for variable interpolation. Any variables present in the text is evaluated, e.g., `Anything here, including variables`
OIDs are evaluated. Anything that is not text, a variable, an operator, a normal number, or otherwise special symbol is considered an OID. When an OID is evaluated, it evaluates to the value of the OID on the current device. If the OID is not present on the device, the OID, followed by the default SNMP index, is used instead. If the OID cannot be evaluated, it evaluates to the empty string.
It is critical to note here that a variable without back ticks around it is treated exactly as it would if the value of the variable were to be placed in its stead. This means that a variable that contains a string representation of an OID is evaluated as that OID when it is encountered.
The following example might not work as expected:
1 [test] = 'test';
2 [test1] = [test] 1;
One might expect the value of "[test1]" to be "test1"; however, since "[test]" is not back ticked, it is treated as if the text "test" were present. As such, S3 tries to get the value of the OID whose name is "test" naturally, there is not one, and it returns the empty string. Thus, the final value is actually "1".
The proper way to do this is:
1 [test] = 'test';
2 [test1] = `[test]` 1;
This example back ticks the variable to prevent it from being evaluated as an OID.
When an OID is encountered, S3 tries to evaluate it. If S3 cannot evaluate the OID, then S3 adds the value of the default index to the OID, which for SNMP discovery is [INDEX]. If S3 still cannot evaluate the OID, then the OID evaluates to the empty string. This allows for very human readable and human understandable definitions for objects and indicators. However, at the loss of stringent definitions.
If an OID already has .[INDEX] appended to it, then the OID saves S3 the step.
Symbols are special tokens (characters, or collections of characters) that have a special function in S3.
Parentheses ( and ) group expressions to define the sequence in which they are to be evaluated. This is commonly used in mathematical applications.
Example:
1 + 2 * 3
(which is 7)
Is not the same as:
( 1 + 2 ) * 3
(which is 9).
Parentheses can change two expressions into one expression.
Example:
( 1 + 2 3 + 4 )
Evaluates to the single value 37, which could be used by further expressions.
Operators are symbols. Operators are anything that act on an expression. There are three types of operators:
Unary operators act on one value only, (e.g., Not).
Binary operators act on two values, (e.g., Addition).
Ternary operators act on three values, (e.g., ... ? ... : ... is a ternary operator in C).
The common mathematical operators are applied with the usual precedence. Mathematical operators have full floating point support.
Multiplication (Standard multiplication)
Left expression * Right expression
Division (Standard division)
Left expression / Right expression
Addition (Standard addition)
Left expression + Right expression
Subtraction (Standard subtraction)
Left expression - Right expression
Note: Because MIB names can contain a dash -, which is the same as the minus symbol -, all subtraction mathematical operators must have a blank space before and after the minus symbol.
Comparison operators compare two expressions that return 1 if the comparison is true or return 0 if the comparison is false.
Equal to, Boolean == returns 1 if the left and right side are equal.
Left expression == Right expression
Not equal to, Boolean != returns 1 if the left and right side are not equal.
Left expression != Right expression
Less than, Boolean < returns 1 if the left side is less than the right side.
Left expression < Right expression
Less than or equal to, Boolean <= returns 1 if the left side is less than or equal to the right side.
Left expression <= Right expression
Greater than, Boolean > returns 1 if the left side is greater than the right side.
Left expression > Right expression
Greater than or equal to, Boolean >= returns 1 if the left side is greater than or equal to the right side.
Left expression >= Right expression
Logical operators generally perform true/false operations. S3 uses the following logical operators:
Binary
Binary logical operators operate on two expressions.
Logical AND, Boolean && returns 1 if the left and right side evaluate to true or returns 0 otherwise.
Left expression && Right expression
Logical OR, Boolean || returns 1 if the left side evaluates to true, the right side evaluates to true, or both evaluate to true; or returns 0 otherwise.
Left expression || Right expression
Bamboo, ||| is actually a shortcut for a particularly common case of the ?? ternary operator. It returns the value on the left if it is set; otherwise, it returns the value on the right regardless of its value.
Left expression ||| Right expression
This is equivalent to
Left expression ?? Left expression : Right expression
Ternary logical operators operate on three expressions and S3 has two ternary operators.
Logical ternary operator, ? evaluates the left expression for a test that is greater than 0 (numerically) or for a string that has length and is not 0. Otherwise, it evaluates the right expression. For this reason, the test is usually a logical Boolean expression that returns 0 or 1, guaranteed.
test ? Left expression : Right expression
Existential ternary operator, ?? evaluates the left expression for a test that has a value that is not the empty string. Otherwise, it evaluates the right expression.
test ?? Left expression : Right expression
Note:
test ?? test : Right expression
Is equivalent to:
test ||| Right expression
The results of a walk, #count walks the specified OID and returns the count of the occurrences of an OID . This does not resolve the OID in the manner that other naked OIDs are resolved to get the OID value. This #count resolves the OID count immediately, unlike the way an OID is resolved via an OID walk.
Example: To count the number of CPUs on a Linux device to determine what the maximum CPU utilization could be: net-snmp returns up to 800% utilization for a box with eight CPUs.
#count OID
Example:
#count .1.3.6.1.2.1.25.3.3.1.2
Can evaluate to 8.
Since OIDs may be indexed by numbers, strings, or variably-sized components, S3 uses conversion operators that operate on a single expression.
Conversion from OID
OID-to-ASCII-string (with length), $s converts the expression to an ASCII string.
$s Expression
The expression should be an OID with the following format:
n.ASCII 1.ASCII 2.....ASCII n
Example:
$s '5.72.101.108.108.111'
Evaluates to Hello.
OID-to-ASCII-string (no length), $S converts the expression to an ASCII string.
$S Expression
The expression should be an OID with the following format:
ASCII 1.ASCII 2
Example:
$S '72.101.108.108.111'
Evaluates to Hello.
OID-to-numbers (with length), $v converts the expression to a string.
$v Expression
The expression should be an OID with the following format:
n.Number 1.Number 2.....Number n
Example:
$v '4.192.168.0.1'
Evaluates to 192.168.0.1.
OID-to-numbers (no length), $V Identity operation; the value should be the same as the expression.
$V Expression
This converts the expression to a string. The expression should be an OID with the following format:
Number 1.Number 2.
Example:
$V '192.168.0.1'
Evaluates to 192.168.0.1.
String-to-OID (with length), #s converts the expression to an OID with the length prefixed. The expression should be ASCII text.
#s Expression
Example:
#s 'Hello'
Evaluates to 5.72.101.108.108.111.
String-to-OID (no length), $s converts the expression to a string with no length information. The expression should be ASCII text.
#S Expression
Example:
#S 'Hello'
Evaluates to 72.101.108.108.111.
Numbers-to-OID (with length), #v converts the expression to an OID with the length prefixed. The expression should be text consisting of numbers separated by "."s.
#v Expression
Example:
#v '192.168.0.1'
Evaluates to 4.192.168.0.1.
Numbers-to-OID (no length), #V Identity operation; the value should be the same as the expression converts the expression to an OID with no length information. The expression should be text consisting of numbers separated by "."s.
#V Expression
Example:
#V '192.168.0.1'
Evaluates to 192.168.0.1.
Parameters to the conversion operators should be enclosed in parentheses to avoid confusion.
To get the OID index representation of the text 37 (which is 2.51.55), you can try:
#s 1 + 2 3 + 4
However, the #s only applies to the 1 which yields 1.49. (49 is ASCII for 1); the value of that is added to 2 (1.49 + 2 = 3.49), which is then concatenated with 7 (to yield 3.497). You must use parentheses:
#s ( 1 + 2 3 + 4 )
Evaluates to 2.51.55 (which, as a string, is 37).
The precedence of operators and symbols is as follows. When given the choice (in other words, when parentheses are not used), S3 evaluates operations in the following sequence.
The normal mathematical operator precedence (* / + -) is preserved in this list.
'text' `text`
()
#s #S #v #V $s $S $v $V
* /
+ -
== != > >= < <=
&&
||
|||
:
? ??
=
The following examples assign the proper values to variables whose name should match their value.
[one] = 1;
[two] = 1 + 1;
[two] = `[one]` + `[one]` - 1 + 1;
[ten] = ( 2 + 1 ) * 3 + 1;
The following example sets all three variables equal to 12.
1 [x] = [y] = [z] = 12;
The following examples demonstrate Boolean logic.
[bothXandY] = `[x]` && `[y]`;
[eitherXorYorBoth] = `[x]` || `[y]`;
[eitherXorY] = ( `[x]` && (`[y]` ? 0 : 1) ) || ( `[y]` && (`[x]` ? 0 : 1) );
[notX] = `[x]` ? 0 : 1;
The following example selects the value of ifName if it is present, or the value of ifDescr otherwise.
[bamboo] = ifName ||| ifDescr;
The following examples demonstrate the use of the ternary operator.
[sevenOrEight1] = `[x]` ? 7 : 8;
[sevenOrEight2] = `[x]` ? 6 + 1 : 2 * 2 + 4;
The following examples convert the text CPU into an OID index. The ASCII value for C=67, P=80, and U=85.
#s 'CPU'
The result of this is "3.67.80.85".
#S 'CPU'
The result of this is 67.80.85 (no length prefix).
The following examples convert the OID indexes specified into strings.
$s '3.67.80.85'
The result of this is CPU.
$S '67.80.85'
The result of this is also CPU.
The Net-SNMP agent supports the NET-SNMP-VACM-MIB, which provides some information about Net-SNMP's View Access Control Model.
The following is a sample walk of nsVacmAccessEntry (.1.3.6.1.4.1.8072.1.9.1.1):
NET-SNMP-VACM-MIB::nsVacmContextMatch."grpcomm1"."".0.noAuthNoPriv."read"
= INTEGER: prefix(2)
NET-SNMP-VACM-MIB::nsVacmContextMatch."grpcomm1"."".0.noAuthNoPriv."write"
= INTEGER: prefix(2)
NET-SNMP-VACM-MIB::nsVacmContextMatch."grpcomm1"."".0.noAuthNoPriv."notify"
= INTEGER: prefix(2)
NET-SNMP-VACM-MIB::nsVacmContextMatch."grpsnmpUser"."".3.authNoPriv."read"
= INTEGER: prefix(2)
NET-SNMP-VACM-MIB::nsVacmContextMatch."grpsnmpUser"."".3.authNoPriv."write"
= INTEGER: prefix(2)
NET-SNMP-VACM-MIB::nsVacmContextMatch."grpsnmpUser"."".3.authNoPriv."notify"
= INTEGER: prefix(2)
NET-SNMP-VACM-MIB::nsVacmViewName."grpcomm1"."".0.noAuthNoPriv."read"
= STRING: all
NET-SNMP-VACM-MIB::nsVacmViewName."grpcomm1"."".0.noAuthNoPriv."write"
= STRING: none
NET-SNMP-VACM-MIB::nsVacmViewName."grpcomm1"."".0.noAuthNoPriv."notify"
= STRING: none
NET-SNMP-VACM-MIB::nsVacmViewName."grpsnmpUser"."".3.authNoPriv."read"
= STRING: all
NET-SNMP-VACM-MIB::nsVacmViewName."grpsnmpUser"."".3.authNoPriv."write"
= STRING: all
NET-SNMP-VACM-MIB::nsVacmViewName."grpsnmpUser"."".3.authNoPriv."notify"
= STRING: all
NET-SNMP-VACM-MIB::nsVacmStorageType."grpcomm1"."".0.noAuthNoPriv."read"
= INTEGER: permanent(4)
NET-SNMP-VACM-MIB::nsVacmStorageType."grpcomm1"."".0.noAuthNoPriv."write"
= INTEGER: permanent(4)
NET-SNMP-VACM-MIB::nsVacmStorageType."grpcomm1"."".0.noAuthNoPriv."notify"
= INTEGER: permanent(4)
NET-SNMP-VACM-MIB::nsVacmStorageType."grpsnmpUser"."".3.authNoPriv."read"
= INTEGER: permanent(4)
NET-SNMP-VACM-MIB::nsVacmStorageType."grpsnmpUser"."".3.authNoPriv."write"
= INTEGER: permanent(4)
NET-SNMP-VACM-MIB::nsVacmStorageType."grpsnmpUser"."".3.authNoPriv."notify"
= INTEGER: permanent(4)
NET-SNMP-VACM-MIB::nsVacmStatus."grpcomm1"."".0.noAuthNoPriv."read"
= INTEGER: active(1)
NET-SNMP-VACM-MIB::nsVacmStatus."grpcomm1"."".0.noAuthNoPriv."write"
= INTEGER: active(1)
NET-SNMP-VACM-MIB::nsVacmStatus."grpcomm1"."".0.noAuthNoPriv."notify"
= INTEGER: active(1)
NET-SNMP-VACM-MIB::nsVacmStatus."grpsnmpUser"."".3.authNoPriv."read"
= INTEGER: active(1)
NET-SNMP-VACM-MIB::nsVacmStatus."grpsnmpUser"."".3.authNoPriv."write"
= INTEGER: active(1)
NET-SNMP-VACM-MIB::nsVacmStatus."grpsnmpUser"."".3.authNoPriv."notify"
= INTEGER: active(1)
And with numeric OIDs:
.1.3.6.1.4.1.8072.1.9.1.1.2.8.103.114.112.99.111.109.109.49.0.0.1.4.114.101.97.100
= INTEGER: prefix(2)
.1.3.6.1.4.1.8072.1.9.1.1.2.8.103.114.112.99.111.109.109.49.0.0.1.5.119.114.105.116.101
= INTEGER: prefix(2)
.1.3.6.1.4.1.8072.1.9.1.1.2.8.103.114.112.99.111.109.109.49.0.0.1.6.110.111.116.105.102.121
= INTEGER: prefix(2)
.1.3.6.1.4.1.8072.1.9.1.1.2.11.103.114.112.115.110.109.112.85.115.101.114.0.3.2.4.114.101.97.100
= INTEGER: prefix(2)
.1.3.6.1.4.1.8072.1.9.1.1.2.11.103.114.112.115.110.109.112.85.115.101.114.0.3.2.5.119.114.105.116.101
= INTEGER: prefix(2)
.1.3.6.1.4.1.8072.1.9.1.1.2.11.103.114.112.115.110.109.112.85.115.101.114.0.3.2.6.110.111.116.105.102.121
= INTEGER: prefix(2)
.1.3.6.1.4.1.8072.1.9.1.1.3.8.103.114.112.99.111.109.109.49.0.0.1.4.114.101.97.100
= STRING: all
.1.3.6.1.4.1.8072.1.9.1.1.3.8.103.114.112.99.111.109.109.49.0.0.1.5.119.114.105.116.101
= STRING: none
.1.3.6.1.4.1.8072.1.9.1.1.3.8.103.114.112.99.111.109.109.49.0.0.1.6.110.111.116.105.102.121
= STRING: none
.1.3.6.1.4.1.8072.1.9.1.1.3.11.103.114.112.115.110.109.112.85.115.101.114.0.3.2.4.114.101.97.100
= STRING: all
.1.3.6.1.4.1.8072.1.9.1.1.3.11.103.114.112.115.110.109.112.85.115.101.114.0.3.2.5.119.114.105.116.101
= STRING: all
.1.3.6.1.4.1.8072.1.9.1.1.3.11.103.114.112.115.110.109.112.85.115.101.114.0.3.2.6.110.111.116.105.102.121
= STRING: all
.1.3.6.1.4.1.8072.1.9.1.1.4.8.103.114.112.99.111.109.109.49.0.0.1.4.114.101.97.100
= INTEGER: permanent(4)
.1.3.6.1.4.1.8072.1.9.1.1.4.8.103.114.112.99.111.109.109.49.0.0.1.5.119.114.105.116.101
= INTEGER: permanent(4)
.1.3.6.1.4.1.8072.1.9.1.1.4.8.103.114.112.99.111.109.109.49.0.0.1.6.110.111.116.105.102.121
= INTEGER: permanent(4)
.1.3.6.1.4.1.8072.1.9.1.1.4.11.103.114.112.115.110.109.112.85.115.101.114.0.3.2.4.114.101.97.100
= INTEGER: permanent(4)
.1.3.6.1.4.1.8072.1.9.1.1.4.11.103.114.112.115.110.109.112.85.115.101.114.0.3.2.5.119.114.105.116.101
= INTEGER: permanent(4)
.1.3.6.1.4.1.8072.1.9.1.1.4.11.103.114.112.115.110.109.112.85.115.101.114.0.3.2.6.110.111.116.105.102.121
= INTEGER: permanent(4)
.1.3.6.1.4.1.8072.1.9.1.1.5.8.103.114.112.99.111.109.109.49.0.0.1.4.114.101.97.100
= INTEGER: active(1)
.1.3.6.1.4.1.8072.1.9.1.1.5.8.103.114.112.99.111.109.109.49.0.0.1.5.119.114.105.116.101
= INTEGER: active(1)
.1.3.6.1.4.1.8072.1.9.1.1.5.8.103.114.112.99.111.109.109.49.0.0.1.6.110.111.116.105.102.121
= INTEGER: active(1)
.1.3.6.1.4.1.8072.1.9.1.1.5.11.103.114.112.115.110.109.112.85.115.101.114.0.3.2.4.114.101.97.100
= INTEGER: active(1)
.1.3.6.1.4.1.8072.1.9.1.1.5.11.103.114.112.115.110.109.112.85.115.101.114.0.3.2.5.119.114.105.116.101
= INTEGER: active(1)
.1.3.6.1.4.1.8072.1.9.1.1.5.11.103.114.112.115.110.109.112.85.115.101.114.0.3.2.6.110.111.116.105.102.121
= INTEGER: active(1)
Now, let us pretend that we are concerned with the "nsVacmStatus" OID for each of these entries.
S3 has two options to properly index entries.
S3 can choose a variable-length index (with no length prefix). However, this provides S3 no insight as to the components of the index. There are no OIDs available to determine a proper name for any of the entries to enter into the system as objects.
S3 can explicitly define each index component, which allows S3 to reference each component individually to properly name objects.
The index composed of the following types of fields.
Example:
"grpcomm1"."".0.noAuthNoPriv."read"
String, (e.g., grpcomm1) - According to the MIB is the name of the group for this entry.
String, (e.g., "") - According to the MIB is the prefix that a name must match to gain access rights.
Integer, (e.g., 0) - According to the MIB is the security model in use. This roughly corresponds with the SNMP version (where 0 = any).
Integer, (e.g., noAuthNoPriv, which is, 1) - According to the MIB is the minimum level of security required to gain access rights.
String, (e.g., read) - According to the MIB is the type of processing to which to apply the specified view.
Given that, S3 has the following information:
• [INDEX] is 8.103.114.112.99.111.109.109.49.0.0.1.4.114.101.97.100.
• [INDEX]{0} is 8.103.114.112.99.111.109.109.49.
• [INDEX]{1} is 0.
• [INDEX]{2} is 0.
• [INDEX]{3} is 1.
• [INDEX]{4} is 4.114.101.97.100.
S3 looks to use the following information to name an object for a VACM entry.
Group group name [ matching prefix ] using {any version|security model }with security level , providing processing
The security level is an enumeration. S3 creates a variable with the appropriate textual representation for its value.
Necessary S3:
[securityLevel] = ( `[INDEX]{3}` == 1 ? 'noAuthNoPriv' : ( `[INDEX]{3}` == 2
? 'authNoPriv' : ( `[INDEX]{3}` == 3 ? 'authPriv' : '(unknown)' ) ) );
Name:
'Group '( $s `[INDEX]{0}` )( ($s `[INDEX]{1}`) ?? (' matching '($s `[INDEX]{1}`)) : '')
'using'( `[INDEX]{2}` ? `v[INDEX]{2}` : 'any version' )` with [securityLevel], providing`
( $s `[INDEX]{4}` )
Evaluates to:
Group grpcomm1 using any version with noAuthNoPriv, providing read
S3, revision 2
The first "Name" S3 is too long and is not very readable. In the second revision S3 assigns various parts of the name to variables and links them all in at the end.
Necessary S3:
[groupName] = ( $s `[INDEX]{0}` );
[matchText] = ( ($s `[INDEX]{1}`) ?? (' matching '($s `[INDEX]{1}`)) : '' );
[versionText] = ( `[INDEX]{2}` ? `v[INDEX]{2}` : 'any version' );
[securityLevel] = ( `[INDEX]{3}` == 1 ? 'noAuthNoPriv' : ( `[INDEX]{3}` == 2 ? 'authNoPriv' :
( `[INDEX]{3}` == 3 ? 'authPriv' : '(unknown)' ) ) );
[processingText] = ( $s `[INDEX]{4}` );
Name:
`Group [groupName][matchText] using [versionText] with [securityLevel], providing [processingText]`
Evaluates to:
Group grpcomm1 using any version with noAuthNoPriv, providing read
The end result is the same as before, but the name is easier to read and understand. The difference is that each component S3 is broken up into separate variables which allows the name to be a single interpolated string.
S3 evaluates OIDs. Evaluation must take place in the context of a certain SNMP agent.
S3 is used at the SNMP discover time for a particular device. All S3 statements are executed in the context of that device, meaning that every time an OID is encountered, the device is queried for its value, and that value is returned to the S3 statement.
The main purpose of S3 is to define ways to describe specific objects from a generic set of rules. As the SNMP discover script goes through the possible object types, for each one, it generates a list of individual object indexes for that object type. The rules for that object type are applied to each index that it encounters, generating a unique object per index.
The following SNMP Object Editor fields are evaluated, in order, for each object:
Variables
A mini S3 script generates variables for later use.
Variables generated:
(Any present)
Subtype expression
Determines the subtype of the object.
Variables generated:
[TYPE]: The numerical value of the subtype (if any).
[TYPE NAME]: The name of the subtype (if any).
[TYPE DESCRIPTION]: The description of the subtype (if any).
Assert expression
Skipped if an object does not pass the assert expression.
Should not define any variables.
Name expression
Uniquely identifies an object across the SNMP plugin for the device in question.
Should not define any variables.
Description expression
Should provide an informative description of the object. If not set then use the object type.
Should not define any variables.
Before any evaluation happens, the "[INDEX]" variable is set to the SNMP index of the current object. This is a vector variable; each index in the vector corresponds with each specific index key defined for this object type. Each of those could also be a vector. Because of the sequence in which the system variables are generated; S3 generates an error if a variable is used before it is generated.
The Expression field in the SNMP Indicator Editor for a particular indicator is also an S3 expression. Indicators should not set variables. The Maximum Value Expression field is also an S3 expression.
An indicator expression and maximum value expression can use any of the variables defined above for the object, including any user-defined variables in the Variables field.
This enables an indicator definition to get around any strange indexing (including out-of-order indexing) by using S3 to assemble the OID to poll as necessary.
Indicator expressions are unique because they are handled in a two pass system. The SNMP poller does not implement S3; it implements a simple mathematical library. Any OIDs present in the data that is passed to the poller must be fully expanded with their index information. To accomplish this, two passes are used on the indicator expression.
The text-conversion functions of S3 does not work in either pass.
First pass
The first pass is an expansion pass. It expands any OID encountered by adding the full index value to the end of it. This is equivalent to having every OID end in ".[INDEX]". The result of this pass is saved (no real values should be generated).
Second pass
The second pass then evaluates (normally) the results of the first pass. If this pass results in a numeric value, then the indicator is presumed to exist. The results of the first pass are stored for use by the poller.
It is important to use standard mathematical expressions (and not the extra S3 operations) to perform indicator expressions. These expressions must conform to normal mathematical rules (for example, you cannot have two expressions next to each other with no joining operator). These expressions may include the following operators:
/ + -
And the following grouping symbols:
( )
Note: It is possible to get around the OID expansion in the first pass. The entire results of the evaluated first pass are passed to the second pass. Any text in the first pass does not have its quotes in the second pass. Thus, an OID may be quoted and used exactly as quoted in the second pass. The whole first pass could be quoted to prevent S3 from taking any intelligent action.
Example
To have every interface report, as an indicator, the total number of interfaces on the device (multiplied by 10), the following indicator expression does not work:
ifNumber.0 * 10
"ifNumber.0" is expanded with the default index, which in this case could be ".2", for example (yielding "ifNumber.0.2", which is not the desired outcome):
ifNumber.0.2 * 10
However, the following tricks the system into accepting the OID:
`ifNumber.0` * 10
This yields:
ifNumber.0 * 10
This is the desired outcome.
Pass 1
OIDs are expanded.
Text is unquoted.
Pass 2
Pass 1 is evaluated.
Notes:
Do not use text-conversion functions.
The following lists the first 128 ASCII values and their corresponding character value.
SNMP version 2 is common and includes 64-bit counters and newer MIBs. SNMP version 3 is the newest but it is not widely supported and you should use SNMP version 1 only when necessary.
You may not see an interface because SevOne NMS cannot SNMP walk the device due to an incorrect community string. Perform the following steps to verify the SNMP community strings for the device are correct.
Go to the Device Manager.
- Click next to the device to edit to display the Edit Device page for the device in question.
On the SNMP plugin, verify the community string and SNMP version are correct.
If they are correct, log on to the device and enter the following command to walk the device: snmpwalk -v<version> -c<community string> <ip address> (If the SNMP version is 2c, use 2 for the version.)
If the command fails, then SevOne NMS cannot SNMP walk the device. Try to walk the device from another location to ensure that the device is properly configured.
Common reasons for not being able to SNMP walk a device include:
Routing - There is no route from SevOne NMS to the device.
Firewall - A router between SevOne NMS and the device blocks SNMP traffic.