Zabbix: Template Linux SNMP Process Monitoring with Discovery
Aus znilwiki
Changelog:
- 18.10.2022 erste öffentliche Version
Vorwort
Bei einem Kunden wurde Zabbix neu eingeführt. Unter anderem musste ich auf diversen Linux-Systemen auch überwachen ob bestimmte Prozesse laufen / Dienste gestartet sind.
Darunter waren auch ein paar echt alte Systeme auf denen ich den Zabbix-Agenten nicht mehr nachinstallieren konnte weil es keine Quellen mehr gab (usw.).
Glücklicherweise hatte jemand überall SNMP mit installiert, in den meisten Fällen den Dienst sogar für den automatischen Start konfiguriert.
Also habe ich mich auf die Suche begeben wie man auch laufende Prozesse per SNMP überwachen kann.
Jeden Prozess den man so überwachen will muss man lokal in der snmpd.conf
eintragen, dieses Template erkenn automatisch alle dort eingetragenen Prozesse und baut die entsprechenden Items und Trigger. Mehr als das Eintragen (und Neustarten des snmpd Dienstes) muss man also nicht machen.
Vorbereitung auf dem Host
Neben der Voraussetzung das der Zugriff per SNMP im allgemeinen funktionieren muss, müsst Ihr jeden gewünschten Prozess in die Datei
/etc/snmp/snmpd.conf
eintragen. Ich gehe immer ganz an das Ende und füge für jeden Prozess eine Zeile hinzu, zum Beispiel
proc httpd2-prefork proc mysqld proc java proc mailman proc master
In der Regel nehme ich dort Prozesse auf die "irgendetwas machen" und auf irgendeinen Port lauschen. Die lassen sich leicht per
netstat -tulpn | grep LISTEN
oder
ss -tulwpn | grep LISTEN
ermitteln:
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 5333/java tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4040/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 4164/master tcp 0 0 127.0.0.1:32000 0.0.0.0:* LISTEN 5333/java
aber jeder andere Prozessname geht natürlich auch.
Die laufenden Dienste bekommt Ihr mit
systemctl --type=service
nachdem Ihr die Prozesse eingetragen habt müsst Ihr den Dienst neu starten:
service snmpd restart systemctl restart snmpd
je nach System.
Template importieren
Für Zabbix 6.0: Datei:Znil Template Linux SNMP Process Monitoring with Discovery.zip
Nachdem Importieren findet Ihr das Template in der Gruppe
Templates/znil.net
unter dem Namen
znil Template SNMP Process Monitoring with Discovery
Weist das Template nun einen Host mit konfigurierten SNMP-Interface zu und wartet ab. Die Erkennung startet alle 15 Minuten.
Screenshots
Latest Data:
Items:
Trigger:
Wie funktioniert das?
Sobald man einen proc xxx
Eintrag in die /etc/snmp/snmpd.conf
setzt, generiert der SNMPD Dienst für jeden dieser Prozesse diverse Counter unter der OID
1.3.6.1.4.1.2021.2.1.1
zum Beispiel:
UCD-SNMP-MIB::prIndex.7 = INTEGER: 7 UCD-SNMP-MIB::prNames.7 = STRING: httpd2-prefork UCD-SNMP-MIB::prMin.7 = INTEGER: 0 UCD-SNMP-MIB::prMax.7 = INTEGER: 0 UCD-SNMP-MIB::prCount.7 = INTEGER: 11 UCD-SNMP-MIB::prErrorFlag.7 = INTEGER: noError(0) UCD-SNMP-MIB::prErrMessage.7 = STRING: UCD-SNMP-MIB::prErrFix.7 = INTEGER: noError(0) UCD-SNMP-MIB::prErrFixCmd.7 = STRING:
Hier laufen also 11 Prozesse des Apache Webservers (auf einem Red Hat Enterprise Servers).
Das Template war die Gelegenheit das Discovery per SNMO zu erlernen - das Geheimnis liegt im Index den man dann in allen weiteren Abfragen / bei den Items weiterverwenden muss.