CloudWatch Metrik-Konnektor - AWS IoT Greengrass

AWS IoT Greengrass Version 1 trat am 30. Juni 2023 in die erweiterte Lebensphase ein. Weitere Informationen finden Sie in der AWS IoT Greengrass V1 Wartungsrichtlinie. Nach diesem Datum AWS IoT Greengrass V1 werden keine Updates mehr veröffentlicht, die Funktionen, Verbesserungen, Bugfixes oder Sicherheitspatches bieten. Geräte, die auf laufen, werden AWS IoT Greengrass V1 nicht gestört und funktionieren weiterhin und stellen eine Verbindung zur Cloud her. Wir empfehlen Ihnen dringend, zu migrieren AWS IoT Greengrass Version 2, da dies wichtige neue Funktionen und Unterstützung für zusätzliche Plattformen bietet.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

CloudWatch Metrik-Konnektor

Der CloudWatch Metrics Connector veröffentlicht benutzerdefinierte Metriken von Greengrass-Geräten in Amazon CloudWatch. Der Konnektor bietet eine zentrale Infrastruktur für die Veröffentlichung von CloudWatch Metriken, mit der Sie die Greengrass-Kernumgebung überwachen und analysieren und auf lokale Ereignisse reagieren können. Weitere Informationen finden Sie unter Verwenden von Amazon- CloudWatch Metriken im Amazon- CloudWatch Benutzerhandbuch.

Dieser Konnektor empfängt Metrikdaten wie MQTT-Nachrichten. Der Konnektor stapelt Metriken, die sich im selben Namespace befinden, und veröffentlicht sie CloudWatch in regelmäßigen Abständen in .

Dieser Konnektor hat die folgenden Versionen.

Version

ARN

5

arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/5

4

arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/4

3

arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/3

2

arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/2

1

arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/1

Informationen über Versionsänderungen finden Sie im Änderungsprotokoll.

Voraussetzungen

Dieser Konnektor hat die folgenden Anforderungen:

Version 3 - 5
  • AWS IoT Greengrass Core-Software v1.9.3 oder höher.

  • Python Version 3.7 oder 3.8 ist auf dem Core-Gerät installiert und der PATH-Umgebungsvariablen hinzugefügt.

    Anmerkung

    Um Python 3.8 zu verwenden, führen Sie den folgenden Befehl aus, um einen symbolischen Link vom standardmäßigen Python-3.7-Installationsordner zu den installierten Python-3.8-Binärdateien zu erstellen.

    sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7

    Dadurch wird Ihr Gerät so konfiguriert, dass es die Python-Anforderung für AWS IoT Greengrass erfüllt.

  • Die Greengrass-Gruppenrolle, die so konfiguriert ist, dass sie die cloudwatch:PutMetricData Aktion zulässt, wie in der folgenden Beispielrichtlinie AWS Identity and Access Management (IAM) gezeigt.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1528133056761", "Action": [ "cloudwatch:PutMetricData" ], "Effect": "Allow", "Resource": "*" } ] }

    Für die Gruppenrollenanforderung müssen Sie die Rolle so konfigurieren, dass die erforderlichen Berechtigungen erteilt werden, und sicherstellen, dass die Rolle der Gruppe hinzugefügt wurde. Weitere Informationen finden Sie unter Verwalten der Greengrass-Gruppenrolle (Konsole) oder Verwalten der Greengrass-Gruppenrolle (CLI).

    Weitere Informationen zu CloudWatch Berechtigungen finden Sie in der Amazon- CloudWatch Berechtigungsreferenz im IAM-Benutzerhandbuch.

Versions 1 - 2
  • AWS IoT Greengrass Core-Software v1.7 oder höher.

  • Python Version 2.7 wurde auf dem Core-Gerät installiert und der PATH-Umgebungsvariablen hinzugefügt.

  • Die Greengrass-Gruppenrolle, die so konfiguriert ist, dass sie die cloudwatch:PutMetricData Aktion zulässt, wie im folgenden Beispiel einer AWS Identity and Access Management (IAM)-Richtlinie gezeigt.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1528133056761", "Action": [ "cloudwatch:PutMetricData" ], "Effect": "Allow", "Resource": "*" } ] }

    Für die Gruppenrollenanforderung müssen Sie die Rolle so konfigurieren, dass die erforderlichen Berechtigungen erteilt werden, und sicherstellen, dass die Rolle der Gruppe hinzugefügt wurde. Weitere Informationen finden Sie unter Verwalten der Greengrass-Gruppenrolle (Konsole) oder Verwalten der Greengrass-Gruppenrolle (CLI).

    Weitere Informationen zu CloudWatch Berechtigungen finden Sie in der Amazon- CloudWatch Berechtigungsreferenz im IAM-Benutzerhandbuch.

Connector-Parameter

Dieser Konnektor stellt die folgenden Parameter bereit:

Versions 4 - 5
PublishInterval

Die maximale Wartezeit in Sekunden, die bis zur Veröffentlichung von Batch-Metriken für einen bestimmten Namespace vergehen kann. Der maximale Wert beträgt 900. Um den Konnektor so zu konfigurieren, dass er Metriken veröffentlicht, sobald sie empfangen werden (ohne Batching), geben Sie 0 an.

Der Konnektor veröffentlicht in , CloudWatch nachdem er 20 Metriken im selben Namespace oder nach dem angegebenen Intervall erhalten hat.

Anmerkung

Der Konnektor garantiert nicht die Reihenfolge der veröffentlichten Ereignisse.

Anzeigename in der AWS IoTKonsole: Publish interval

Erforderlich: true

Typ: string

Zulässige Werte: 0 - 900

Gültiges Muster: [0-9]|[1-9]\d|[1-9]\d\d|900

PublishRegion

Die AWS-Region, in der CloudWatch Metriken veröffentlicht werden sollen. Dieser Wert überschreibt die standardmäßige Greengrass-Metrik-Region. Er ist nur bei der Veröffentlichung von regionsübergreifenden Metriken erforderlich.

Anzeigename in der AWS IoTKonsole: Region veröffentlichen

Erforderlich: false

Typ: string

Gültiges Muster: ^$|([a-z]{2}-[a-z]+-\d{1})

MemorySize

Der Speicher (in KB), der dem Konnektor zugewiesen werden soll.

Anzeigename in der AWS IoT Konsole: Speichergröße

Erforderlich: true

Typ: string

Gültiges Muster: ^[0-9]+$

MaxMetricsToRetain

Die maximale Anzahl von Metriken über alle Namespaces hinweg, die im Speicher gespeichert werden können, bevor sie durch neue Metriken ersetzt werden. Der minimale Wert beträgt 2000.

Diese Begrenzung gilt, wenn keine Verbindung zum Internet besteht und der Konnektor beginnt, die Metriken zu puffern, um sie später zu veröffentlichen. Wenn der Puffer voll ist, werden die ältesten Metriken durch neue Metriken ersetzt. Metriken in einem bestimmten Namespace werden nur durch Metriken im selben Namespace ersetzt.

Anmerkung

Metriken werden nicht gespeichert, wenn der Host-Prozess für den Konnektor unterbrochen wird. Eine solche Unterbrechung kann beispielsweise während der Gruppenbereitstellung oder beim Neustart des Geräts auftreten.

Anzeigename in der AWS IoT Konsole: Maximale Anzahl an beizubehaltenden Metriken

Erforderlich: true

Typ: string

Gültiges Muster: ^([2-9]\d{3}|[1-9]\d{4,})$

IsolationMode

Der Containerisierungsmodus für diesen Konnektor. Der Standardwert ist GreengrassContainer. Hierbei wird der Konnektor in einer isolierten Laufzeitumgebung innerhalb des AWS IoT Greengrass-Containers ausgeführt.

Anmerkung

Die Standardeinstellung für Containerisierung für die Gruppe gilt nicht für Konnektoren.

Anzeigename in der AWS IoT Konsole: Container-Isolationsmodus

Erforderlich: false

Typ: string

Gültige Werte: GreengrassContainer oder NoContainer.

Gültiges Muster: ^NoContainer$|^GreengrassContainer$

Versions 1 - 3
PublishInterval

Die maximale Wartezeit in Sekunden, die bis zur Veröffentlichung von Batch-Metriken für einen bestimmten Namespace vergehen kann. Der maximale Wert beträgt 900. Um den Konnektor so zu konfigurieren, dass er Metriken veröffentlicht, sobald sie empfangen werden (ohne Batching), geben Sie 0 an.

Der Konnektor veröffentlicht in , CloudWatch nachdem er 20 Metriken im selben Namespace oder nach dem angegebenen Intervall erhalten hat.

Anmerkung

Der Konnektor garantiert nicht die Reihenfolge der veröffentlichten Ereignisse.

Anzeigename in der AWS IoTKonsole: Publish interval

Erforderlich: true

Typ: string

Zulässige Werte: 0 - 900

Gültiges Muster: [0-9]|[1-9]\d|[1-9]\d\d|900

PublishRegion

Die AWS-Region, in der CloudWatch Metriken veröffentlicht werden sollen. Dieser Wert überschreibt die standardmäßige Greengrass-Metrik-Region. Er ist nur bei der Veröffentlichung von regionsübergreifenden Metriken erforderlich.

Anzeigename in der AWS IoTKonsole: Region veröffentlichen

Erforderlich: false

Typ: string

Gültiges Muster: ^$|([a-z]{2}-[a-z]+-\d{1})

MemorySize

Der Speicher (in KB), der dem Konnektor zugewiesen werden soll.

Anzeigename in der AWS IoT Konsole: Speichergröße

Erforderlich: true

Typ: string

Gültiges Muster: ^[0-9]+$

MaxMetricsToRetain

Die maximale Anzahl von Metriken über alle Namespaces hinweg, die im Speicher gespeichert werden können, bevor sie durch neue Metriken ersetzt werden. Der minimale Wert beträgt 2000.

Diese Begrenzung gilt, wenn keine Verbindung zum Internet besteht und der Konnektor beginnt, die Metriken zu puffern, um sie später zu veröffentlichen. Wenn der Puffer voll ist, werden die ältesten Metriken durch neue Metriken ersetzt. Metriken in einem bestimmten Namespace werden nur durch Metriken im selben Namespace ersetzt.

Anmerkung

Metriken werden nicht gespeichert, wenn der Host-Prozess für den Konnektor unterbrochen wird. Eine solche Unterbrechung kann beispielsweise während der Gruppenbereitstellung oder beim Neustart des Geräts auftreten.

Anzeigename in der AWS IoT Konsole: Maximale Anzahl an beizubehaltenden Metriken

Erforderlich: true

Typ: string

Gültiges Muster: ^([2-9]\d{3}|[1-9]\d{4,})$

Beispiel für das Erstellen eines Konnektors (AWS CLI)

Der folgende CLI-Befehl erstellt eine ConnectorDefinition mit einer Anfangsversion, die den CloudWatch Metrics-Konnektor enthält.

aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyCloudWatchMetricsConnector", "ConnectorArn": "arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/4", "Parameters": { "PublishInterval" : "600", "PublishRegion" : "us-west-2", "MemorySize" : "16", "MaxMetricsToRetain" : "2500", "IsolationMode" : "GreengrassContainer" } } ] }'

In der AWS IoT Greengrass -Konsole können Sie einen Connector über die Seite Connectors der Gruppe hinzufügen. Weitere Informationen finden Sie unter Erste Schritte mit Greengrass-Konnektoren (Konsole).

Eingabedaten

Dieser Konnektor akzeptiert Metriken zu einem MQTT-Thema und veröffentlicht die Metriken in CloudWatch. Eingabenachrichten müssen im JSON-Format vorliegen.

Themenfilter im Abonnement

cloudwatch/metric/put

Nachrichten-Eigenschaften
request

Informationen über die Metrik in dieser Meldung.

Das Anforderungsobjekt enthält die metrischen Daten, die an CloudWatch veröffentlicht werden sollen. Die Metrikwerte müssen den Spezifikationen der PutMetricData API entsprechen. Es werden nur die Eigenschaften namespace, metricData.metricName und metricData.value benötigt.

Erforderlich: true

Typ: object, der die folgenden Eigenschaften enthält:

namespace

Der benutzerdefinierte Namespace für die Metrikdaten in dieser Anforderung. CloudWatch verwendet Namespaces als Container für Metrikdatenpunkte.

Anmerkung

Sie können keinen Namespace angeben, der mit der reservierten Zeichenfolge beginntAWS/.

Erforderlich: true

Typ: string

Gültiges Muster: [^:].*

metricData

Die Daten für die Metrik.

Erforderlich: true

Typ: object, der die folgenden Eigenschaften enthält:

metricName

Name der Metrik.

Erforderlich: true

Typ: string

dimensions

Die Dimensionen, die der Metrik zugeordnet sind. Dimensionen liefern zusätzliche Informationen über die Metrik und ihre Daten. Eine Metrik kann bis zu 10 Dimensionen definieren.

Dieser Konnektor enthält automatisch eine Dimension mit dem Namen coreName, wobei der Wert der Name des Kerns ist.

Erforderlich: false

Typ: array von Dimensionsobjekten, die die folgenden Eigenschaften enthalten:

name

Der Dimensionsname.

Erforderlich: false

Typ: string

value

Der Dimensionswert.

Erforderlich: false

Typ: string

timestamp

Die Zeit, zu der die Metrikdaten empfangen wurden, ausgedrückt als Anzahl der Sekunden seit Jan 1, 1970 00:00:00 UTC. Wenn dieser Wert weggelassen wird, verwendet der Konnektor den Zeitpunkt an dem er die Nachricht empfangen hat.

Erforderlich: false

Typ: timestamp

Anmerkung

Wenn Sie zwischen den Versionen 1 und 4 dieses Konnektors verwenden, empfehlen wir Ihnen, den Zeitstempel für jede Metrik separat abzurufen, wenn Sie mehrere Metriken aus einer einzigen Quelle senden. Verwenden Sie keine Variable, um den Zeitstempel zu speichern.

value

Der Wert für die Metrik.

Anmerkung

CloudWatch lehnt Werte ab, die zu klein oder zu groß sind. Die Werte müssen im Bereich von 8.515920e-109 bis 1.174271e+108 (Base 10) oder 2e-360 bis 2e360 (Base 2) liegen. Spezielle Werte (z. B. NaN, +Infinity, -Infinity) werden nicht unterstützt.

Erforderlich: true

Typ: double

unit

Die Einheit der Metrik.

Erforderlich: false

Typ: string

Zulässige Werte: Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None

Einschränkungen

Alle von der CloudWatch PutMetricData API auferlegten Limits gelten für Metriken bei Verwendung dieses Konnektors. Von besonderer Bedeutung sind die folgenden Grenzwerte:

  • 40 KB Limit auf API-Nutzlast

  • 20 Metriken pro API-Anforderung

  • 150 Transaktionen pro Sekunde (TPS) für die PutMetricData-API

Weitere Informationen finden Sie unter -CloudWatch Limits im Amazon- CloudWatch Benutzerhandbuch.

Beispieleingabe
{ "request": { "namespace": "Greengrass", "metricData": { "metricName": "latency", "dimensions": [ { "name": "hostname", "value": "test_hostname" } ], "timestamp": 1539027324, "value": 123.0, "unit": "Seconds" } } }

Ausgabedaten

Dieser Connector veröffentlicht Statusinformationen als Ausgabedaten im MQTT-Thema.

Themenfilter im Abonnement

cloudwatch/metric/put/status

Beispielausgabe: Erfolg

Die Antwort enthält den Namespace der Metrikdaten und das RequestId Feld aus der CloudWatch Antwort.

{ "response": { "cloudwatch_rid":"70573243-d723-11e8-b095-75ff2EXAMPLE", "namespace": "Greengrass", "status":"success" } }
Beispielausgabe: Fehler
{ "response" : { "namespace": "Greengrass", "error": "InvalidInputException", "error_message":"cw metric is invalid", "status":"fail" } }
Anmerkung

Wenn der Konnektor einen wiederholbaren Fehler erkennt (z. B. Verbindungsfehler), wiederholt er die Veröffentlichung im nächsten Batch.

Verwendungsbeispiel

Führen Sie die folgenden allgemeinen Schritte aus, um eine Python-3.7-Lambda-Beispielfunktion einzurichten, mit der Sie den Konnektor ausprobieren können.

Anmerkung
  1. Stellen Sie sicher, dass Sie die Anforderungen für den Konnektor erfüllen.

    Für die Gruppenrollenanforderung müssen Sie die Rolle so konfigurieren, dass die erforderlichen Berechtigungen erteilt werden, und sicherstellen, dass die Rolle der Gruppe hinzugefügt wurde. Weitere Informationen finden Sie unter Verwalten der Greengrass-Gruppenrolle (Konsole) oder Verwalten der Greengrass-Gruppenrolle (CLI).

  2. Erstellen und veröffentlichen Sie eine Lambda-Funktion, die Eingabedaten an den Konnektor sendet.

    Speichern Sie den Beispielcode als PY-Datei. Laden Sie das AWS IoT Greengrass Core SDK for Python herunter und entpacken Sie es. Erstellen Sie dann ein ZIP-Paket, das die PY-Datei und den Ordner greengrasssdk auf Stammebene enthält. Dieses ZIP-Paket ist das Bereitstellungspaket, das Sie in hochladenAWS Lambda.

    Nachdem Sie die Lambda-Funktion Python 3.7 erstellt haben, veröffentlichen Sie eine Funktionsversion und erstellen Sie einen Alias.

  3. Konfigurieren Sie Ihre Greengrass-Gruppe.

    1. Fügen Sie die Lambda-Funktion nach ihrem Alias hinzu (empfohlen). Konfigurieren Sie den Lambda-Lebenszyklus als langlebig (oder "Pinned": true in der CLI).

    2. Fügen Sie den Konnektor hinzu und konfigurieren Sie seine Parameter.

    3. Fügen Sie Abonnements hinzu, die es dem Konnektor ermöglichen, Eingabedaten zu empfangen und Ausgabedaten zu unterstützten Themenfiltern zu senden.

      • Legen Sie die Lambda-Funktion als Quelle und den Konnektor als Ziel fest und verwenden Sie einen unterstützten Eingabethemafilter.

      • Legen Sie den Konnektor als Quelle und AWS IoT Core als Ziel fest und verwenden Sie einen unterstützten Ausgabethemenfilter. Sie verwenden dieses Abonnement, um Statusmeldungen in der -AWS IoTKonsole anzuzeigen.

  4. Stellen Sie die Gruppe bereit.

  5. Abonnieren Sie in der -AWS IoTKonsole auf der Seite Test das Ausgabedatenthema, um Statusmeldungen vom Konnektor anzuzeigen. Die Lambda-Beispielfunktion ist langlebig und beginnt sofort nach der Bereitstellung der Gruppe Nachrichten zu senden.

    Wenn Sie mit dem Testen fertig sind, können Sie den Lambda-Lebenszyklus auf On-Demand (oder "Pinned": false in der CLI) setzen und die Gruppe bereitstellen. Dadurch wird verhindert, dass die Funktion Nachrichten sendet.

Beispiel

Die folgende Lambda-Beispielfunktion sendet eine Eingabenachricht an den Konnektor.

import greengrasssdk import time import json iot_client = greengrasssdk.client('iot-data') send_topic = 'cloudwatch/metric/put' def create_request_with_all_fields(): return { "request": { "namespace": "Greengrass_CW_Connector", "metricData": { "metricName": "Count1", "dimensions": [ { "name": "test", "value": "test" } ], "value": 1, "unit": "Seconds", "timestamp": time.time() } } } def publish_basic_message(): messageToPublish = create_request_with_all_fields() print("Message To Publish: ", messageToPublish) iot_client.publish(topic=send_topic, payload=json.dumps(messageToPublish)) publish_basic_message() def lambda_handler(event, context): return

Lizenzen

Der CloudWatch Metrics-Konnektor enthält die folgende Software/Lizenzierung von Drittanbietern:

Dieser Konnektor wurde gemäß der Greengrass Core Software License Agreement veröffentlicht.

Änderungsprotokoll

In der folgenden Tabelle werden die Änderungen in jeder Version des Konnektors beschrieben.

Version

Änderungen

5

Korrektur, um Unterstützung für doppelte Zeitstempel in Eingabedaten hinzuzufügen.

4

Der Parameter IsolationMode wurde hinzugefügt, um den Containerisierungsmodus für den Konnektor zu konfigurieren.

3

Die Lambda-Laufzeit wurde auf Python 3.7 aktualisiert, wodurch sich die Laufzeitanforderung ändert.

2

Beheben, um übermäßige Protokollierung zu reduzieren.

1

Erstversion.

Eine Greengrass-Gruppe kann jeweils nur eine Version des Connectors enthalten. Weitere Informationen zum Aktualisieren einer Konnektorversion finden Sie unter Aktualisieren von Konnektorversionen.

Weitere Informationen finden Sie auch unter