Es mag ein wenig verbreiteter Artikel sein, aber verwenden wir boto, um die CloudWatch-API aufzurufen und verschiedene Metriken abzurufen. Dieser Mechanismus wird auch in verschiedenen AWS-Plugins von Blackbird verwendet. Lassen Sie uns gemeinsam unser Verständnis von NameSpace und solchen konzeptionellen Dingen in CloudWatch vertiefen.
Das Grundkonzept von CloudWatch ist
Es gibt. Dann ist es in keiner bestimmten Reihenfolge, aber ich werde in der Reihenfolge der leicht verständlichen folgen.
Metrics
Metriken sind eines der einfachsten Konzepte, zabbix-weise, Elemente. Es ist ein Bild, dass ein Element verschiedene Werte in chronologischer Reihenfolge enthält. Im Fall von RDS wird beispielsweise der Wert, wie viel Swap ausgetauscht wurde, in Bytes in Metriken eingegeben, die als Swap-Verwendung bezeichnet werden.
Namespaces
Namespaces enthält viele der oben genannten Metriken, die freundlich und quantitativ sind. In Zabbix-Begriffen entspricht es dem Konzept des Hosts (oder auch der Hostgruppen).
Es scheint, als gäbe es eine Metrik namens Swap Usage oder eine Metrik namens Database Connections in einem Host namens db001.
Dimensions
Die Abmessungen sind etwas flauschig und verwirrend (zumindest dachte ich das). In Bezug auf Zabbix handelt es sich um eine Anwendung (Wenn HostGroup Namespaces ist, ist Host Dimensions).
Periods
Aus Sicht der API zum Abrufen der Metrik entspricht sie 1min, 5min in Avg (1min) oder Avg (5min) aus Sicht der CloudWatch-Benutzeroberfläche, je nachdem, welche Intervalldaten erfasst werden. Es ist der Zeitraum.
Time stamps
Es ist ein Zeitstempel. Zeitstempel werden für jede Metrik in Namespaces festgelegt, um anzugeben, welche Zeitmetrik wie viel ist. Jeder, der manchmal Daten mit einem Zeitstempel auf Zabbix Sender sendet, kann sich das als gleichwertig mit diesem Zeitstempel vorstellen.
Statistics
Auf Japanisch wird es als Statistik betrachtet, aber ich frage mich, ob es der Methode persönlich näher steht als der Statistik und wie man Daten abruft. Dies kann mit Metric verfügbar sein oder nicht.
Wenn die Einheit der Metrik beispielsweise Bytes ist, berechnet Sum die Summe der Bytes pro Zeiteinheit, Average gibt den Durchschnitt pro Zeiteinheit an und Count gibt die Häufigkeit des Auftretens an.
In Zabbix entspricht dies meiner Meinung nach der Berechnung zum Zeitpunkt des Speicherns, aber der große Unterschied besteht darin, dass Sie beim Abrufen nur Rohdaten eingeben und beliebige Statistiken aufrufen können.
Units
Wie der Name schon sagt, handelt es sich um eine Einheit. Dies kann Bytes, Bytes / Sekunde,% oder die Anzahl der Male (einfach eine Zahl) sein.
Nachdem Sie nun eine allgemeine Vorstellung davon haben, was Sie tun, verwenden wir die CloudWatch-API, um Metriken abzurufen. Als allererstes
pip install boto
Installation von Boto. boto ist eine Python-Bindungsbibliothek zum Aufrufen von AWS-APIs, die jedoch möglicherweise nicht erläutert werden muss. Sogar Amsel verwendet Boto intern.
Der Klassenname lautet "boto.ec2.cloudwatch.CloudWatchConnection", aber das Image ist ein API-Token-Objekt-ähnliches Image.
import datetime
import boto.ec2.cloudwatch
conn = boto.ec2.cloudwatch.connect_to_region(
region_name='ap-northeast-1',
aws_access_key_id='YOUR_AWS_ACCESS_KEY_ID',
aws_secret_access_key='YOUR_AWS_SECRET_ACCESS_KEY'
)
Wenn Sie hier die richtigen Anmeldeinformationen angeben, erhalten Sie eine Verbindungsinstanz. Wenn ich also versuche, die Anforderungsanzahl für 15 Minuten von der neuesten ELB und Summe alle 5 Minuten mithilfe der Verbindungsinstanz abzurufen
end_time = datetime.datetime.utcnow()
start_time = end_time - datetime.timedelta(minutes=15)
metrics = conn.get_metric_statistics(
#Punkt gibt die Anzahl der Sekunden mit int an
period=300,
#start_Zeit ist der Beginn des Zeitstempelzeitraums datetime.Wird durch das Datum / Uhrzeit-Objekt angegeben
start_time=start_time,
#end_Zeit ist Start_Wie die Zeit
#Datum / Uhrzeit am Ende des Zeitstempelzeitraums.Wird durch das Datum / Uhrzeit-Objekt angegeben
end_time=end_time,
#metric_Geben Sie, wie der Name schon sagt, den Namen der Metrik mit str an
metric_name='RequestCount',
#Geben Sie den Namespace mit str an
namespace='AWS/ELB',
statistics='Sum',
#Dimensionen geben Schlüssel und Wert mit Wörterbuch an
dimensions={
'LoadBalancerName': 'YOUR_ELB_NAME',
'AvailabilityZone': 'ap-northeast-1a'
},
#Es gibt einige Einheiten, die bedeutungslos sind, auch wenn sie in Metric angegeben sind
unit=None
)
print metrics
Ein solcher Wert wird zurückgegeben.
[
{
u'Timestamp': datetime.datetime(2014, 12, 7, 10, 48),
u'Sum': 143426.0,
u'Unit': u'Count'
},
{
u'Timestamp': datetime.datetime(2014, 12, 7, 10, 38),
u'Sum': 135535.0,
u'Unit': u'Count'
},
{
u'Timestamp': datetime.datetime(2014, 12, 7, 10, 43),
u'Sum': 139088.0,
u'Unit': u'Count'
}
]
Ein Wörterbuch mit dem Zeitstempel als Schlüssel, dem Objekt datetime.datetime
als Wert, der angegebenen Statistik als Schlüssel, dem Metrikwert als Wert, der Einheit als Schlüssel und dem Namen der angegebenen (oder defekten) Einheit als Wert. Die Liste von wird zurückgegeben (aus der obigen Struktur ist ersichtlich).
Blackbird sendet also basierend darauf Daten an den zabbix-Server.
Recommended Posts