check_snmp_cisco_cat ist ein über mehrere Jahre gewachsenes Bash-Script zur Überwachung von Cisco Catalyst Switches. Wurden anfangs nur die Auslastung der Interfaces, CPU und Memory überwacht kamen später weite Abfragen meist ohne Eskalationsschwellwerte hinzu. Diese dienen zur Visualisierung der Auslastungsentwicklung (z.B. Interface Error/Discards) sowie zur Anzeige der Netz-Konfiguration (CDP, Port-Channel etc.).
was das Script leistet
Folgende Parameter sollen überwacht und auf Wunsch – per Option zuschaltbar – eskaliert werden:
- Port-Channel-Members
- Critical bei Status eines Port-Channel-Members Admin:Up und Oper: Down
- CPU
- Memory
Folgende Informationen sollen gesammelt und angezeigt werden.
- CDP-Informationen
- IOS-Version
- Uptime
- Port Description
- Port Konfiguration (switched/routed, VLAN, Mode Trunk)
- Port Status (Admin/Oper)
Folgende Informationen sollen per RRD archiviert und Angezeit werden
- CPU
- Memory
- Interface In/Out Bytes
- Interface Errors
- Interface Discards
- Interface Broadcasts
- Interface Multicasts
Besonderheiten
Aus Performancegründen wurde schon in der ersten Version zuerst ein Index aller Interfaces eines Switches erstellt. Dieser Index wird lokal auf dem Nagios-Server in einer Datei pro Device (optimalerweise auf einer RAM-Disk) gespeichert Die jeweilige Datei wird entsprechend der IP-Adresse des Switches benannt. Um die Systemlast durch die immer weiter gestiegene Anzahl der SNMP-Abfragen zu verringen wurden in folgenden Scriptversionen die Abfragen aufgeteilt und weniger dynamische Werte auch in die Index-Datei verlegt. Eine zentrale Rolle hat dabei der Info-Check der Index-Dateien die älter als 15 min (Default-Einstellung) sind neu erstellt. Aus dieser Index-Datei bezieht die Funktion für die Interface-Checks die eindeutigen Daten zu jedem Interface. In dieser Datei werden folgende Informationen gespeichert:
IF-MIB::ifDescr
- der Interface-Name z.B. GigabitEthernet1/0/1
- hat nichts mit der description in der Interface-Konfiguration zu tun (ein Hoch auf die Cisco-Logik)
IF-MIB::ifAlias
- entspricht der description in der Interface-Konfiguration
IP-MIB::ipAdEntIfIndex
- IP – IF mapping
CISCO-SMI::ciscoMgmt.68.1.2.2.1.2
- VLAN-mapping
CISCO-SMI::ciscoMgmt.23.1.2.1.1.6
- CDP Device-Name (cdpCacheDeviceId)
CISCO-SMI::ciscoMgmt.23.1.2.1.1.7
- CDP Device-Port (cdpCacheDevicePort)
WICHTIG:
Daraus folgt natürlich dass vor dem ersten Interface-Check der Info-Check ein erstes mal ausgeführt worden sein muss. Am besten in dem der Check vor den Interface-Checks angelegt wird.
Benutzung
Usage: check_snmp_cisco_cat -H <IP-address> -C <snmp community string> -e <object> [-w <warning_level> -c <critical_level>] FIRST RUN "check_snmp_cisco_cat -H <IP-address> -C <snmp community string> -e info" for creating interface-index the other checks won't work. Options: -H <IP-address> -C <snmp community string> -e <object> available objects: [check_cpu] (% warning and critical level possible) [check_memory] (% warning and critical level possible) [check_connections] (number of warning and critical connections possible) [check_interface] (number of warning and critical bandwith-usage possible) -i <interface-name> interface-name is something like GigabitEthernet3/16 -x <minutes> max age for interfaces index- cache-file in minutes [check_fan] Fan status [check_power] Power supply status [check_temp] Temperature status [info] System-Infos (Hostname, System-Type, Uptime) -w <warning_level> (not used by any check) -c <critical_level> (not used by any check) -E <1> activate port-status escalation (port down = return CRITICAL) -h, --help -v, --version
check_snmp_cisco_cat wurde u.a. mit folgenden Cisco Switches getestet:
- C3750E, Version 12.2(55)SE3, Version 12.2(58)SE2), Version 15.2(1)E
- C3750, Version 12.2(35)SE1, Version 12.2(55)SE1, Version 12.2(55)SE5
- Catalyst 4500 L3, Version 12.2(54)SG1 und Version 12.2(40)SG
- C3560, Version Version 12.2(25)SEE, Version 12.2(50)SE1, Version 12.2(55)SE4, Version 15.0(2)SE
- C2960S, Version 12.2(58)SE2
- CIGESM-I6Q4L2-M, Version 12.1(22)EA9 (IBM BladeCenter)
Download: check_snmp_cisco_cat.sh