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!
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.
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.
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.
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
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!
Recommended Posts