Chaque jour, je vérifie l'état du serveur sur le tableau de bord CloudWatch. Quand vous venez travailler, vérifiez d'abord les tableaux de bord dans l'ordre ... c'est ennuyeux! : persévérer: Je veux avoir des informations sur le tableau de bord à la fois! D'accord, écrivons en Python!
Ce serait bien d'utiliser get_metric_statistics ()
de Boto3.
Conformément aux Documents officiels, préparez-vous d'abord à charger CloudWatch avec Boto3.
import boto3
client = boto3.client('cloudwatch')
Il semble que get_metric_statistics ()
soit utilisé comme suit.
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 ou ʻAWS / ElastiCache
ou ʻAWS / RDS. Il est écrit en haut des informations affichées lorsque le curseur de la souris est placé sur les informations détaillées de l'onglet
Métriques graphiques` de CloudWatch.
MetricName
CPUUtilization
, MemoryUtilization
, DiskSpaceAvailable
, etc.
Il est écrit au-dessus de la ligne de séparation, la seconde à partir du haut des informations affichées lorsque le curseur de la souris est placé sur les informations détaillées de l'onglet Métriques graphiques
de CloudWatch.
Dimensions
ʻInstanceId,
CacheClusterId,
DBInstanceIdentifier, etc. Il est écrit sous le séparateur d'informations qui apparaît lorsque vous passez le curseur de votre souris sur les informations détaillées de l'onglet
Métriques graphiquesde CloudWatch. (Toutes les informations sur les dimensions sous la ligne de séparation) Comme dans l'exemple ci-dessus, Dimensions est écrit sous la forme suivante.
Dimensions=[{'Name': 'string', 'Value': 'string'}] Donc spécifiquement
Dimensions = [{'Nom': 'InstanceId', 'Valeur': 'i-xxxxxxxxxxx'}]
Dimensions=[{'Name': 'Role', 'Value': 'WRITER'}, {'Name': 'DBClusterIdentifier', 'Value': 'xxxxxxxxxxx'}]`
Il aura la forme.
Period Écrivez la période en secondes. Alors 1 minute → 60 5 minutes → 300 24 heures → 86400
Statistics Écrivez des statistiques.
La réponse de «get_metric_statistics ()» est la suivante.
{'Label': 'CPUUtilization', 'Datapoints': [{'Timestamp': datetime.datetime(2020, 2, 10, 19, 8, tzinfo=tzutc()), 'Maximum': 6.66666666666667, 'Unit': 'Percent'}], 'ResponseMetadata': {'RequestId': 'xxxxxxxxxxx', 'HTTPStatusCode': 200, ...(réduction)
Alors
La valeur est response ['Datapoints'] [0] [valeur spécifiée dans Statistics (Maximum dans la réponse ci-dessus)]
L'unité de la valeur est response ['Datapoints'] [0] ['Unit']
Il semble que vous puissiez vous sentir bien si vous utilisez autour.
Comme j'ai vérifié visuellement avec CloudWatch tous les jours, dans ce script, j'obtiendrai les dernières 24 heures à partir de la date et de l'heure d'exécution du script. Une fois que vous avez un script, vous pouvez l'exécuter régulièrement avec cron.
import boto3
from datetime import datetime, timedelta
client = boto3.client('cloudwatch')
def get_metric_statistics(name_space, metric_name, dimensions_values, statistic):
#Obtenir des informations CloudWatch
response = client.get_metric_statistics(
#Pour l'utilisation du processeur`AWS/EC2`Entrer
Namespace = name_space,
#Pour l'utilisation du processeur`CPUUtilization`Entrer
MetricName = metric_name,
# `[{'Name': 'InstanceId', 'Value': instance_id}]`Entrer
Dimensions = dimensions_values,
#Date et heure de début`Date et heure d'exécution du script-Un jour`Spécifié par
StartTime = datetime.now() + timedelta(days = -1),
#Date et heure de fin`Date et heure d'exécution du script`Spécifié par
EndTime = datetime.now(),
#Précisez 24 heures
Period = 86400,
# `Maximum`Entrer
Statistics = [statistic]
)
#Création de l'instruction de sortie
response_text = name_space + ' ' + metric_name + statistic + ': ' + str(response['Datapoints'][0][statistic]) + ' ' + response['Datapoints'][0]['Unit']
print(response_text)
#Métrique cible de sortie
instance_id = 'i-xxxxxxxxxxx'
#l'utilisation du processeur
get_metric_statistics('AWS/EC2', 'CPUUtilization', [{'Name': 'InstanceId', 'Value': instance_id}], 'Maximum')
#Utilisation de la mémoire
get_metric_statistics('System/Linux', 'MemoryUtilization', [{'Name': 'InstanceId', 'Value': instance_id}], 'Maximum')
Résultat de sortie
AWS/EC2 CPUUtilizationMaximum: 6.66666666666667 Percent
System/Linux MemoryUtilizationMaximum: 18.1909615159559 Percent
J'ai essayé d'obtenir des informations CloudWatch à partir d'un script Python.
Cette fois, j'ai utilisé un modèle avec un seul Datapoints
, mais selon la période spécifiée, il y aura plusieurs sorties.
Dans ce cas, utilisez le traitement en boucle pour viser les données nécessaires.
We're hiring! Nous développons un chatbot IA. Si vous êtes intéressé, n'hésitez pas à nous contacter depuis la page Wantedly!
Recommended Posts