Ich möchte einen Gesundheitscheck eines Dienstes durchführen, indem ich eine bestimmte URL aufrufe. Die einfachste Lösung wäre die Verwendung von cron, um die Prüfung etwa jede Minute durchzuführen. Im Fehlerfall sendet mir cron eine E-Mail.
Ich habe versucht, cUrl dafür zu verwenden, aber ich kann es nicht dazu bringen, Meldungen nur bei Fehlern auszugeben. Wenn ich versuche, die Ausgabe nach / dev / null zu leiten, wird der Fortschrittsbericht gedruckt.
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 5559 100 5559 0 0 100k 0 --:--:-- --:--:-- --:--:-- 106k
Ich habe versucht, die Curl-Optionen durchzusehen, aber ich kann nichts finden, das der Situation entspricht, in der Sie möchten, dass es über den Erfolg schweigt, aber bei Fehlern Geräusche macht.
Gibt es eine Möglichkeit, Curl zu machen, was ich will, oder gibt es ein anderes Tool, das ich mir ansehen sollte?
quelle
icinga
oder einem anderen Überwachungssystem?Antworten:
Was ist
-sSf
? Aus den Manpages:Beispielsweise:
quelle
curl -fsS http://example.org > /dev/null
. Das wird nichts ausgeben, wenn nichts falsch ist, aber es wird den Statuscode auf Fehler drucken, was für mich in Ordnung ist.-f
für zukünftige Referenzen hinzugefügt .Ich denke, dass Sie für den einfachsten Weg, um zu überprüfen, ob die Site aktiv ist, die folgende Methode verwenden können:
Dies wird zurückkehren
HTTP/1.1 200 OK
. Wenn die Rückgabe nicht mit Ihrer Ausgabe übereinstimmt, rufen Sie um Hilfe.quelle
Sie benötigen das
-s
Flag (Silent),-f
Flag (Fail mit Exit-Code bei Fehler) und können das-o
Flag verwenden, um die Ausgabe umzuleiten:Dies ist nur ein schlechtes Beispiel für ein einfaches Cron-Skript. Normalerweise möchten Sie nur eine E-Mail erhalten, wenn eine Website nicht verfügbar ist.
quelle
Sie können die Netzwerk-Timing-Statistiken von Curl erfassen. Latenzen für jede Phase in einem Anforderungs- / Antwortzyklus können hilfreich sein, um den Zustand zu bestimmen.
quelle
Auf diese Weise können Sie die Site testen, wenn https vorhanden ist:
quelle
Ich wurde kürzlich gebeten, mir etwas auszudenken, das eher wie ein ausgefeilter Herzschlag wirken würde.
Oder erweitert für ein wenig mehr Lesbarkeit,
Was ich getan habe, war
curl
eine Website, die alle Links aus dem HTML-curl
Code und dann die analysierten Links auswertet und nur den Statuscode ausgibt. Dann würde ich nach http-Statuscodes> = 400 suchen, um Fehler zu finden.quelle
Antworten:
Erklärungen:
timeout 3s
legt eine Zeitüberschreitung von 3 Sekunden für Ihre Anfrage fest. Langsamer antworten gilt als "nicht gesund"-f
Flag schlägt vorzeitig fehl,-S
zeigt Fehler an,-s
unterdrückt die normale Ausgabe und-I
ruft nur HTTP-Header ab, nicht den Inhalt. (Wie immer sind weitere Details aufman curl
Befehl verfügbar .)-checkend
Direktive überprüft das Ablaufdatum für ein Zertifikat. In meinem Beispiel sind es 20 Tage (in Sekunden angegeben).quelle
-s
und-S
getauschtCurl hat sehr spezifische Exit-Statuscodes.
Warum nicht einfach nach diesen suchen?
Verwendung:
Ergebnis:
Anmerkungen:
Dieses Skript überprüft nur, ob die Site aufgelöst werden kann.
Mit diesem Code sollten Sie zurechtkommen, wenn Sie sich nur dafür interessieren, ob die Site aktiv oder inaktiv ist.
Wenn Sie jedoch einige Änderungen am if / else-Block vornehmen, können Sie auf Wunsch problemlos nach anderen Statuscodes suchen
quelle