Aktionen

Zabbix: Template Linux SNMP Process Monitoring with Discovery: Unterschied zwischen den Versionen

Aus znilwiki

Zeile 21: Zeile 21:
In der Regel nehme ich dort Prozesse auf die "irgendetwas machen" und auf irgendeinen Port lauschen. Die lassen sich leicht per
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
  netstat -tulpn | grep LISTEN
oder
ss -tulwpn
ermitteln:
ermitteln:
  tcp        0      0 0.0.0.0:8081            0.0.0.0:*              LISTEN      5333/java
  tcp        0      0 0.0.0.0:8081            0.0.0.0:*              LISTEN      5333/java
Zeile 32: Zeile 34:
je nach System.<br>
je nach System.<br>
----
----
==Template importieren==
==Template importieren==
Für Zabbix 6.0: <big>[[Datei:Znil_Template_Linux_SNMP_Process_Monitoring_with_Discovery.zip|Znil_Template_Linux_SNMP_Process_Monitoring_with_Discovery.zip]]</big><br>
Für Zabbix 6.0: <big>[[Datei:Znil_Template_Linux_SNMP_Process_Monitoring_with_Discovery.zip|Znil_Template_Linux_SNMP_Process_Monitoring_with_Discovery.zip]]</big><br>

Version vom 18. Oktober 2022, 10:20 Uhr

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

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.
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:

ClipCapIt-221018-100710.PNG

Items:

ClipCapIt-221018-100825.PNG

Trigger:

ClipCapIt-221018-100825.PNG

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.


Kommentare

Loading comments...