SNMP-Monitoring mit Zabbix, also SNMP-Geräte mit Zabbix zu überwachen, geht „eigentlich“ ganz einfach:
- Host in Zabbix anlegen.
- SNMP-Read-Community in den Macros eintragen.
- „SNMP interfaces“ IP-Nummer und/oder DNS-Name eintragen.
- Template „Template SNMP OS Linux“ (oder eine passendes anderes SNMP-Template) zuordnen.
Fertig. Das Template enthalt Low-Level-Discoveries, um z.B. interfaces zu überwachen (Traffic und „operational state“).
Theoretisch war’s das. Praktisch klappt das mit der Namensauflösung (SNMP-Mib-Mapping) nicht auf Anhieb. Hier ist beschrieben, wie es funktionieren könnte. Im Wesentlichen soll man das Package snmp-mibs-downloader
installieren. Das hat aber bei mir auch nicht geholfen. Ich bekam immer massig dieser Fehler:
Unlinked OID in IPATM-IPMC-MIB: marsMIB ::= { mib-2 57 }
Undefined identifier: mib-2 near line 18 of /usr/share/mibs/ietf/IPATM-IPMC-MIB
Bad operator (INTEGER): At line 73 in /usr/share/mibs/ietf/SNMPv2-PDU
Expected "::=" (RFC5644): At line 493 in /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
Expected "{" (EOF): At line 651 in /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
Bad object identifier: At line 651 in /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
Bad parse of OBJECT-IDENTITY: At line 651 in /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
SNMPv2-MIB::sysDescr.0 = STRING: Linux EAP110-Outdoor 2.6.31 #1 PREEMPT Wed Nov 9 16:01:56 CST 2016 mips
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.11863.3.2.10
DISMAN-EXPRESSION-MIB::sysUpTimeInstance = Timeticks: (1215754) 3:22:37.54
SNMPv2-MIB::sysContact.0 = STRING: dirk@wor.net
SNMPv2-MIB::sysName.0 = STRING: eap1
SNMPv2-MIB::sysLocation.0 = STRING: m
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (10) 0:00:00.10
SNMPv2-MIB::sysORID.1 = OID: TCP-MIB::tcpMIB
...
Folgendes musste ich (in meinem Dockerfile) machen, damit alles klappt:
- Packages
snmp
undsnmp-mibs-downloader
installieren. - Lookup-Path für MIBs setzen:
ENV MIBDIRS=/usr/share/snmp/mibs:/var/lib/zabbix/mibs:/usr/share/mibs/ietf:/usr/share/mibs/iana
- MIB-Lookup aktivieren (so wie im genannten Link beschrieben, aber hier in Docker-Syntax:
RUN sed -i 's/^\( *mibs *:.*\)$/# \1/g' /etc/snmp/snmp.conf
- Fehlerhafte MIBs löschen:
RUN rm /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB && \ rm /usr/share/mibs/ietf/SNMPv2-PDU && \ rm /usr/share/mibs/ietf/IPATM-IPMC-MIB
- MIB-Lookup „Testlauf“. Dieser scheint zu bewirken, dass Caches (o.ä.) eingerichtet werden:
RUN snmptranslate .iso.3.6.1.6.3.1.1.5.3
Alles zusammen findet sich in meinem Dockerfile auf github bzw. im Dockerhub dsteinkopf/zabbix-server-mysql-no-fping6. Damit klappt es dann tatsächlich so einfach wie oben beschrieben.
Als Ergebnis kann man dann z.B. so einen Graph erstellen: