Le site en exploitation étant parfois en panne, C'est simple, mais j'ai préparé un moniteur de site. (Il existe divers services de surveillance généreux dans le monde, y compris l'acquisition de métriques de serveur, mais cette fois, nous en faisons un moyen peu coûteux et facile de se connecter à Slack.)
Maintenant, écrivons le code pour vérifier le site. Le flux général consiste à vérifier l'état HTTP de l'URL spécifiée et à informer Slack s'il existe des sites autres que 200. (Au contraire, s'il n'y a pas de problème, Slack ne sera pas averti. Veuillez inclure l'URL de la page 404, etc. lors du test.) L'ensemble est le suivant.
health_checker.py
# -*- coding: utf-8 -*-
import requests
import json
#Spécifiez l'URL du site que vous souhaitez surveiller en tant que tableau
urls = ['https://www.rakuten.co.jp/']
def post_slack_h(c):
#Décrire l'URL du Webhook obtenue en activant les Webhooks entrants dans Slack
post_url = 'URL du Webhook Slack'
requests.post(post_url, data=json.dumps({
"username": "Regarder le site",
'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()
Veuillez consulter le support officiel ci-dessous pour connaître la procédure d'utilisation du webhook entrant. https://slack.com/intl/ja-jp/help/articles/115005265063
Pour importer un package externe sur AWS Lambda, vous devez également télécharger le code du package externe. Les requêtes utilisées cette fois étant des packages externes, elles seront regroupées dans un fichier zip avec le code principal.
#Enregistrez le fichier du package dans le répertoire contenant le code principal
$ pip install requests -t ./
#Compresser dans un fichier zip
$ zip -r health_checker ./*
Cela créera un fichier zip appelé "health_checker.zip" qui contient le code et les packages externes.
Cliquez sur le lien Lambda sur AWS pour accéder à l'écran de la liste des fonctions. Depuis cet écran, cliquez sur «Créer une fonction».
Sur l'écran de réglage initial au moment de la création, réglez comme suit
Facultatif: ** Créer à partir de zéro ** Nom de la fonction: ** Facultatif ** Exécution: ** Python 3.7 **
Ensuite, téléchargez le fichier à partir de l'élément «Code de fonction» sur l'écran d'édition de fonction. Effectuez les réglages comme indiqué sur l'écran ci-dessous. Le point à prêter une attention particulière est le "gestionnaire". Le gestionnaire est l'endroit où vous spécifiez la fonction à exécuter dans Lambda. La manière de spécifier est ** nom de fichier (sans extension). Nom de fonction (dans le fichier spécifié) **. Donc, voici "health_checker.status_check".
Le code créé jusqu'à présent est prêt à être exécuté sur Lambda. Enfin, définissez le code pour qu'il s'exécute régulièrement.
Cliquez sur "** + Ajouter un déclencheur **" dans l'écran d'édition des fonctions. (L'image ci-dessous est le formulaire rempli qui a déjà été ajouté)
Sur l'écran de création de déclencheur, définissez comme suit.
Pour le planning, spécifions qu'il sera exécuté toutes les heures dans Cron.
cron(0 0/1 * * ? *)
Si vous changez la partie 0/1 en 0/2, 0/5, etc., vous pouvez changer l'intervalle à toutes les 2 heures ou toutes les 5 heures.
Lors de la surveillance de plusieurs sites ou sites dont le chargement prend beaucoup de temps, le délai d'expiration par défaut de Lambda de 3 secondes peut être dépassé.
Pour éviter cela, ajustez le délai d'expiration à partir des "Paramètres de base" légèrement en dessous du milieu de l'écran d'édition de la fonction Lambda.
Pour ceux qui veulent être particuliers sur l'apparence des notifications Slack, la gamme d'expressions peut être élargie en utilisant le format de pièce jointe, etc.!
S'il vous plaît pour référence https://qiita.com/m-nakada/items/643909ca14f306a74999
Je vous remercie pour votre travail acharné
Recommended Posts