LogicMonitor seeks to disrupt AI landscape with $800M strategic investment at $2.4B valuation to revolutionize data centers.

Learn More

Groovy SNMP Access

Last updated on 08 October, 2024

For some types of SNMP monitoring, you’ll need to resort to Groovy to get at your SNMP data. For example, a typical use case is a DataSource that requires aggregation of SNMP values across various nodes.

A complete reference of LogicMonitor’s Groovy SNMP methods can be found at the bottom of this page, but here are a few examples to demonstrate how this feature works.

Example 1 – Obtain a device’s sysDescr using SNMP v1/v2c

// import the logicmonitor snmp helper class
import com.santaba.agent.groovyapi.snmp.Snmp;

// get the snmp host from the device properties
def host = hostProps.get('system.hostname');

// retrieve the value for the specified OID
def oid_value = Snmp.get(host, ".1.3.6.1.2.1.1.1.0");

// output the value
println oid_value;

// return with a response code that indicates we ran successfully
return (0);

This script will output something like the following:

Linux localhost.localdomain 2.6.18-194.26.1.el5 #1 SMP Tue Nov 9 12:54:40 EST 2010 i686

Example 2 – List all Network interfaces of a Linux Device using SNMP v1

// import the logicmonitor snmp helper class
import com.santaba.agent.groovyapi.snmp.Snmp;

// get the snmp host & community from the device properties
def host = hostProps.get('system.hostname');
def comm = hostProps.get('snmp.community');

// walk the oid tree
def snmp_walk = Snmp.walk(host, comm, "v1", ".1.3.6.1.2.1.2.2.1.2");

// display the raw output
println "Raw output from Snmp.walk:\n" + snmp_walk;

// display each network interface
println "\nNICs:"

// iterate over each line returned by the oid tree
snmp_walk.eachLine 
{ line ->
    // tokenize the line, separating the leaf oid from its value
    tokens = line.split(/ = /, 2);

    // print the value
    println tokens[1];
}

// return with a response code that indicates we ran successfully
return (0);

The output from the above looks something like:

Raw output from Snmp.walk:
.1.3.6.1.2.1.2.2.1.2.3 = sit0
.1.3.6.1.2.1.2.2.1.2.2 = eth0
.1.3.6.1.2.1.2.2.1.2.1 = lo

NICs:
sit0
eth0
lo

Example 3 – List all Network Interfaces of a Linux Device using SNMP v3

// import the logicmonitor snmp helper class
import com.santaba.agent.groovyapi.snmp.Snmp;

// get the snmp host from the device properties
def host = hostProps.get('system.hostname');

// populate a hashmap of snmpv3 parameters as key/value pairs
snmp_options = new HashMap();
snmp_options.put("snmp.version","v3");
snmp_options.put("snmp.security","LogicMonitor");
snmp_options.put("snmp.auth","MD5");
snmp_options.put("snmp.authToken","exampleauth");
snmp_options.put("snmp.priv","DES");
snmp_options.put("snmp.privToken","examplepriv");

// do the snmp walk
def snmp_walk = Snmp.walk(host, ".1.3.6.1.2.1.2.2.1.2", snmp_options, 3000)

// do something with the output...

The above script behaves just like the preceding example, but uses SNMP v3 authentication & encryption.

SNMP Method Reference

SNMP v1/v2

Snmp.get(host, [community], [version], oid, [timeout]) – get a single SNMP OID value from a v1 or v2 agent

  • @param string host – device hostname or ip address
  • @param string community – optional snmp community name. If omitted, LogicMonitor will attempt to determine the appropriate value from the snmp.community property on the corresponding device record and otherwise default to “public”
  • @param string version – optional snmp version; required only if community is provided. If omitted, LogicMonitor will attempt to determine the appropriate value from the snmp.version property on the corresponding device record
  • @param string oid – the snmp oid to query
  • @param int timeout – connection timeout in milliseconds
  • @return string oid_value the value of this SNMP OID as returned by the agent

Snmp.walk(host, [community], [version], tree_oid, [timeout], port) – walk an SNMP OID tree from a v1 or v2 agent

  • @param string host – device hostname or ip address
  • @param string community – (optional) snmp community name. If omitted, LogicMonitor will attempt to determine the appropriate value from the snmp.community property on the corresponding device record and otherwise default to “public”
  • @param string version – (optional) snmp version; required only if community is provided. If omitted, LogicMonitor will attempt to determine the appropriate value from the snmp.version property on the corresponding device record
  • @param string tree_oid – the snmp tree oid to walk
  • @param int timeout –  (optional) connection timeout in milliseconds
  • @return string walk_output the OIDs and values returned by the SNMP walk separated by “=” with one entry per line
  • @param string port– (optional) the port to which you want access.

SNMP v3

Snmp.get(host, oid, [options], [timeout]) – get a single SNMP OID value from a v3 agent

  • @param string host – device hostname or ip address
  • @param string oid – the snmp oid to query
  • @param map options – optional snmp v3 options map name. If omitted, LogicMonitor will attempt to determine the appropriate values from properties on the device record matching the hostname supplied in the first parameter.
  • @param int timeout – connection timeout in milliseconds
  • @return string oid_value the value of this SNMP OID as returned by the agent

Snmp.walk(host, tree_oid, [options], [timeout]) – walk an SNMP OID tree from a v3 agent

  • @param string host – device hostname or ip address
  • @param string tree_oid – the snmp tree oid to walk
  • @param map options – optional snmp v3 options map name. If omitted, LogicMonitor will attempt to determine the appropriate values from properties on the device record matching the hostname supplied in the first parameter.
  • @param int timeout – connection timeout in milliseconds
  • @return string walk_output the OIDs and values returned by the SNMP walk separated by “=” with one entry per line
  • @param string port– (optional) the port to which you want access.

The SNMP v3 options map requires the following parameters:

  • snmp.version – the version used (v3)
  • snmp.security – the snmp v3 security name
  • snmp.auth – the snmp v3 authentcation type (MD5|SHA)
  • snmp.authToken – the snmp v3 authentcation passphrase
  • snmp.priv – the snmp v3 privacy type (AES|DES)
  • snmp.privToken – the snmp v3 privacy encryption key
In This Article