Ich habe versucht, CloudWatch-Daten mit Python abzurufen

Auslösen

Jeden Tag überprüfe ich den Status des Servers im CloudWatch-Dashboard. Wenn Sie zur Arbeit kommen, überprüfen Sie zuerst die Dashboards in der richtigen Reihenfolge ... es ist ärgerlich! : durchhalten: Ich möchte sofort Informationen auf dem Dashboard erhalten! Okay, lass uns in Python schreiben!

Holen Sie sich CloudWatch-Informationen mit Python

Es wäre schön, Boto3s get_metric_statistics () zu verwenden. Bereiten Sie gemäß Offizielle Dokumente zunächst das Laden von CloudWatch mit Boto3 vor.


import boto3
client = boto3.client('cloudwatch')

Es scheint, dass "get_metric_statistics ()" wie folgt verwendet wird.

response = client.get_metric_statistics(
           Namespace = 'string',
           MetricName = 'string',
           Dimensions = [
             {
               'Name': 'string',
               'Value': 'string'
             },
           ],
           StartTime = datetime(2020, 2, 11),
           EndTime = datetime(2020, 2, 11),
           Period = 123,
           Statistics = [
             'SampleCount'|'Average'|'Sum'|'Minimum'|'Maximum',
           ])

Namespace "AWS / EC2", "AWS / ElastiCache", "AWS / RDS" usw. Es wird oben in die Informationen geschrieben, die angezeigt werden, wenn der Mauszeiger auf die detaillierten Informationen auf der Registerkarte "Grafische Metriken" von CloudWatch gesetzt wird. CloudWatch.png

MetricName "CPUUtilization", "MemoryUtilization", "DiskSpaceAvailable" usw. Es wird über der Trennlinie geschrieben, die Sekunde über dem oberen Rand der Informationen, die angezeigt werden, wenn der Mauszeiger auf die detaillierten Informationen auf der Registerkarte "Grafische Metriken" von CloudWatch gesetzt wird.

Dimensions InstanceId, CacheClusterId, DBInstanceIdentifier usw. Es befindet sich unter dem Informationstrennzeichen, das angezeigt wird, wenn Sie den Mauszeiger über die detaillierten Informationen auf der CloudWatch-Registerkarte "Graphed Metrics" bewegen. (Alle Maßangaben unterhalb der Trennlinie) Wie im obigen Beispiel wird Dimensions in der folgenden Form geschrieben. Dimensions=[{'Name': 'string', 'Value': 'string'}] Also speziell Dimensions = [{'Name': 'InstanceId', 'Value': 'i-xxxxxxxxxxx'}] Dimensions=[{'Name': 'Role', 'Value': 'WRITER'}, {'Name': 'DBClusterIdentifier', 'Value': 'xxxxxxxxxxx'}] Es wird wie geformt sein.

Period Schreiben Sie den Zeitraum in Sekunden. Damit 1 Minute → 60 5 Minuten → 300 24 Stunden → 86400

Statistics Statistiken schreiben.

Antwort

Die Antwort von "get_metric_statistics ()" lautet wie folgt.

{'Label': 'CPUUtilization', 'Datapoints': [{'Timestamp': datetime.datetime(2020, 2, 10, 19, 8, tzinfo=tzutc()), 'Maximum': 6.66666666666667, 'Unit': 'Percent'}], 'ResponseMetadata': {'RequestId': 'xxxxxxxxxxx', 'HTTPStatusCode': 200, ...(Kürzung)

Damit Der Wert ist response ['Datenpunkte'] [0] [in Statistik angegebener Wert (Maximum in der obigen Antwort)] Die Einheit des Wertes ist "Antwort ['Datenpunkte'] [0] ['Einheit']" Es scheint, dass Sie dafür sorgen können, dass es sich gut anfühlt, wenn Sie es verwenden.

Was ich tatsächlich geschrieben habe (Teil)

Da ich jeden Tag visuell mit CloudWatch nachgesehen habe, werden in diesem Skript die letzten 24 Stunden ab dem Datum und der Uhrzeit der Skriptausführung angezeigt. Sobald Sie ein Skript haben, möchten Sie es möglicherweise regelmäßig mit cron ausführen.

import boto3
from datetime import datetime, timedelta

client = boto3.client('cloudwatch')

def get_metric_statistics(name_space, metric_name, dimensions_values, statistic):
    #Erhalten Sie CloudWatch-Informationen
    response = client.get_metric_statistics(
               #Für die CPU-Auslastung`AWS/EC2`Eingeben
               Namespace = name_space,
               #Für die CPU-Auslastung`CPUUtilization`Eingeben
               MetricName = metric_name,
               # `[{'Name': 'InstanceId', 'Value': instance_id}]`Eingeben
               Dimensions = dimensions_values,
               #Startdatum und -zeit`Datum und Uhrzeit der Skriptausführung-1 Tag`Spezifiziert durch
               StartTime = datetime.now() + timedelta(days = -1),
               #Enddatum und -zeit`Datum und Uhrzeit der Skriptausführung`Spezifiziert durch
               EndTime = datetime.now(),
               #Geben Sie 24 Stunden an
               Period = 86400,
               # `Maximum`Eingeben
               Statistics = [statistic]
               )

    #Erstellung von Ausgabeanweisungen
    response_text = name_space + ' ' + metric_name + statistic + ': ' + str(response['Datapoints'][0][statistic]) + ' ' + response['Datapoints'][0]['Unit']
    print(response_text)

#Zielmetrik ausgeben
instance_id = 'i-xxxxxxxxxxx'
#CPU auslastung
get_metric_statistics('AWS/EC2', 'CPUUtilization', [{'Name': 'InstanceId', 'Value': instance_id}], 'Maximum')
#Speichernutzung
get_metric_statistics('System/Linux', 'MemoryUtilization', [{'Name': 'InstanceId', 'Value': instance_id}], 'Maximum')

Ausgabeergebnis

AWS/EC2 CPUUtilizationMaximum: 6.66666666666667 Percent
System/Linux MemoryUtilizationMaximum: 18.1909615159559 Percent

Zusammenfassung

Ich habe versucht, CloudWatch-Informationen aus einem Python-Skript abzurufen. Dieses Mal habe ich ein Muster mit nur einem "Datenpunkt" verwendet, aber je nach angegebenem Zeitraum gibt es mehrere Ausgaben. Verwenden Sie in diesem Fall die Schleifenverarbeitung, um auf die erforderlichen Daten zu zielen.

We're hiring! Wir entwickeln einen KI-Chatbot. Wenn Sie interessiert sind, können Sie uns gerne über die Wantedly-Seite kontaktieren!

Referenzartikel

Boto3 Docs CloudWatch

Recommended Posts

Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Ich habe versucht, mit Blenders Python script_Part 01 zu beginnen
Ich habe versucht, mit Blenders Python script_Part 02 zu beginnen
Ich habe versucht, mit Python faker verschiedene "Dummy-Daten" zu erstellen
Ich habe versucht, mit Hy anzufangen
[Python] Ein Memo, das ich versucht habe, mit Asyncio zu beginnen
[Pandas] Ich habe versucht, Verkaufsdaten mit Python zu analysieren. [Für Anfänger]
Versuchen Sie, CloudWatch-Metriken mit der Python-Datenquelle re: dash abzurufen
[Python] Ich habe versucht, mithilfe der YouTube-Daten-API verschiedene Informationen abzurufen!
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe versucht, LLVM IR mit Python auszugeben
Ich habe versucht, die Herstellung von Sushi mit Python zu automatisieren
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
Holen Sie sich Youtube-Daten mit Python
Ich habe gRPC mit Python ausprobiert
Ich habe versucht, mit Python zu kratzen
[Data Science-Grundlagen] Ich habe versucht, mit Python von CSV auf MySQL zu speichern
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Ich habe versucht, fMRI-Daten mit Python zu analysieren (Einführung in die Dekodierung von Gehirninformationen)
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Ich habe versucht, Mine Sweeper auf dem Terminal mit Python zu implementieren
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
Ich habe versucht, künstliches Perzeptron mit Python zu implementieren
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
[Python] Ich habe versucht, Json von Tintenfischring 2 zu bekommen
Ich habe versucht, AOJs Integer-Theorie mit Python zu lösen
Link, um mit Python zu beginnen
Ich habe versucht, Python zu berühren (Installation)
Ich habe versucht, WebScraping mit Python.
[Python] Mit DataReader Wirtschaftsdaten abrufen
Erste Schritte mit Python
Ich möchte mit Python debuggen
Ich habe versucht, Prolog mit Python 3.8.2 auszuführen.
Ich habe die SMTP-Kommunikation mit Python versucht
Ich habe versucht, die statistischen Daten der neuen Corona mit Python abzurufen und zu analysieren: Daten der Johns Hopkins University
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich möchte Daten mit Python analysieren können (Teil 3)
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Ich habe verschiedene Methoden ausprobiert, um japanische Post mit Python zu senden
Ich möchte Daten mit Python analysieren können (Teil 1)
Ich möchte Daten mit Python analysieren können (Teil 4)
Ich möchte Daten mit Python analysieren können (Teil 2)
Ich habe versucht "Wie man eine Methode in Python dekoriert"
Ich habe versucht, mit Hy ・ Define a class zu beginnen
[Python] Ich habe versucht, Tweets über Corona mit WordCloud zu visualisieren
Mayungos Python Learning Episode 3: Ich habe versucht, Zahlen zu drucken
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Holen Sie sich zusätzliche Daten zu LDAP mit Python (Writer und Reader)
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
Ich habe versucht, mit pypyodbc schnell Daten von AS / 400 abzurufen
Ich habe versucht, Stückpreisdaten nach Sprache mit Real Gachi von Python zu aggregieren und zu vergleichen
Ich habe versucht, einen Pandas-Datenrahmen zu erstellen, indem ich mit Python Informationen zum Lebensmittelrückruf abgekratzt habe
Ich habe versucht, die Behandlung von Python-Ausnahmen zusammenzufassen
Ich habe versucht, PLSA in Python zu implementieren
[Hinweis] Mit Python Daten von PostgreSQL abrufen
Ich habe versucht, Autoencoder mit TensorFlow zu implementieren