check_snmp

icinga 2 monitoring script for snmp with regex support

check_snmp

Provides SNMP checks using warning / critical limits for integer results or regexes. Supports performance data.

Script

  Usage: check_snmp [OPTIONS]
  [OPTIONS]

  -p PORT            Port to send the snmp request to (default: 161)
  -N COMMUNITY       SNMP community name (default: public)
  -H HOST            Hostname to send SNMP queries to
  -o OID             SNMP OID to query
  -V VERSION         SNMP Version (default: 2)
  -M MORE            When using -V 3, pass all required snmpget parameters
                     with -M, i.E. "-u user -a MD5 -A 72d0815....D38 -x AES"

  -w WARNING         Defines limit for WARNING
  -c CRITICAL        Defines limit for CRITICAL

  -W WARNING REGEX   If regex matches WARNING will be returned
  -C CRITICAL REGEX  If regex matches CRITICAL will be returned

Notes:

  • You can either set limits (-w & -c) OR regexes (-W & -C)
  • Setting limits and regexes, regexes will be used
  • When using regexes, the performance data won't include warning / critical limits
  • When setting a warning limit that is smaller than the critical limit, a GREATER THAN will be used to evaluate the result
  • When setting a critical limit that is smaller than the warning limit, a LESS THAN will be used to evaluate the result

Example usage of the script:

# (1) If result is bigger than 4, return warning, bigger than 7, return critical
./check_snmp.sh -H 192.168.200.101 -o iso.3.6.1.2.1.25.4.2.1.6.11391 -w 4 -c 7
CRITICAL: '5' is bigger than warning limit '$critical'

# (2) If result is smaller than 4, return warning, smaller than 2, return critical (since -w > -c)
./check_snmp.sh -H 192.168.200.101 -o iso.3.6.1.2.1.25.4.2.1.6.11391 -w 4 -c 2
CRITICAL: '5' is bigger than warning limit '$critical'

# (3) If result is between 1-3, return warning, between 4-99 return critical
./check_snmp.sh -H 192.168.200.101 -o iso.3.6.1.2.1.25.4.2.1.6.11391 -W [1-3] -C [4-99]
WARNING: Result value '2' matches warning regex '[1-3]'

# (4) If result string is a Pentium CPU, return warning, if a Xeon CPU, return critical
./check_snmp.sh -H 192.168.200.101 -o iso.3.6.1.2.1.25.3.2.1.3.1 -l "Pentium" -h "Intel.*Xeon.*"
CRITICAL: Result value 'Intel(R) Xeon(R) CPU E5-1680 v2 @ 3.00GHz' matches critical regex 'Intel.*Xeon.*'

# (5) SNMPv3, see -M providing multiple command line arguments passed straight on
./check_snmp.sh -H 192.168.200.102 -o so.3.6.1.2.1.25.4.2.1.6.11391 -V 3 -w 4 -c 7 -M "-u user -a MD5 -A 72...D38 -x AES"

Icinga 2

Usage in your hosts file:

# (1)
object Host "mailserver.local" {
  check_command = "check-snmp"
  address = "192.168.200.101"
  vars.csnmp_oid = "iso.3.6.1.2.1.25.4.2.1.6.11391"
  vars.csnmp_warning = "4"
  vars.csnmp_critical = "7"
}
# (3)
object Host "mailserver.local" {
  check_command = "check-snmp"
  address = "192.168.200.101"
  vars.csnmp_oid = "iso.3.6.1.2.1.25.4.2.1.6.11391"
  vars.csnmp_community = "communityname"
  vars.csnmp_port = 1234
  vars.csnmp_warning_regex = "[1-3]"
  vars.csnmp_critical_regex = "[4-99]"
}

See the provided commands.conf for the Icinga command definition of "check-snmp".