Nagios check_procs meldet keine Prozesse, die nicht von Root gestartet wurden

Nagios check_procs meldet keine Prozesse, die nicht von Root gestartet wurden

Ich versuche, Nagios so einzurichten, dass es den Nginx-Dienst auf meinem Load Balancer überwacht, aber es ist mir nicht gelungen, es so einzurichten, dass es anzeigt, dass der Dienst aktiv ist. Die Befehls- und Dienstdefinition finden Sie weiter unten. Es scheint, dass jeder Prozess, der nicht von Root gestartet wird, nicht als ausgeführt angezeigt wird. Der Nginx-Prozess wird von www-data ausgeführt. Ich habe sogar etwas so Einfaches versucht, wie es nach dem „Top“-Prozess suchen zu lassen, den ich unter einem anderen Benutzer ausgeführt habe. Was ich unten dargestellt habe, funktioniert einwandfrei, solange ich einen Prozess auswähle, der von Root ausgeführt wird. Wenn der Prozess von einem anderen Benutzer gestartet wird, wird er als kritisch angezeigt und funktioniert nicht. Irgendwelche Ideen?

    define command {
        command_name    check_nginx
        command_line    $USER1$/check_procs -c 1: -C nginx
}


define service {
   use                  local-service
   host_name            my_host
   service_description  Load Balance Service
   check_command        check_nginx
}

Antwort1

Nachdem ich alle verschiedenen Optionen des check_proc-Plugins ausprobiert hatte und nicht weiterkam, entschied ich mich für einen anderen Weg. Ich erstellte das folgende Python-Skript und fügte es in das Plugin-Verzeichnis ein. Der Name des Python-Skripts lautet check_service.py. Wenn Sie ihm einen anderen Namen geben, müssen Sie die folgenden Dienste und Befehle entsprechend ändern.

   import os

status = os.system('systemctl is-active --quiet nginx')
if status == 768:
  print('Critical, Service is not running')
  exit(2)
elif status == 0:
 print('OK, Service is Running')
 exit(0)

Ich habe dann den folgenden Befehl zur Datei commands.cfg hinzugefügt. Das $ARG1$ ist für eine zukünftige Version des Skripts, an dem ich arbeite, vorhanden. Es ist nicht erforderlich.

define command{
    command_name    check_service
    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_service $ARG1$
    }

Definierte den Dienst wie folgt

define service {
    use                             local-service
    host_name                       debian
    service_description             Load Balance Service
    check_command                   check_service
    }

Dann habe ich auf dem Client diesen Befehl zur Datei nrpe.cfg hinzugefügt

command[check_service]=python3 /usr/lib/nagios/plugins/check_service.py

Hoffe, dass dies irgendwann jemandem hilft.

verwandte Informationen