Ich bin ein unabhängiger Webentwickler mit meinem eigenen Centos VPS, der ein paar kleine Websites für meine Kunden hostet. Heute habe ich festgestellt, dass mein httpd-Dienst gestoppt wurde (ohne ersichtlichen Grund - aber das ist ein anderer Thread). Ich habe es neu gestartet, aber jetzt muss ich einen Weg finden, wie ich per E-Mail und / oder SMS benachrichtigt werden kann, wenn es wieder passiert. Ich mag es nicht, wenn mein Kunde mich anruft und mir mitteilt, dass die Website nicht funktioniert!
Ich weiß, dass es wahrscheinlich viele verschiedene Möglichkeiten gibt, einschließlich Serverüberwachungssoftware. Ich denke, alles, was ich wirklich brauche, ist ein Skript, das ich als Cron-Job von meinem Entwicklerhost ausführen kann (der permanent in meinem Büro ausgeführt wird), der versucht, eine Seite von meinem Produktionsserver zu laden, und wenn es nicht innerhalb von etwa 30 geladen wird Sekunden später schickt es mir eine E-Mail oder SMS. Ich bin ein ziemlicher Quatsch beim Schreiben von Shell-Skripten, daher diese Frage.
Alle Vorschläge würden dankbar geschätzt.
Antworten:
Nun ... Das einfachste Skript, das ich schreiben kann:
Füge es zu cron hinzu als:
Aber es ist zu einfach, Ihnen das Problem zu erklären, wenn es existiert.
UPD: Dieser Einzeiler sucht nun auf der Seite nach einer bestimmten Zeichenfolge ("Normal operation string"), die nur im Normalbetrieb angezeigt werden sollte.
UPD2: Eine einfache Möglichkeit, die Fehlerseite in der E-Mail zu senden:
Ein Minus ist, dass die Seite im Falle eines ersten Testfehlers erneut angefordert wird. Diesmal ist die Anforderung möglicherweise erfolgreich und der Fehler wird nicht angezeigt. Natürlich ist es möglich, die Ausgabe zu speichern und als Anhang zu senden, aber das Skript wird dadurch komplexer.
quelle
Schauen Sie sich dieses Skript an:
curl
ist ein Befehlszeilenprogramm zum Abrufen einer URL. Das Skript überprüft den Exit-Code ($? Bezieht sich auf den Exit-Code des letzten Befehls in einem Shell-Skript) und meldet einen Fehler, wenn er nicht 0 ist (ein Exit-Code von 0 bezieht sich im Allgemeinen auf Erfolg). Wie in der Antwort von HUB erwähnt, können Sie auch einfach||
in der Befehlszeile einen zweiten Befehl ausführen, wenn der erste fehlschlägt.Sobald Sie den Status herausgefunden haben, müssen Sie sich nur noch eine E-Mail senden. In diesem Beispiel wird der
mail
Befehl zum Senden von E-Mails über ein Shell-Skript verwendet, vorausgesetzt, die Box, auf der Sie testen, verfügt über SMTP-Setup:Übrigens: Wenn Sie nicht gut mit Shell-Skripten umgehen können, beschränken Sie sich nicht auf ein Shell-Skript. Sie könnten ein Ruby-Skript, ein PHP-Skript, jede Art von Skript verwenden, die Ihr Server ausführen kann! Fügen Sie einfach die
#!/path/to/executable
Zeile am Anfang des Skripts ein - zum Beispiel:#!/usr/bin/php
quelle
Überprüfen Sie dieses Skript . Es prüft anhand einer Liste von Websites und sendet E-Mails (zur Liste der E-Mails), wenn etwas nicht stimmt (die http-Antwort unterscheidet sich von 200). Das Skript erstellt eine temporäre Datei, um sich zu merken, welche Website (n) bei der letzten Überprüfung fehlgeschlagen sind, damit Sie nicht mehrere E-Mails erhalten. Die temporäre Datei wird gelöscht, wenn die Website wieder funktioniert.
Fügen Sie die folgenden Zeilen zu crontab config hinzu ($ crontab -e)
Erhältlich bei Github
quelle
Ich weiß, dass alle oben genannten Skripte genau das sind, wonach Sie gefragt haben, aber ich würde empfehlen, sich monit anzuschauen, da es Ihnen eine E-Mail sendet, wenn Apache nicht verfügbar ist, aber es auch neu startet (falls es nicht verfügbar ist).
quelle
Ich würde Pingdom dafür empfehlen. Mit ihrem kostenlosen Service können Sie 1 Site überprüfen, aber das ist alles, was Sie brauchen, um 1 Server zu überprüfen. Wenn Sie über ein iPhone verfügen, erhalten Sie eine kostenlose Push-Nachricht, sodass Sie keine SMS-Guthaben erwerben müssen. Außerdem stehen Ihnen mehrere Einstellungen zur Verfügung. Meins soll mich nach 2 Wiederholungsversuchen (10 Minuten) und danach alle 10 Minuten Ausfallzeit benachrichtigen. Es ist fantastisch, da es auch nach HTTP 500-Nachrichten sucht, die darauf hinweisen, dass eine Site nicht erreichbar ist. Wenn dies fehlschlägt, wird Ihre Site sofort von einem anderen Server an einem anderen Standort erneut überprüft. Wenn dies fehlschlägt, können Sie festlegen, wie und wann Sie benachrichtigt werden möchten.
quelle
Leichte Abweichung von den oben genannten.
Ein Skript, mit dem alle 10 Sekunden überprüft wird, ob eine Website verfügbar ist. Protokollieren Sie fehlgeschlagene Versuche in einer
siteuptime.txt
Datei, damit sie später angezeigt (oder in Excel grafisch dargestellt) werden kann.quelle
quelle
Da Ihr VPS viele Websites enthält, würde ich Ihnen empfehlen, ein Konto bei einer Website-Überwachungssite wie host-tracker.com zu eröffnen. Abgesehen davon, dass Sie benachrichtigt werden, ob die Website nicht verfügbar ist oder nicht, werden Ihnen auch wöchentliche, monatliche und jährliche Betriebszeiten Ihrer Websites angezeigt. Whish ist sehr hilfreich für die Verwaltung und Leistung.
quelle
Wie wäre es damit:
quelle