Da die in Betrieb befindliche Baustelle gelegentlich außer Betrieb war, Es ist einfach, aber ich habe einen Site-Monitor vorbereitet. (Es gibt verschiedene großzügige Überwachungsdienste auf der Welt, einschließlich der Erfassung von Servermetriken, aber diesmal machen wir es zu einer kostengünstigen und einfachen Möglichkeit, eine Verbindung mit Slack herzustellen.)
Schreiben wir nun den Code, um die Site zu überprüfen. Der allgemeine Ablauf besteht darin, den HTTP-Status der angegebenen URL zu überprüfen und Slack zu benachrichtigen, wenn andere Websites als 200 vorhanden sind. (Im Gegenteil, wenn es kein Problem gibt, wird Slack nicht benachrichtigt. Bitte geben Sie beim Testen die URL von Seite 404 usw. an.) Das Ganze ist wie folgt.
health_checker.py
# -*- coding: utf-8 -*-
import requests
import json
#Geben Sie die URL der Site an, die Sie als Array überwachen möchten
urls = ['https://www.rakuten.co.jp/']
def post_slack_h(c):
#Beschreiben der Webhook-URL, die durch Aktivieren von Incoming Webhooks in Slack erhalten wird
post_url = 'Slack Webhook URL'
requests.post(post_url, data=json.dumps({
"username": "Beobachten Sie die Website",
'text': c
}))
targets = []
def status_check(a="", b=""):
content = ""
for url in urls:
try:
s = requests.get(url, timeout=10).status_code
except requests.exceptions.ReadTimeout:
content += url + " Time out(10s)\n"
targets.append(url)
except requests.exceptions.ConnectionError:
content += url + " Connection error\n"
targets.append(url)
else:
if s == 200:
content += url + " " + str(s) + "\n"
else:
content += url + " " + str(s) + "\n"
targets.append(url)
if not targets:
print("All Green!!")
pass
else:
post_slack_h(content)
if __name__ == '__main__':
status_check()
Bitte überprüfen Sie den offiziellen Support unten für das Verfahren zur Verwendung von Incoming Webhook. https://slack.com/intl/ja-jp/help/articles/115005265063
Um ein externes Paket in AWS Lambda zu importieren, müssen Sie auch den Code des externen Pakets hochladen. Da die Anfragen, die wir dieses Mal verwenden, externe Pakete sind, werden wir sie zusammen mit dem Hauptcode in einer Zip-Datei zusammenstellen.
#Speichern Sie die Paketdatei in dem Verzeichnis, das den Hauptcode enthält
$ pip install requests -t ./
#In eine Zip-Datei komprimieren
$ zip -r health_checker ./*
Dadurch wird eine Zip-Datei mit dem Namen "health_checker.zip" erstellt, die den Code und externe Pakete enthält.
Durch Klicken auf den Lambda-Link in AWS gelangen Sie zum Funktionslistenbildschirm. Klicken Sie in diesem Bildschirm auf "Funktion erstellen".
Stellen Sie auf dem Bildschirm für die Ersteinstellung zum Zeitpunkt der Erstellung Folgendes ein
Optional: ** Von Grund auf neu erstellen ** Funktionsname: ** Optional ** Laufzeit: ** Python 3.7 **
Laden Sie anschließend die Datei aus dem Element "Funktionscode" auf dem Funktionsbearbeitungsbildschirm hoch. Nehmen Sie die Einstellungen wie auf dem Bildschirm unten gezeigt vor. Der Punkt, auf den besonders geachtet werden muss, ist der "Handler". Im Handler geben Sie die Funktion an, die in Lambda ausgeführt werden soll. Die Art der Angabe ist ** Dateiname (ohne Erweiterung). Funktionsname (in der angegebenen Datei) **. Hier ist es also "health_checker.status_check".
Der bisher erstellte Code kann auf Lambda ausgeführt werden. Stellen Sie schließlich den Code so ein, dass er regelmäßig ausgeführt wird.
Klicken Sie im Funktionsbearbeitungsbildschirm auf "** + Trigger hinzufügen **". (Das Bild unten ist das ausgefüllte Formular, das bereits hinzugefügt wurde.)
Stellen Sie auf dem Bildschirm zum Erstellen des Triggers Folgendes ein.
Geben Sie für den Zeitplan an, dass er stündlich in Cron ausgeführt wird.
cron(0 0/1 * * ? *)
Wenn Sie den 0/1-Teil auf 0/2, 0/5 usw. ändern, können Sie das Intervall auf alle 2 Stunden oder alle 5 Stunden ändern.
Bei der Überwachung mehrerer Sites oder Sites, deren Laden lange dauert, kann die Standardzeitüberschreitung von Lambda von 3 Sekunden überschritten werden.
Um dies zu vermeiden, passen Sie die Zeitüberschreitung unter "Grundeinstellungen" etwas unterhalb der Mitte des Bearbeitungsbildschirms für die Lambda-Funktion an.
Für diejenigen, die sich besonders mit dem Erscheinungsbild von Slack-Benachrichtigungen befassen möchten, kann der Ausdrucksbereich mithilfe des Anhangsformats usw. erweitert werden!
Bitte als Referenz https://qiita.com/m-nakada/items/643909ca14f306a74999
Danke für deine harte Arbeit
Recommended Posts