Einrichten von Amazon Cloudwatch, um eine Warnung zu erhalten, wenn Ihr Server ausfällt

12

Ich habe eine Instanz auf Amazon EC2, die ich in einen Webserver verwandelt habe.

Jetzt habe ich mir Cloudwatch angesehen, aber ich weiß nicht, ob es das richtige Werkzeug für den Job ist. Grundsätzlich möchte ich informiert werden, wenn der Server aus irgendeinem Grund ausfällt.

Vielleicht wurde der Server gehackt oder der Server aus irgendeinem Grund heruntergefahren. Ich möchte eine Benachrichtigung darüber erhalten.

Ich habe Clouwatch aktiviert und versucht, eine Warnung einzurichten, aber ich sehe nur Dinge wie Netzwerk-In-Out oder CPU-Nutzung, eine d-Matrix. Jetzt weiß ich nicht, ob diese den Trick machen werden.

Saif Bechan
quelle
1
Kasse Cloudkick. Ich weiß, wir sollten keine Meinung verbreiten, aber Cloudkick ist meine Lieblingsüberwachungslösung. Pingdom ist ziemlich nutzlos, da Ihre Site pingfähig sein kann (Apache / Nginx), aber Ihre Proxy-Prozesse für PHP / Java / Ruby funktionieren möglicherweise nicht. Das Aufrufen einer tatsächlichen URL mit Cloudkick alle 3 Minuten und das Überprüfen auf das Vorhandensein von angegebenem Text oder auf 2xx Erfolg ist viel nützlicher und stellt sicher, dass der gesamte Stapel funktioniert. Ich habe Monitore eingerichtet für Loadaverage, Mem-Nutzung, Agentenverbindung (Server offline oder Verbindung unterbrochen), http 2xx Erfolg auf Seiten usw.
iainlbc
Sie haben hier einen guten Punkt gemacht. Wenn nur PHP nicht verfügbar ist, erhalten Sie immer noch eine Antwort von 200. Der von Ihnen angegebene Link ist eine gute Alternative. Ich werde es mir ansehen, wenn ich meine endgültige Entscheidung treffe.
Saif Bechan
@iainlbc Sie können Pingdom so einstellen, dass es auf eine tatsächliche URL trifft und nach bestimmten Texten sucht.
Ceejayoz

Antworten:

11

Eine Empfehlung besteht darin, eine Metrik zu überwachen, die immer einen numerischen Wert haben sollte, z. B. die CPU-Auslastung, und einen Alarm auszulösen, wenn der Metrikstatus "unzureichende Daten" ist. Sie können Amazon SNS verwenden, um Sie darüber zu informieren.

Alternativ können Sie benutzerdefinierte Metriken einrichten, die einen Binärstatus für bestimmte Dienste (httpd, mysql usw.) zurückgeben und jederzeit eine Warnung generieren, wenn einer dieser Werte 0 lautet. Dieser Ansatz bietet die Möglichkeit von viel feineren Details - kombinieren Sie ihn mit unzureichenden Daten 'um alle Fälle abzudecken.

Möglicherweise sind Sie erfolgreicher, wenn Sie etwas verwenden, das Ihre Site tatsächlich überwacht (z. B. Pingdom, UptimeRobot usw.).

cyberx86
quelle
Ich habe die Dienste wie Pingdom betrachtet und werde sie mit Sicherheit aktivieren. Außerdem habe ich darüber nachgedacht, mir die CPU anzusehen, aber ich dachte, was passieren würde, wenn nur der Webserver gehackt wird. Ein Test für httpd, MySQL usw. würde sicherlich helfen. Können Sie sich vielleicht einen Hinweis, wie Sie diese binäre Zustandsmetrik zu ermöglichen .
Saif Bechan
Kurz gesagt: Bestimmen Sie einen Weg, um den Status des interessierenden Dienstes abzurufen (z. B. ps | grep für die PID / den Namen; prüfen Sie , ob ein Port verwendet wird usw.) - dh ein Watchdog-Skript. Ändern Sie ein solches Skript so, dass die Cloudwatch-API (PutMetricData) entweder eine 0 (für down) oder eine 1 (für up) übergibt. Verwenden Sie am besten eines der für diesen Zweck vorhandenen SDKs (z. B. Ruby, PHP, etc); Die Befehlszeilenversion mon-put-data ist langsamer. Führen Sie alles mit Cron aus.
Cyberx86
1
Ok, das klingt etwas kompliziert. Ich denke, ein Dienst wie Uptimerobot wäre eine bessere Wahl für mich persönlich. Danke für all die Hilfe.
Saif Bechan
3

Sie können OpsGenie ( http://www.opsgenie.com ) verwenden, um eine umfassende Warnung für CloudWatch zu senden. Derzeit verfügt CloudWatch über einen begrenzten Satz von Warnmechanismen, einschließlich E-Mail und SMS, über den SNS-Mechanismus.

Sie können CloudWatch so konfigurieren, dass die OpsGenie-Webdienst-API aufgerufen wird und die richtigen Personen gemäß den Einstellungen der Empfänger schnell über Push-Benachrichtigungen an iPhone / Android-Apps, SMS, Sprachanrufe usw. benachrichtigt werden.

Bitte schauen Sie sich den folgenden Blog-Beitrag an, um detaillierte Informationen zu erhalten:

http://www.opsgenie.com/blog/2012/09/04/aws-cloudwatch-alarms-on-your-mobile-with-opsgenie.html

enguzekli
quelle
2

Sie können in Cloudwatch einen Alarm erstellen und den Alarm so einstellen, dass Sie benachrichtigt werden, wenn der Status "Unzureichende Daten" angezeigt wird. Die meisten der bereits verfügbaren Metriken stammen vom VM-Host, der keine wirkliche Vorstellung davon hat, was in Ihrem Computer passiert.

Zu Beginn würde ich empfehlen, die Amazon-Tools in Ihrer Instanz zu installieren und ein Skript einzurichten, um etwas (alles: CPU-Auslastung, was auch immer) und einen Alarm zu melden, wenn diese Metrik keine Daten mehr sendet (die Metrik wechselt also in den Status "Unzureichende Daten" ).

Dies ist nur ein Minimum, sollte aber ein guter Anfang sein.

Weitere Informationen finden Sie im Abschnitt zu Überwachungsskripten im Cloudwatch-Entwicklerhandbuch: http://docs.amazonwebservices.com/AmazonCloudWatch/latest/DeveloperGuide/mon-scripts.html

Matt Connolly
quelle
Genial, genau das, wonach ich gesucht habe.
GivP
2

Sie können Route 53 und ihre "Integritätsprüfungen" verwenden. Mit dieser Funktion können Sie SNS-Warnungen senden und Ihre Benutzer auf eine andere sekundäre Website oder einen Fehlerbildschirm umleiten. Ich denke, dies ist eine bessere Lösung für Ihr Problem als Cloudwatch.

Petr
quelle
1

Sie können eine EC2-Statusprüfung durchführen . Dies erfolgt über das EC2-Dashboard. Gehen Sie zu Instanzen, wählen Sie Ihre Instanz aus, wählen Sie die Registerkarte Statusprüfungen (neben der Instanzbeschreibung). Klicken Sie auf Statusprüfungsalarm erstellen. Die Standardeinstellung "Statusprüfung fehlgeschlagen (beliebig)" sollte gültig sein. Ich stelle das Intervall immer auf mehr als eins ein, damit ich mich nicht um vorübergehende Probleme kümmere.

Es ist auch möglich, EC2 so einzustellen , dass Ihre Instanz automatisch wiederhergestellt wird, wenn sie aus irgendeinem Grund ausfällt.

Ich empfehle auch ein sekundäres Überwachungssystem. Dumm ist gut für diesen. Ich habe das Linux-Dienstprogramm mon eingerichtet, das von einem anderen Host auf meinen Webserver zeigt. Wenn es nicht zweimal hintereinander einen 200-Antwortcode gibt, erhalte ich eine E-Mail.

Jorfus
quelle
1

Wenn Sie HTTP-Endpunkte wie Ihre API oder Website überwachen möchten, lesen Sie in meinem Blogbeitrag nach, wie Sie dies mit Route 53-Integritätsprüfungen erreichen können (auch wenn Sie Route 53 nicht für DNS verwenden):

http://eladnava.com/monitoring-http-health-email-alerts-aws/

Elad Nava
quelle