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
nagiosund ein
restart
Datei, die einen bedingungslosen automatischen Neustart verursacht:#!/bin/sh
exec trueNur 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?