Inhaltsverzeichnis:

Service Monitor-Skript für Linux-Server - Gunook
Service Monitor-Skript für Linux-Server - Gunook

Video: Service Monitor-Skript für Linux-Server - Gunook

Video: Service Monitor-Skript für Linux-Server - Gunook
Video: Diese macOS Einstellungen solltest du SOFORT ändern (macOS Monterey)! | Nils-Hendrik Welk 2024, Dezember
Anonim
Service Monitor-Skript für Linux-Server
Service Monitor-Skript für Linux-Server

Ein stabiles, ständig laufendes System zu haben, kann eine schwierige Aufgabe sein, selbst wenn Sie Linux verwenden.

Aufgrund der Komplexität moderner Softwarepakete und schlechter Codierung können unweigerlich einige Prozesse von Zeit zu Zeit abstürzen. Dies kann eine schlechte Sache sein, wenn Sie einen Server betreiben und einige Leute auf diese Dienste angewiesen sind.

Schritt 1: Verwenden von Methoden von Systemd

Wie Sie vielleicht bereits wissen, verwenden die meisten modernen Linux-Betriebssysteme systemd.

Wenn Sie mit systemd nicht vertraut sind, lautet dies laut Wikipedia:

„… ein Init-System, das in Linux-Distributionen verwendet wird, um den Benutzerbereich zu booten und alle Prozesse anschließend zu verwalten, anstelle der Init-Systeme von UNIX System V oder Berkeley Software Distribution (BSD). …“

Viele Leute argumentieren immer noch, warum es notwendig war, das gute alte init-System durch dieses kompliziertere Prozessmanagementsystem zu ersetzen, aber unter folgendem Link könnte man eine gute Erklärung finden:

www.tecmint.com/systemd-replaces-init-in-l…

Die wichtigste Verbesserung wäre, dass es aufgrund der gleichzeitigen und parallelen Verarbeitung beim Booten anstelle des sequentiellen Ansatzes von init in der Lage ist, das System schneller als init hochzufahren

Ohne in die Tiefen von systemd einzusteigen, müssen Sie zum Hinzufügen eines Prozesses zu systemd eine Servicedatei erstellen. Die Syntax einer solchen Datei kann von sehr einfach bis äußerst kompliziert reichen, und wir werden nicht ins Detail gehen. Um eine einfache.service-Datei zu haben, reicht es aus, die folgenden Einträge zu verwenden:

[Unit]Description=Beschreibung der AnwendungDocumentation=https://wikipedia.org/ After=local-fs.target network.target[Service]Type=simpleExecStart=/usr/sbin/applicationExecReload=/usr/sbin/application reloadExecStop=/ usr/sbin/application stopRestart=always[Install]WantedBy=multi-user.target

Platzieren Sie diese in der Datei application.service im Ordner /lib/systemd/system.

Was jede dieser Optionen bewirkt, wird unter dem folgenden Link erklärt:

access.redhat.com/documentation/en-US/Red_…

Um Ihre Anwendung zu starten, geben Sie folgenden Befehl ein:

sudo systemctl start application.service

Hinweis: Die Erweiterung.service kann weggelassen werden.

So stoppen Sie die Anwendung:

sudo systemctl stop application.service

Wenn die Konfigurationsdatei geändert wurde und Sie die Einstellungen neu laden möchten:

sudo systemctl reload application.service

So starten Sie die Anwendung neu:

sudo systemctl neu starten application.service

So aktivieren Sie das automatische Starten beim Booten:

sudo systemctl aktivieren application.service

Wenn dies aktiviert ist, versucht der systemd-Prozessmanager, die Anwendung basierend auf den von der Systemdatei bereitgestellten Einstellungen zu starten.

Um es zu deaktivieren, verwenden Sie den gleichen Befehl wie oben, jedoch mit dem Parameter 'disable'.

Wenn Sie Restart=always in die Servicedatei einfügen, überwacht systemd den Prozess und wenn er nicht in der Prozessliste gefunden wird, versucht es, ihn automatisch neu zu starten.

Wenn du platzierst

NeustartSek=30

Nach der Neustart-Anweisung wird 30 Sekunden gewartet, bevor versucht wird, den Prozess neu zu starten. Dies kann nützlich sein, da ein kontinuierlicher Neustartversuch eines fehlgeschlagenen Dienstes / einer fehlgeschlagenen Anwendung zu einer hohen Anforderung an das System führen kann (Schreiben von Fehlerprotokollen usw.).

Wie Sie sehen, bietet systemd bereits einige Möglichkeiten, die Prozesse zu überwachen. In einigen Fällen kann dies jedoch nicht ausreichen. Was ist, wenn ein Prozess nicht beendet wird (er ist immer noch in der Prozessliste), aber er reagiert nicht mehr. In diesem Fall müssen Sie möglicherweise zusätzliche Prüfungen durchführen, um sicherzustellen, dass ein Prozess tatsächlich ausgeführt wird.

Hier sind die Skripte aus diesem instructable praktisch.

Schritt 2: Konfigurieren und Verwenden der Service Checker-Skripte

Wenn Sie mehr Kontrolle über Ihre laufenden Prozesse/Dienste benötigen, sind diese Skripte sicherlich hilfreich.

Da der Code etwas groß ist, wird er auf github hochgeladen und ist unter dem folgenden Repository zu finden:

github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh

Das 'Herzstück' des Gesamtpakets ist das

checkService.sh

Vor der Verwendung müssen Sie den vollständigen Pfad zum Dienstordner ersetzen. Diese finden Sie am Anfang des Skripts.

Das Skript kann mehrere Prozesse überwachen und zusätzliche Aufgaben ausführen, wie unten beschrieben:

Es durchläuft alle Dateien aus dem Unterordner /services mit den Erweiterungen.serv oder.check und prüft, ob ein aktiver Prozess namens 'Anwendung' vorhanden ist.

Wenn für eine Anwendung keine '.check'-Datei vorhanden ist, nur die Datei application.serv:

Wenn der Prozess aktiv ist, wird der Prozess als aktiv betrachtet

Wenn der Prozess inaktiv ist, wird der Dienst neu gestartet, indem der folgende Befehl ausgegeben wird:

systemctl Anwendung neu starten

wenn die.serv-Datei leer ist!

Wenn die.serv-Datei nicht leer ist und über ausführbare Rechte verfügt, wird versucht, sie als einfaches BASH-Skript auszuführen.

Dies ist nützlich, wenn neben dem Neustart des Dienstes noch etwas getan werden muss.

Zum Beispiel muss in der spamd.serv-Datei aus dem obigen Repository, falls der spamd-Dienst tot ist, stattdessen der spamassassin-Dienst neu gestartet werden, wodurch auch spamd neu gestartet wird. Nur Spamd neu zu starten würde nicht ausreichen.

Der Inhalt einer solchen Serv-Datei kann je nach Bedarf bearbeitet werden.

Ein weiteres Beispiel ist die Datei pcscd.serv. In diesem Fall wurden auch mehrere andere Prozesse neu gestartet/gekillt.

Wenn eine Prüfdatei vorhanden ist, wird nach der Prüfung, ob der Prozess ausgeführt wird, auch diese Skriptdatei ausgeführt, um zusätzliche Prüfungen durchzuführen.

Für den oscam-Dienst haben wir beispielsweise eine Prüfdatei erstellt, die versucht, eine Verbindung zu seiner Weboberfläche herzustellen, um zu sehen, ob dies erfolgreich ist. Wenn nicht, reagiert der Dienst trotz aktivem Prozess nicht und muss neu gestartet werden. Der Neustart des Dienstes muss von der.check-Datei selbst durchgeführt/aufgerufen werden.

Ein weiteres Beispiel wäre der DLNA-Dienst mediatomb.

Dies ist ein kleiner Server, der DLNA-Clients Video-/Audioinhalte bereitstellt und sich selbst im Netzwerk überträgt. Manchmal hängt der Dienst und ist nicht mehr auffindbar, aber der Prozess ist weiterhin aktiv. Um zu überprüfen, ob der Dienst erkennbar ist, wurde das CLI-Dienstprogramm gssdp-discover verwendet. Der gesamte Code, der den DLNA-Server überprüft, wurde in ein mediatomb.check-Skript eingefügt.

Dies sind nur einige Beispiele für die Verwendung der.serv- und.check-Dateien.

Um einen neuen Dienst zu überwachen, müssen Sie eine.serv- und ggf. auch eine Check-Datei erstellen und das entsprechende Skript darin schreiben.

Wenn nur die Anwesenheit des Prozesses überprüft wird, reicht eine leere.serv-Datei aus. Wenn zusätzliche Prüfungen durchgeführt werden müssen, muss eine.check-Datei erstellt und ein kleines Skript geschrieben werden, um die Arbeit zu erledigen.

Natürlich muss das.sh-Skript periodisch ausgeführt werden, daher muss auch ein Cron-Job dafür erstellt werden:

#laufende Dienste alle 5 Minuten prüfen*/5 * * * * /var/bin/ServiceCheck/checkService.sh >/dev/null

Schritt 3: Abschließende Gedanken

Ich hoffe, Sie finden dieses Paket nützlich, da es die Überwachung von Linux-Prozessen erheblich vereinfacht und hoffentlich die Ausfallzeiten Ihrer Dienste minimiert.

Fühlen Sie sich frei, zusätzliche Skripte auf github hochzuladen, wenn Sie neue erstellen. Lassen Sie es mich einfach wissen und ich werde Sie als Mitwirkenden hinzufügen.

Empfohlen: