GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Dienststatus kontinuierlich im Auge behalten?

Ich muss den Status von nagios überwachen service (Denn immer wenn ich Änderungen an der Konfiguration vornehme und die neue Konfiguration anwende, würde ich nagios finden Dienst angehalten).
Wenn der Status „angehalten“ gefunden wird, sollte er automatisch gestartet werden.

Ich habe versucht, ein kleines Shell-Skript zu schreiben und es zu cron hinzugefügt , aber festgestellt, dass das Skript jedes Mal ausgeführt wird, selbst wenn der Dienst ausgeführt wird. Das Skript lautet:

#!/bin/bash

service nagios status | grep running

if [ $? -ne 0 ]
then
        service nagios start
fi

Immer wenn der Dienst im Zustand „gestoppt“ ist, wird die Ausgabe von service nagios status zeigt No lock file found in /usr/local/nagios/var/nagios.lock . Soll ich die /usr/local/nagios/var/nagios.lock überwachen Datei mit inotify-tools oder gibt es eine bessere Alternative dazu?

Akzeptierte Antwort:

Gibt es eine bessere Alternative dazu?

Ja. Verwenden Sie einen geeigneten Dienstmanager und verwerfen Sie /etc/init.d/nagios Skript. Bestenfalls verwenden Sie ein System 5 rc Skript im Kompatibilitätsmodus unter so etwas wie upstart oder systemd, in diesem Fall erhalten Sie einige der nützlichen Dienstverwaltungsmechanismen nicht, die im Kompatibilitätsmodus nicht verfügbar sind, da diese Person bei AskFedora dies nicht getan hat. Im schlimmsten Fall führen Sie Dinge unter System 5 rc aus und Sie haben nicht wirklich die Hoffnung, mit diesem Skript halbwegs anständiges Service-Management zu betreiben.

Es gibt viele Service-Management-Systeme. Ich werde nicht auf die Details der Installation eingehen, da dies den Rahmen dieser Antwort sprengen würde. Stattdessen konzentriere ich mich einfach darauf, wie man den Nagios-Dæmon in ihnen zum Laufen bringt.

Die daemontools Familie

Die daemontools Familie von Service-Management-Toolsets umfasst:

  • Daemontools von Dan Bernstein
  • Adam Sampsons Freilassung
  • Bruce Guenters Daemontools-Zugabe
  • Laurent Bercots s6
  • Meine Nase
  • Gerrit Papes Runit
  • Wayne Marshalls Täter

Das Wichtigste, was Sie hier brauchen, ist ein Programm, das zum Dæmon wird. Für Nagios ist dies ein 2- oder 3-Liner. Man kann die Toolsets mischen und anpassen. Hier sind einige geeignete Zweizeiler, die verschiedene Toolsets verwenden:

  • Ein run Datei mit dem Nosh-Toolset:
    #!/bin/nosh
    setuidgid nagios
    nagios

    und ein restart Datei, die einen bedingungslosen automatischen Neustart verursacht:

    #!/bin/sh
    exec true

    Nur zum Spaß habe ich nosh ein vorgefertigtes Service-Bundle für Nagios hinzugefügt, das in Version 1.13 verfügbar sein wird, das ist so ziemlich das mit ein paar Standard-Schnickschnack wie Abhängigkeitsinformationen.

  • Ein run Datei mit dem Runit-Toolset:
    #!/bin/sh -e
    exec chpst -u nagios nagios
  • Ein run Datei mit dem s6-Toolset:
    #!/command/execlineb -P
    s6-setuidgid nagios
    nagios
  • Ein run Datei mit den Toolsets daemontools, daemontools-encore oder freedt:
    #!/bin/sh -e
    exec setuidgid nagios nagios
  • Eine rc.main Datei mit dem Perp-Toolset:
    #!/bin/sh -e
    exec 2>&1
    start() { exec runuid nagios nagios; }
    reset() { exit 0; }
    eval "$1" "[email protected]"

Dieses Programm zum Ausführen des einzelnen Dienstes ist die einzige Besonderheit dieses Dienstes. Der Rest variiert nicht von Dienst zu Dienst. Man fragt den Dienststatus auf die gleiche Weise über alle Dienste hinweg ab, mit einem Befehl wie svstat . Das Aktivieren und Deaktivieren des automatischen Starts bei Bootstrap ist eine Frage symbolischer Links. Das manuelle Starten und Stoppen eines Dienstes ist eine Sache von svc -u und svc -d . Und so weiter.

nosh hat mehrere Shims, wenn man sie braucht, wie zum Beispiel systemctl status und initctl status . Wichtig ist, dass es einen service hat Shim, also wenn du wirklich wie service nagios status du kannst es weiter verwenden. ☺ Aber vergessen Sie den ganzen fiesen Blick auf ein Lockfile-Geschäft und die ganze Idee der Ad-hoc-Überwachung. Mit so etwas macht man nichts, wenn man einen richtigen Service-Manager vor Ort hat. Der Dienstmanager führt die Überwachung durch und verfolgt den Dæmon-Prozess ordnungsgemäß.

systemd

Es gibt keine systemd-Service-Unit-Datei für Nagios, die in der Box enthalten ist. Aber viele Leute haben bereits ihre eigenen geschrieben:

  • David Kowis’ nagios.service für Source Mage Linux
  • nagios.service 2012 zum Nagios-Paket von Arch Linux hinzugefügt

systemd kommt nicht mit einem Shim service Befehl, aber einige Linux-Distributionen haben einen aus einer anderen Quelle.

Weiterführende Literatur

  • Wie stelle ich die ordnungsgemäße Überwachung meiner Dienste automatisiert ein? Damit es bei einem Absturz automatisch neu startet?

Linux
  1. Linux-Betriebssystemdienst „dhcpd“

  2. Linux-Betriebssystemdienst „anacron“

  3. Linux-Betriebssystemdienst „NetFS“

  4. Linux-Betriebssystemdienst „ldap“

  5. Linux-Betriebssystemdienst „yppasswdd“

Linux-Betriebssystemdienst „microcode_ctl“

Linux-Betriebssystemdienst „hplip“

Linux-Betriebssystemdienst „smartd“

Linux-Betriebssystemdienst „irqbalance“

Linux-Betriebssystemdienst „rpcgssd“

Linux-Betriebssystemdienst „yum-updatesd“