it-swarm.com.de

Überwachen von URLs mit Nagios

Ich versuche, die tatsächlichen URLs und nicht nur die Hosts mit Nagios zu überwachen, da ich einen gemeinsam genutzten Server mit mehreren Websites betreibe. Ich denke nicht, dass dies nur ausreicht, um den grundlegenden HTTP-Dienst zu überwachen (ich schließe dies ganz genau ein.) unten dieser Frage eine kleine Erklärung dessen, was ich mir vorstelle).

(Randbemerkung: Bitte beachten Sie, dass ich Nagios auf einem CentOS-System in einer Chroot-Umgebung installiert und ausgeführt habe. Ich habe Nagios vom Quellcode aus erstellt und habe yum verwendet, um alle erforderlichen Abhängigkeiten in diesem Stammverzeichnis zu installieren, usw.).


Ich fand zuerst check_url , aber nachdem ich es in/usr/lib/nagios/libexec installiert habe, habe ich immer den Fehler "Rückkehrcode von 255 ist außerhalb der Grenzen" erhalten. Da habe ich beschlossen, mit dem Schreiben dieser Frage zu beginnen (aber warte! Es gibt ein weiteres Plugin, das ich zuerst ausprobieren möchte!)

Nachdem ich Diese Frage die fast das gleiche Problem hatte, das ich mit check_url hatte, durchgegangen bin, habe ich beschlossen, eine neue Frage zu diesem Thema zu eröffnen, weil A) Ich verwende NRPE nicht bei dieser Prüfung b) Ich habe die Vorschläge zu der früheren Frage, auf die ich verlinkt habe, ausprobiert, aber keiner von ihnen hat funktioniert. Zum Beispiel...

./check_url some-domain.com | echo $0

gibt "0" zurück (was bedeutet, dass die Prüfung erfolgreich war)

Dann folgte ich den Anweisungen zum Debuggen von Nagios Suppor t, um eine temporäre Datei namens debug_check_url zu erstellen, und füge Folgendes hinzu (um dann von meiner Befehlsdefinition aufgerufen zu werden):

#!/bin/sh
echo `date` >> /tmp/debug_check_url_plugin
echo $*  /tmp/debug_check_url_plugin
/usr/local/nagios/libexec/check_url $*

Angenommen, ich befinde mich nicht im "Debugging-Modus", lautet meine Befehlsdefinition zum Ausführen von check_url wie folgt (in command.cfg):

'check_url' command definition
define command{
       command_name    check_url
       command_line    $USER1$/check_url $url$
}

(Übrigens können Sie auch sehen, was ich in meiner Service-Konfigurationsdatei am Ende dieser Frage verwendet habe.)


Bevor ich diese Frage veröffentlichte, habe ich mich jedoch entschlossen, noch einmal eine Lösung zu finden. Ich fand das check_url_status plugin und entschied mich, diesem einen Schuss zu geben. Um das zu tun, habe ich Folgendes getan:

  1. mkdir/usr/lib/nagios/libexec/check_url_status /
  2. sowohl check_url_status als auch utils.pm heruntergeladen
  3. Gemäß dem Kommentar/der Überprüfung durch den Benutzer auf der Plugin-Seite "check_url_status" habe ich "lib" in das richtige Verzeichnis von/usr/lib/nagios/libexec/geändert.
  4. Führen Sie folgendes aus:

    ./check_user_status -U some-domain.com. Wenn ich den obigen Befehl ausführte, wurde die folgende Fehlermeldung angezeigt:

bash-4.1 # ./check_url_status -U mydomain.com Kann utils.pm in @INC nicht finden (@INC enthält:/usr/lib/nagios/libexec// usr/local/lib/Perl5/usr/local/share/Perl5/usr/lib/Perl5/vendor_Perl/usr/share/Perl5/vendor_Perl/usr/lib/Perl5/usr/share/Perl5) in ./check_url_status Zeile 34. BEGIN fehlgeschlagen - Kompilierung abgebrochen in ./check_url_status Zeile 34.


An diesem Punkt gebe ich auf und habe ein paar Fragen:

  1. Welches dieser beiden Plugins würdest du empfehlen? check_url oder check_url_status? (Nachdem ich die Beschreibung von check_url_status gelesen habe, habe ich das Gefühl, dass dies die bessere Wahl sein könnte. Ihre Gedanken?)
  2. Nun, wie würde ich mein Problem mit dem von Ihnen empfohlenen Plugin beheben?

Zu Beginn dieser Frage habe ich erwähnt, dass ich eine kleine Erklärung dessen enthalten würde, was ich mir vorstelle. Ich habe eine Datei namens services.cfg, in der sich alle meine Service-Definitionen befinden (stellen Sie sich das vor!). 

Das Folgende ist ein Ausschnitt aus meiner Service-Definitionsdatei, die ich zur Verwendung von check_url geschrieben habe (weil ich damals dachte, dass alles funktioniert hat). Ich werde für jede URL, die ich überwachen möchte, einen Dienst erstellen:

###
# Monitoring Individual URLs...
#
###
define service{
        Host_name                       {my-shared-web-server}
        service_description             URL: somedomain.com
        check_command                   check_url!somedomain.com
        max_check_attempts              5
        check_interval                  3
        retry_interval                  1
        check_period                    24x7
        notification_interval           30
        notification_period             workhours
}
12
David W

Ich machte Dinge zu kompliziert.

Das eingebaute/standardmäßig installierte Plugin check_http kann das erreichen, was ich wollte und mehr. So habe ich das erreicht:

Meine Service-Definition:

  define service{
            Host_name                       myers
            service_description             URL: my-url.com
            check_command                   check_http_url!http://my-url.com
            max_check_attempts              5
            check_interval                  3
            retry_interval                  1
            check_period                    24x7
            notification_interval           30
            notification_period             workhours
    }

Meine Befehlsdefinition:

define command{
        command_name    check_http_url
        command_line    $USER1$/check_http -I $HOSTADDRESS$ -u $ARG1$
}
25
David W

Die beste Möglichkeit, URLs zu überwachen, ist die Verwendung von webinject, das mit Nagios verwendet werden kann.

Das folgende Problem ist auf den Grund zurückzuführen, dass Sie die Perl-Paket-Dienstprogramme nicht installiert haben.

bash-4.1 # ./check_url_status -U mydomain.com Kann utils.pm in @INC nicht finden (@INC enthält: 

2
Priya

Sie können ein Skript-Plugin erstellen. Es ist einfach, Sie müssen nur die URL mit etwas überprüfen:

`curl -Is $URL -k| grep HTTP | cut -d ' ' -f2`

$ URL ist das, was Sie von param an den Skriptbefehl übergeben.

Dann überprüfen Sie das Ergebnis: Wenn Sie einen Code größer als 399 haben, haben Sie ein Problem, sonst ... alles ist in Ordnung! Dann einen Rechtsausstiegsmodus und die Nachricht für Nagios.

1
Eduardo Andrés