Einfache Serverüberwachung mit AWS Lambda (Python) und Ergebnisbenachrichtigung mit Slack

Was ich erreichen wollte

Was wurde endlich erreicht


Details einstellen

VPC-Einstellungen

――Siehe, was du erreichen wolltest, da es unten vollständig behandelt wurde. - https://www.joyzo.co.jp/blog/2325

IAM-Einstellungen

--Wenn Sie "Lambda" erstellen, wählen Sie "Einfache Microservice-Berechtigungen" als Rollenvorlage aus.

CloudWatch-Ereignisse - Zeitplaneinstellungen

Slack

AWS Lambda(Python)

lambda_function.py


import json
import requests
import boto3

BUCKET_NAME = 'xxxxxxxxxx'
OBJECT_NAME = 'xxxxxxxxxx/servers.json'
SLACK_POST_URL = 'https://hooks.slack.com/services/xxxxxxxxxx/xxxxxxxxxx/xxxxxxxxxxxxxxxxxxxx'

def lambda_handler(event, context):
    json_data = __getServers()
    __check_server(json_data)

def __getServers():
   s3 = boto3.resource('s3')
   obj = s3.Object(BUCKET_NAME, OBJECT_NAME)
   response = obj.get()
   body = response['Body'].read()
   return body.decode('utf-8')

def __check_server(json_data):
    data = json.loads(json_data)
    servers = data['servers']

    has_error = False

    for server in servers:
        name = server['name']
        url = server['url']
        print("Check: " + name)

        try:
            r = requests.get(url)
            if r.status_code != 200:
                __send_error_message(name, url)
                has_error = True
        except requests.exceptions.RequestException as e:
            __send_request_error_message(name, url)
            has_error = True

    if has_error == False:
        __send_success_message()

def __send_error_message(name, url):
    payload = {
        "text": name + '\n' + url + '\n' + '*ERROR!*',
        "icon_emoji": ":x:"
    }
    __send_message(payload)

def __send_request_error_message(name, url):
    payload = {
        "text": name + '\n' + url + '\n' + '*Request Error!*',
        "icon_emoji": ":warning:"
    }
    __send_message(payload)

def __send_success_message():
    payload = {
        "text": "All Servers OK!",
        "icon_emoji": ":o:"
    }
    __send_message(payload)

def __send_message(payload):
    try:
        return requests.post(SLACK_POST_URL, json=payload)
    except requests.exceptions.RequestException as e:
        return None


Vorsichtsmaßnahmen beim Einstellen von AWS Lambda (Python)

pip install requests -t .
zip -r lambda_function.zip *

Verschiedene Gefühle

――Wenn es möglich ist, VPC in AWS Lambda einzustellen, ist es möglich, Lambda mit einer festen IP-Adresse als Datenquelle auszuführen, sodass die Verwendung erweitert wurde. ――Die Zusammenarbeit mit Slack ist als bequemes Benachrichtigungsziel zu einfach und bequem.

Recommended Posts

Einfache Serverüberwachung mit AWS Lambda (Python) und Ergebnisbenachrichtigung mit Slack
Site-Überwachung und Alarmbenachrichtigung mit AWS Lambda + Python + Slack
Beispiel für eine Slack-Benachrichtigung mit Python Lambda
Dynamische HTML-Seiten mit AWS Lambda und Python
Machen Sie mit AWS Lambda und Python gewöhnliche Tweets flottenartig
[Python] Scraping in AWS Lambda
Einfacher HTTP-Server mit Python
Es ist einfach, SQL mit Python auszuführen und das Ergebnis in Excel auszugeben
Schreiben Sie die AWS Lambda-Funktion in Python
Benachrichtigen Sie HipChat mit AWS Lambda (Python)
Ich habe Node.js und Python beim Erstellen eines Miniaturbilds mit AWS Lambda verglichen
[AWS] Verwenden von INI-Dateien mit Lambda [Python]
Geräteüberwachung durch On-Box Python von IOS-XE
Umgang mit "Jahren und Monaten" in Python
Verkehrsüberwachung mit Kibana, ElasticSearch und Python
[AWS] Verknüpfen Sie Lambda und S3 mit boto3
Verarbeiten Sie Bilder in Python ganz einfach mit Pillow
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
Einfaches Web-Scraping mit Python und Ruby
Berühren Sie AWS mit Serverless Framework und Python
[AWS] Erstellen Sie mit CodeStar eine Python Lambda-Umgebung und führen Sie Hello World aus
Rabbit MQ Nachrichtenbenachrichtigungs-App mit Growl in Python ~ mit Raspeye und Julius ~
Laden Sie das, was Sie angefordert haben, mit AWS Lambda Python in S3 hoch
Stellen Sie Docker in Windows Home und führen Sie einen einfachen Webserver mit Python aus
Unterschiede zwischen queryStringParameters und multiValueQueryStringParameters in AWS Lambda
LINE BOT mit Python + AWS Lambda + API Gateway
Serverlose Anwendung mit AWS SAM! (APIGATEWAY + Lambda (Python))
Einfache Röntgenaufnahme mit Lambda Layer und CloudFormation / sam-cli
Starten Sie einen Webserver mit Python und Flask
Erste Schritte mit AWS IoT in Python
Erstellen Sie Einstellungen in Terraform, um Nachrichten von AWS Lambda Python3.8 an Slack zu senden
Stellen Sie den Verfügbarkeitsstatus potenziell teurer Instanzen in Lambda auf Slack
Amazon API Gateway und AWS Lambda Python-Version
Erstellen Sie Amazon Linux mit AWS EC2 und melden Sie sich an
Laden Sie mp4 einfach teilweise mit Python und youtube-dl herunter!
Mit Python psycopg2 erhalten Sie Ergebnisse im Diktatformat
Berechnen Sie Pose- und Transformationsunterschiede in Python mit ROS
Einfache Einstellungen für HTTP-Server und Systemd-Autostart in Go
Stellen Sie die Python 3-Funktion mit Serverless Framework unter AWS Lambda bereit
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
Ich möchte Lambda mit Python auf Mac AWS!
Starten Sie die numerische Berechnung mit Python (mit Homebrew und Pip).
[Python] Memo zur erneuten Verarbeitung (Exponential Backoff) in AWS Lambda
Erstellen Sie mit Quarry einen gefälschten Minecraft-Server in Python
DNS-Server in Python ....
Lokaler Server mit Python
Gepostet als Anhang zu Slack auf AWS Lambda (Python)
Einfache Verwendung der Nifty Cloud API mit Botocore und Python
Veriloggen und Cocotb werden nur zum Entwerfen und Testen von Verilog in Python verwendet.
Bildschirm und geteilter Bildschirm mit Python- und SSH-Anmeldung am Remote-Server
[AWS] Versuchen Sie, die Python-Bibliothek mit SAM + Lambda (Python) zur Ebene hinzuzufügen.
Ich habe versucht, Follow Management mit Twitter API und Python (einfach)
Tipps zum Codieren kurz und einfach in Python zu lesen
Einfach mit nur Python! Geben Sie Graphviz-Zahlen im draw.io-Format aus!
Veröffentlichen Sie regelmäßig Bilder von Papillon auf Python + AWS Lambda + Slack