Aufruf der CloudWatch-API (mit dem Blackbird AWS-Plugin)

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.

CloudWatch Outline

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.

How to get CloudWatch metrics

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.

Verbindung für CloudWatch herstellen

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

Aufruf der CloudWatch-API (mit dem Blackbird AWS-Plugin)
Mausbedienung mit Windows-API in Python
Versuchen Sie es mit der Wunderlist-API in Python
Versuchen Sie, die Kraken-API mit Python zu verwenden
Erhalten Sie E-Mails mithilfe der Google Mail-API in Java
Tweet mit der Twitter-API in Python
Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API
Ich habe versucht, die Detect Labels-API von AWS Rekognition zu verwenden
Versuchen Sie es mit der BitFlyer Ligntning API in Python
Holen Sie sich die Bild-URL mithilfe der Flickr-API in Python
Lassen Sie uns Emotionen mithilfe der Emotions-API in Python beurteilen
Versuchen Sie, die ChatWork-API und die Qiita-API in Python zu verwenden
Versuchen Sie, die DropBox Core-API mit Python zu verwenden
Laden Sie eine JPG-Datei mit der Google Drive-API in Python hoch
[AWS IoT] Registrieren Sie Dinge in AWS IoT mithilfe des AWS IoT Python SDK
Holen Sie sich LEAD-Daten mit der REST-API von Marketo in Python
Versuchen Sie, Tweets mithilfe der Twitter-API in großen Mengen zu löschen
OpenVINO verwendet die Inference Engine Python API in einer PC-Umgebung
Verwenden Sie die Such-API der National Parliament Library in Python