Wie bekomme ich die aktuellsten Cloudwatch-Metrik-Daten für eine Instanz mit Boto?

Ich versuche, die aktuellsten Daten für die CPU-Auslastung für eine Instanz zu erhalten (eigentlich mehrere Instanzen, aber nur eine zu starten), aber der folgende Aufruf gibt keine Daten zurück:

cw = boto.cloudwatch.connect_to_region(Region) cw.get_metric_statistics( 300, datetime.datetime.now() - datetime.timedelta(seconds=600), datetime.datetime.now(), 'CPUUtilization', 'AWS/EC2', 'Average', dimensions={'InstanceId':['i-11111111']} # for stats across multiple instances: # dimensions={'InstanceId':['i-11111111', 'i-22222222', 'i-33333333']} ) 

Verschiedene Beiträge auf anderen Seiten zeigen an, dass die Überprüfung der Region korrekt ist und überprüft, dass die period (erstes Argument) ein Vielfaches von 60 ist und (wenn Sie keine detaillierte Überwachung aktiviert haben) größer als oder gleich 300 ist. Ich habe Überprüft all diese Dinge und ich bekomme immer noch keine Daten.

3 Solutions collect form web for “Wie bekomme ich die aktuellsten Cloudwatch-Metrik-Daten für eine Instanz mit Boto?”

Dies ist eine Sommerzeit / Zeitzone Problem!

Sie müssen UTC-Zeit verwenden, wenn Sie Statistiken von Cloudwatch erhalten:

  cw = boto.cloudwatch.connect_to_region(Region) cw.get_metric_statistics( 300, datetime.datetime. utcnow() - datetime.timedelta(seconds=600), datetime.datetime. utcnow() , 'CPUUtilization', 'AWS/EC2', 'Average', dimensions={'InstanceId':['i-11111111']} ) 

Aus einigen Experimenten scheint es auch, dass die Angabe mehrerer InstanceId Dimensionen zu Daten nur für die zuletzt angegebene Instanz führen wird (zumindest wenn die detaillierte Überwachung nicht aktiviert ist).

Ich habe auch keine Daten zurückgegeben, wenn Sie Einheiten auf "Megabytes" zurückgeben, während die Einstellung von Einheiten auf "Bytes" zurückgegeben Daten.

Beide sind in der API-Referenz erlaubt.

 data = conn.get_metric_statistics(period=60,start_time=start,end_time=end,metric_name="NetworkOut",namespace="AWS/EC2",statistics="Average",unit="Megabytes",dimensions={'InstanceId':'XXXXXX'}) print "data length: %d"%len(data) # data length: 0 data = conn.get_metric_statistics(period=60,start_time=start,end_time=end,metric_name="NetworkOut",namespace="AWS/EC2",statistics="Average",unit="Bytes",dimensions={'InstanceId':'XXXXXX'}) print "data length: %d"%len(data) # data length: 59 

Ich habe festgestellt, dass AWS/Billing Metriken "live" nur in einer Region – uns-Ost-1 .

Auch AWS CLI ( aws cloudwatch get-metric-statistics ) wird fehlerhaft aus, wenn du versuchst, mehr als 1440 Datenpunkte von CloudWatch zu packen. Wenn Sie auf eine größere – --period .

Um Fallstricke zu vermeiden, kannst du meinen EC2_Metrics_Plotter benutzen .

  • Wie man Boto mit Stoff kombiniert
  • Ermittlung des Datums / Uhrzeits für die Erstellung von Amazon EC2
  • Amazon S3-Upload fehlschlägt mit boto + Python
  • Boto Datei hochladen auf S3 fehl unter Windows [errno: 10054]
  • Vergleich der Startzeit der EC2-Instanz und der aktuellen Zeit in Python
  • Boto Ec2 und elastische IPs
  • Dynamodb boto put_item vom Typ Karte "M"
  • Django wird keine statischen Dateien von Amazon S3 mit benutzerdefinierter Domain bedienen
  • S3 mit boto und SigV4 - fehlender Host-Parameter
  • Migration von Amazon S3 zu Azure Storage (Django Web App)
  • Nicht in der Lage, EMR-Cluster mit boto zu paginieren
  • Python ist die beste Programmiersprache der Welt.