So erstellen Sie mit einem Bash -Shell -Skript ein eigenes Nagios -Plugin

So erstellen Sie mit einem Bash -Shell -Skript ein eigenes Nagios -Plugin

Nagios ist ein beliebtes Open-Source-Überwachungssystem, mit dem die Verfügbarkeit und Leistung verschiedener Ressourcen wie Server, Netzwerke und Dienste überwacht werden kann. Eine Möglichkeit, die Funktionen von Nagios zu erweitern, besteht darin, benutzerdefinierte Plugins mithilfe von Bash -Skripten zu erstellen. Hier ist ein allgemeiner Überblick über die Schritte, die mit dem Erstellen eines Nagios -Plugins mithilfe eines Bash -Skripts verbunden sind:

Es ist wichtig zu beachten. Dies bedeutet, dass das Plugin vermeiden sollte, unnötige oder zeitaufwändige Aufgaben auszuführen, und die Ausgabe so schnell wie möglich zurückgeben sollte.

Es gibt einige Best Practices, die Sie beim Erstellen eines Nagios -Plugins beachten können:

  • Verwenden Sie eine klare und prägnante Ausgabe: Die Ausgabe des Plugins sollte leicht zu verstehen sein und klare Informationen über den Status der zu überwachenden Ressource liefern. Vermeiden Sie es, eine komplexe oder mit Jargon gefüllte Sprache zu verwenden, und versuchen Sie, die Ausgabe so kurz wie möglich zu halten.
  • Geben Sie die entsprechenden Statuscodes zurück: Das Plugin sollte den richtigen Statuscode basierend auf dem Status der zu überwachten Ressource zurückgeben. Wenn die Ressource beispielsweise korrekt funktioniert, sollte das Plugin einen Statuscode von 0 zurückgeben (Erfolg). Wenn es ein Problem mit der Ressource gibt, sollte das Plugin je nach Schwere des Problems einen Statuscode von 1 (Warnung) oder 2 (kritisch) zurückgeben.
  • Leistungsdaten zurückgeben: Falls relevant, sollte das Plugin Leistungsdaten in Form von Name = Wert [UOM] zurückgeben; [Warn]; [Krit]; [min]; [max]. Auf diese Weise können Nagios die Leistung der Ressource im Laufe der Zeit verfolgen und den Benutzer aufmerksam machen, wenn er außerhalb der akzeptablen Schwellenwerte fällt.
  • Verwenden Sie nach Möglichkeit Check_nrpe: Wenn das Plugin auf einem Remote -Server ausgeführt wird, ist es im Allgemeinen effizienter, das Dienstprogramm check_nrpe zu verwenden, um das Plugin auszuführen, anstatt es direkt über SSH auszuführen. Dies vermeidet den Overhead, eine SSH -Verbindung für jede Plugin -Ausführung herzustellen.

Wenn Sie diesen Best Practices befolgen, können Sie effiziente und effektive Nagios -Plugins erstellen, mit denen Sie die für Ihr Unternehmen wichtigen Ressourcen überwachen können.

Schritt 1: Bestimmen Sie den Zweck des Plugins

Der erste Schritt beim Erstellen eines Nagios -Plugins besteht darin, festzustellen, wofür das Plugin verwendet wird. Wird es verwendet, um den Status eines Dienstes zu überprüfen, die Leistung eines Servers zu überwachen oder eine andere Aufgabe auszuführen? Dies hilft Ihnen, das Plugin zu entwerfen und den erforderlichen Code zu schreiben.

Schritt 2: Schreiben Sie ein Shell -Skript

Sobald Sie wissen, wofür das Plugin verwendet wird, können Sie das Bash -Skript schreiben. Das Skript sollte die erforderliche Logik enthalten, um die Aufgabe auszuführen, für die das Plugin ausgelegt ist. Es sollte auch die Ausgabe in dem von Nagios erwarteten Format enthalten, das aus einem Statuscode besteht (e.G., 0 für den Erfolg, 1 für Warnung, 2 für kritische), eine Nachricht und optionale Leistungsdaten.

sudo vim check_disk_usses.Sch  

Fügen Sie das folgende Skript hinzu.

#!/usr/bin/env bash ### ======================================== ======================ieben Punkt ### ### verwendet: ./check_disk_usses.Sch / ### ### ./check_disk_usses.sh /mnt ### ### ./check_disk_usses.sh /dev/sda1 ### ### ======================================= ================================ ### ### ============ ====================================================== ========= ### ### FUNCTIONS ### ### ============================ =====================================ieben # Calculate DISK verwendet use_disk_space = "df -h $ mont_point | grep -v Dateisystem | awk" print $ 5 '| SED 's/%// g "if (($ upt_disk_space> = 0 && $ upt_disk_space = 81 && $ uben_disk_space = 91 && $ uben_disk_space <=100)); then echo "CRITICAL - $USED_DISK_SPACE% of disk space used." exit 2 else echo "UNKNOWN - $USED_DISK_SPACE% of disk space used." exit 3 fi ### ======================================================================= ### ### SCRIPT EXECUTION STARTS HERE ### ### ======================================================================= ### if [[ -z "$1" ]] then echo "Missing parameters! Syntax: ./'basename $0' mount_point/disk" exit 3 else MOUNT_POINT=$1 fi calculate_disk_uses ### ======================================================================= ### ### END OF SCRIPT ### ### ======================================================================= ###
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#!/usr/bin/env bash ### ======================================== =========================ieben Punkt ###### verwendet: ./check_disk_usses.Sch / ###### ./check_disk_usses.sh /mnt ###### ./check_disk_usses.sh /dev/sda1 ###### ======================================= ================================ ### ### ============ ====================================================== ========= ###### FUNCTIONS ###### ============================ =====================================ieben # Calculate Diskulat verwendet use_disk_space = 'df -h $ mont_point | Grep -v -Dateisystem | awk 'print $ 5' | sed 's/%// g' 'if (($ upt_disk_space> = 0 && $ used_disk_space<=80)); then echo "OK - $USED_DISK_SPACE% of disk space used." exit 0 elif (($USED_DISK_SPACE>= 81 && $ use_disk_space<=90)); then echo "WARNING - $USED_DISK_SPACE% of disk space used." exit 1 elif (($USED_DISK_SPACE>= 91 && $ use_disk_space <=100)); then echo "CRITICAL - $USED_DISK_SPACE% of disk space used." exit 2 else echo "UNKNOWN - $USED_DISK_SPACE% of disk space used." exit 3 fi ### ======================================================================= ###### SCRIPT EXECUTION STARTS HERE ###### ======================================================================= ### if [[ -z "$1" ]] then echo "Missing parameters! Syntax: ./'basename $0' mount_point/disk" exit 3else MOUNT_POINT=$1fi calculate_disk_uses ### ======================================================================= ###### END OF SCRIPT ###### ======================================================================= ###

Speichern Sie Ihr Skript und überprüfen Sie, indem Sie es manuell ausführen

Schritt 3: Testen Sie das Skript

Bevor das Skript als Nagios -Plugin verwendet wird, ist es wichtig, es zu testen, um sicherzustellen, dass es korrekt funktioniert und die erwartete Ausgabe erzeugt. Sie können das Skript testen, indem Sie es aus der Befehlszeile ausführen und überprüfen, ob es die richtige Ausgabe erzeugt.

BASH CHECK_DISK_USS.Sch /  

Dies sollte ordnungsgemäß funktionieren, bevor Sie es mit dem Nagios -Server konfigurieren.

Schritt 4: Installieren Sie das Plugin

NRPE ist die Ausführung von Nagios Remote -Plugin, die auf Client -Maschinen ausgeführt wird, Anforderungen vom Nagios -Server akzeptiert, diese Anforderung verarbeitet und das Ergebnis an den Nagios -Server zurücksendet.

  1. Wenn Sie NRPE nicht auf Ihrem System installieren lassen. Verwenden Sie die folgenden Befehle, um den NRPE-Client auf Ihren Debian-basierten Systemen zu installieren.
    sudo APT -Update  sudo apt installieren nagios-nrpe-server  

    Die oben genannten Befehle dienen debianbasierten Systemen. Um NRPE auf Redhat -basiertem System zu installieren, besuchen Sie dieses Tutorial.

  2. Sobald das Skript getestet und korrekt funktioniert, können Sie es als Nagios -Plugin installieren, indem Sie es in die kopieren "/Usr/local/nagios/libexec" Verzeichnis auf dem Nagios -Server.
    sudo mv check_disk_usses.sh/usr/lib/nagios/plugins/check_disk_usses.Sch  sudo chmod +x/usr/lib/nagios/plugins/check_disk_usses.Sch  
  3. Bearbeiten Sie dann die NRPE -Konfigurationsdatei “/Etc/nagios/nrpe.CFG ” und fügen Sie Ihren Befehl hinzu, um einige Festplatten Ihres Systems zu überwachen. Befehl [check_disk_usses] =/usr/lib/nagios/plugins/check_disk_usses.sh /dev /sda1
    1Befehl [check_disk_usses] =/usr/lib/nagios/plugins/check_disk_usses.sh /dev /sda1

Sie können das anrufen 'check_disk_usses' ' Befehl des Nagios -Servers mit dem Nagios -Server 'check_nrpe' Befehl und holen Sie sich die Ergebnisse zurück.

Schritt 5: Test mit check_nrpe Befehl

Führen Sie nun den folgenden Befehl von Ihrem Nagios -Server aus, wo 192.168.10.100 ist die IP des NRPE -Client -Systems.

./check_nrpe -h 192.168.10.100 -c check_disk_usses  OK - 22% des genutzten Speicherplatzes. 

Schritt 6: Konfigurieren Sie Nagios, um dieses Plugin zu verwenden

Nach dem Installieren des Plugins müssen Sie Nagios so konfigurieren, dass es es verwendet wird. Dies beinhaltet das Erstellen einer Befehlsdefinition in der Nagios -Konfigurationsdatei (e).G., /usr/local/nagios/etc/Objekte/Befehle.CFG) und Erstellen einer Dienstdefinition, um anzugeben, wie und wann das Plugin ausgeführt werden soll.

  1. Zuerst bearbeiten ”/Etc/nagios/objekte/Befehle.CFG ” Konfigurationsdatei und Definieren Sie den folgenden Befehl: Befehl definieren command_name check_disk_usses command_line $ user1 $/check_nrpe -h $ hostAddress $ -c check_disk_usses
    1234Befehl definieren command_name check_disk_usses command_line $ user1 $/check_nrpe -h $ hostAddress $ -c check_disk_usses

  2. Dann erstellen.168.10.100 service_description Service check check_command check_disk_usses
    123456Dienste definieren Verwenden Sie generic service host_name 192.168.10.100 service_description Service check check_command check_disk_usses

  3. Um die Konfigurationsdateien zu überprüfen, führen Sie die aus 'Nagios -v' Befehl wie:
    /usr/local/nagios/bin/nagios -v/usr/local/nagios/etc/nagios.CFG  

    Wenn ein Fehler angezeigt wird, beheben Sie dies, bevor Sie den Nagios -Dienst neu starten.

  4. Starten Sie schließlich den Nagios -Dienst neu, um Änderungen anzuwenden.
    Service Nagios Neustart  

Abschluss

Dies ist ein allgemeiner Umriss mit einem realen Beispiel für den Prozess, der beim Erstellen eines Nagios-Plugins mithilfe eines Bash-Skripts besteht. Abhängig von den spezifischen Anforderungen Ihres Plugins kann zusätzliche Schritte oder Überlegungen vorhanden sein.