Check SNMP data

Script: check_snmp_data

check_snmp_data is a plugin for fetching performance data with a set of given OIDs.

It can handle current values (i.e. load / cpu usage / disc usage) and counter values (i.e. network io).

Requirements

  • snmpget
  • snmpwalk

Standalone installation

From this repository you need next to this script:

  • inc_pluginfunctions shared function for all IML checks written in bash
  • check_snmp_includes with a shared snmp config reader

Syntax

Start the script without parameter to get the help.

______________________________________________________________________

CHECK_SNMP_DATA
v1.1

(c) Institute for Medical Education - University of Bern
Licence: GNU GPL 3

https://os-docs.iml.unibe.ch/icinga-checks/Checks/check_snmp_data.html
______________________________________________________________________

SNMP performance data of Synology storages.

USAGE:
    check_snmp_data [options] -h SNMPTARGET

PARAMETERS:
    -a STRING
        authentication params for snmpwalk/ snmpget to connect to target; 
        default: \"-v2c -c public\" (Snmpv2 with community string \"public\")
    -h SNMPTARGET
        as fqdn or ip address; default: localhost
    -f FILE
        read authentication from config file
        default: "/etc/icinga2/snmp.cfg"
    -m  METHOD
        what to show; METHOD is one of ...
            about      About... general device infos                     
            cpu        CPU usage                                         
            load       System load                                       
            mem        Memory status                                     
            netio      Network IO                                        
            synodisc   Synology Disc usage                               
            synotemp   Synology NAS temperature                          
            synoio     Synology Space IO                                 
    -v  verbose output

CONFIG FILE:
    The config file can be multiline and has the syntax
    [SNMPTARGET[,target2]]:[auth parameters]
    The auth parameters set the version and all needed values to connect.
    Snmp v2 uses a community string.
    Snmp v3 is highly recommended (you should disable Snmp v2) and needs
    a user and password.

EXAMPLE:
    check_snmp_data -h 192.168.100.12 -v -m cpu

Examples

Get values

./check_snmp_data -h 192.168.100.12 -v -m cpu

Shows the current cpu usage of host 192.168.100.12. The output is something like that:

OK: SNMP performance data :: CPU usage 
cpu-user       0 %
cpu-system     0 %
cpu-idle       99 %

 |cpu-user=0;;;0; cpu-system=0;;;0; cpu-idle=99;;;0;

The 3 lines with values starting from line 2 are written with -v option only.

The performance data (last line) always will be sent.

Get counter data

./check_snmp_data -h 192.168.100.12 -v -m netio

If there is a check with counter data using -v option you see the counter value and the delta speed. It is calculated by

              [current_counter] - [last_counter]
delta_speed = ----------------------------------
                time_since_last_check_in_sec

The output looks like that:

OK: SNMP performance data :: Network IO (experimental) 
in             total: 2669086814     delta:      1  per sec
out            total: 2212665608     delta:      0  per sec

 |in=1;;;0; out=0;;;0;

Configuration

check_snmp_data is a Bash script. If you open / view it you see a DATA section as comment lines on the top.

It starts with a short description:

# SYNTAX:
# label    --> DATA:[method]:label:[text]
# n x data --> DATA:[method]:data:[perf-label]:[oid]:[optional unit]

… followed by the configuration data of the checks.

#
# DATA:cpu:label:CPU usage
# DATA:cpu:data:cpu-user:1.3.6.1.4.1.2021.11.9.0:%
# DATA:cpu:data:cpu-system:1.3.6.1.4.1.2021.11.10.0:%
# DATA:cpu:data:cpu-idle:1.3.6.1.4.1.2021.11.11.0:%

To fetch configuration data the text in $0 is grepped by ^# DATA:.

There is a single line with label to define a short description of the check.

There can be severeal lines with data to define the values to get. Each data line must have a uniq label within the same check.

SNMP authentication configuration

In a configuration file you can put the authentication parameters for snmpget and snmpwalk.

By default it reads /etc/icinga2/snmp.cfg - but you can use -f FILENAME to override it.

sudo cat /etc/icinga2/snmp.cfg 
#
# snmp-connections
# SYNTAX: [hostname]:[params]
#
DEFAULT:-v 2c -c public
server-01.example.com:-v 3 -l authnoPriv -a SHA -u imlmonitor -A password-for-server-01
server-02.example.com:-v 3 -l authnoPriv -a SHA -u imlmonitor -A password-for-server-02