CloudWatch Connettore Metrics - AWS IoT Greengrass

AWS IoT Greengrass Version 1 è entrato nella fase di estensione della vita utile il 30 giugno 2023. Per ulteriori informazioni, consulta la politica AWS IoT Greengrass V1 di manutenzione. Dopo questa data, AWS IoT Greengrass V1 non rilascerà aggiornamenti che forniscano funzionalità, miglioramenti, correzioni di bug o patch di sicurezza. I dispositivi che funzionano AWS IoT Greengrass V1 non subiranno interruzioni e continueranno a funzionare e a connettersi al cloud. Ti consigliamo vivamente di eseguire la migrazione a AWS IoT Greengrass Version 2, che aggiunge nuove importanti funzionalità e supporto per piattaforme aggiuntive.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

CloudWatch Connettore Metrics

Il connettore CloudWatch Metrics pubblica metriche personalizzate dai dispositivi Greengrass su Amazon. CloudWatch Il connettore fornisce un'infrastruttura centralizzata per la pubblicazione delle CloudWatch metriche, che puoi utilizzare per monitorare e analizzare l'ambiente principale di Greengrass e agire sugli eventi locali. Per ulteriori informazioni, consulta Using Amazon CloudWatch metrics nella Amazon CloudWatch User Guide.

Questo connettore riceve i dati dei parametri come messaggi MQTT. Il connettore raggruppa i parametri che si trovano nello stesso namespace e li pubblica a intervalli regolari. CloudWatch

Questo connettore ha le seguenti versioni.

Versione

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

Per informazioni sulle modifiche di ogni versione, consulta Changelog.

Requisiti

Questo connettore presenta i seguenti requisiti:

Version 3 - 5
  • Software AWS IoT Greengrass Core v1.9.3 o versioni successive.

  • Python versione 3.7 o 3.8 installata sul dispositivo principale e aggiunta alla variabile di ambiente PATH.

    Nota

    Per usare Python 3.8, esegui il seguente comando per creare un collegamento simbolico dalla cartella di installazione predefinita di Python 3.7 ai binari Python 3.8 installati.

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

    Questo configura il dispositivo in modo che soddisfi il requisito Python per AWS IoT Greengrass.

  • Il ruolo del gruppo Greengrass è configurato per consentire l'cloudwatch:PutMetricDataazione, come illustrato nel seguente esempio di policy AWS Identity and Access Management (IAM).

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

    Per il requisito del ruolo di gruppo, è necessario configurare il ruolo in modo da concedere le autorizzazioni necessarie e assicurarsi che il ruolo sia stato aggiunto al gruppo. Per ulteriori informazioni, consulta Gestione del ruolo del gruppo Greengrass (console) o Gestione del ruolo del gruppo Greengrass (CLI).

    Per ulteriori informazioni sulle CloudWatch autorizzazioni, consulta Amazon CloudWatch permissions reference nella IAM User Guide.

Versions 1 - 2
  • AWS IoT GreengrassSoftware di base v1.7 o successivo.

  • Python versione 2.7 installato sul dispositivo principale e aggiunto alla variabile di ambiente PATH.

  • Il ruolo del gruppo Greengrass è configurato per consentire l'cloudwatch:PutMetricDataazione, come illustrato nel seguente esempio di policy AWS Identity and Access Management (IAM).

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

    Per il requisito del ruolo di gruppo, è necessario configurare il ruolo in modo da concedere le autorizzazioni necessarie e assicurarsi che il ruolo sia stato aggiunto al gruppo. Per ulteriori informazioni, consulta Gestione del ruolo del gruppo Greengrass (console) o Gestione del ruolo del gruppo Greengrass (CLI).

    Per ulteriori informazioni sulle CloudWatch autorizzazioni, consulta Amazon CloudWatch permissions reference nella IAM User Guide.

Parametri del connettore

Questo connettore fornisce i seguenti parametri:

Versions 4 - 5
PublishInterval

Il numero massimo di secondi di attesa prima di pubblicare i parametri raggruppati per un dato spazio dei nomi. Il valore massimo è 900. Per configurare il connettore in modo da pubblicare i parametri man mano che vengono ricevuti (senza raggruppamento), specificare 0.

Il connettore pubblica su CloudWatch dopo aver ricevuto 20 metriche nello stesso namespace o dopo l'intervallo specificato.

Nota

Il connettore non garantisce l'ordine degli eventi di pubblicazione.

Nome visualizzato nella console: Intervallo di pubblicazione AWS IoT

Obbligatorio: true

Tipo: string

Valori validi: 0 - 900

Schema valido: [0-9]|[1-9]\d|[1-9]\d\d|900

PublishRegion

Il file Regione AWS su cui pubblicare le CloudWatch metriche. Questo valore sostituisce la regione predefinita dei parametri Greengrass. È obbligatorio solo durante la pubblicazione di parametri tra regioni.

Nome visualizzato nella AWS IoT console: regione di pubblicazione

Obbligatorio: false

Tipo: string

Schema valido: ^$|([a-z]{2}-[a-z]+-\d{1})

MemorySize

La memoria (in KB) da allocare al connettore.

Nome visualizzato nella AWS IoT console: dimensione della memoria

Obbligatorio: true

Tipo: string

Schema valido: ^[0-9]+$

MaxMetricsToRetain

Il numero massimo di parametri in tutti gli spazi dei nomi da salvare in memoria prima che vengano sostituiti da nuovi parametri. Il valore minimo è 2000.

Questo limite è valido quando non è presente una connessione a Internet e il connettore inizia il buffering dei parametri da pubblicare successivamente. Quando il buffer è pieno, i parametri meno recenti vengono sostituiti da quelli nuovi. I parametri in un determinato spazio dei nomi vengono sostituiti solo da quelli dello stesso spazio dei nomi.

Nota

I parametri non vengono salvati se si interrompe il processo host del connettore. Ad esempio, questa interruzione potrebbe verificarsi durante la distribuzione dei gruppi o al riavvio del dispositivo.

Nome visualizzato nella AWS IoT console: numero massimo di metriche da conservare

Obbligatorio: true

Tipo: string

Schema valido: ^([2-9]\d{3}|[1-9]\d{4,})$

IsolationMode

Modalità di containerizzazione per questo connettore. L'impostazione predefinita è GreengrassContainer, il che significa che il connettore viene eseguito in un ambiente di runtime isolato all'interno del container AWS IoT Greengrass.

Nota

L'impostazione predefinita della containerizzazione per il gruppo non si applica ai connettori.

Nome visualizzato nella AWS IoT console: modalità di isolamento del contenitore

Obbligatorio: false

Tipo: string

Valori validi: GreengrassContainer o NoContainer

Schema valido: ^NoContainer$|^GreengrassContainer$

Versions 1 - 3
PublishInterval

Il numero massimo di secondi di attesa prima di pubblicare i parametri raggruppati per un dato spazio dei nomi. Il valore massimo è 900. Per configurare il connettore in modo da pubblicare i parametri man mano che vengono ricevuti (senza raggruppamento), specificare 0.

Il connettore pubblica su CloudWatch dopo aver ricevuto 20 metriche nello stesso namespace o dopo l'intervallo specificato.

Nota

Il connettore non garantisce l'ordine degli eventi di pubblicazione.

Nome visualizzato nella console: Intervallo di pubblicazione AWS IoT

Obbligatorio: true

Tipo: string

Valori validi: 0 - 900

Schema valido: [0-9]|[1-9]\d|[1-9]\d\d|900

PublishRegion

Il file Regione AWS su cui pubblicare le CloudWatch metriche. Questo valore sostituisce la regione predefinita dei parametri Greengrass. È obbligatorio solo durante la pubblicazione di parametri tra regioni.

Nome visualizzato nella AWS IoT console: regione di pubblicazione

Obbligatorio: false

Tipo: string

Schema valido: ^$|([a-z]{2}-[a-z]+-\d{1})

MemorySize

La memoria (in KB) da allocare al connettore.

Nome visualizzato nella AWS IoT console: dimensione della memoria

Obbligatorio: true

Tipo: string

Schema valido: ^[0-9]+$

MaxMetricsToRetain

Il numero massimo di parametri in tutti gli spazi dei nomi da salvare in memoria prima che vengano sostituiti da nuovi parametri. Il valore minimo è 2000.

Questo limite è valido quando non è presente una connessione a Internet e il connettore inizia il buffering dei parametri da pubblicare successivamente. Quando il buffer è pieno, i parametri meno recenti vengono sostituiti da quelli nuovi. I parametri in un determinato spazio dei nomi vengono sostituiti solo da quelli dello stesso spazio dei nomi.

Nota

I parametri non vengono salvati se si interrompe il processo host del connettore. Ad esempio, questa interruzione potrebbe verificarsi durante la distribuzione dei gruppi o al riavvio del dispositivo.

Nome visualizzato nella AWS IoT console: numero massimo di metriche da conservare

Obbligatorio: true

Tipo: string

Schema valido: ^([2-9]\d{3}|[1-9]\d{4,})$

Esempio di creazione di un connettore (AWS CLI)

Il seguente comando CLI crea un ConnectorDefinition con una versione iniziale che contiene il connettore CloudWatch Metrics.

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" } } ] }'

Nella AWS IoT Greengrass console, puoi aggiungere un connettore dalla pagina Connettori del gruppo. Per ulteriori informazioni, consulta Nozioni di base sui connettori Greengrass (console).

Dati di input

Questo connettore accetta metriche su un argomento MQTT e le pubblica su. CloudWatch I messaggi di input devono essere in formato JSON.

Filtro argomento in sottoscrizione

cloudwatch/metric/put

Proprietà dei messaggi
request

Informazioni sui parametri di questo messaggio.

L'oggetto della richiesta contiene i dati dei parametri da pubblicare in CloudWatch. I valori delle metriche devono soddisfare le specifiche dell'PutMetricDataAPI. Sono obbligatorie solo le proprietà namespace, metricData.metricName e metricData.value.

Obbligatorio: true

Tipo: object che include le seguenti proprietà:

namespace

Lo spazio dei nomi definito dall'utente per i dati metrici in questa richiesta. CloudWatch utilizza i namespace come contenitori per i punti dati metrici.

Nota

Non è possibile specificare uno spazio dei nomi che inizi con la stringa riservata. AWS/

Obbligatorio: true

Tipo: string

Schema valido: [^:].*

metricData

I dati del parametro.

Obbligatorio: true

Tipo: object che include le seguenti proprietà:

metricName

Nome del parametro.

Obbligatorio: true

Tipo: string

dimensions

Le dimensioni associate al parametro. Le dimensioni forniscono ulteriori informazioni sul parametro e sui relativi dati. Un parametro è in grado di definire fino a 10 dimensioni.

Questo connettore include automaticamente una dimensione denominatacoreName, dove il valore è il nome del core.

Obbligatorio: false

Tipo: array di oggetti dimensionali che includono le seguenti proprietà:

name

Il nome della dimensione.

Obbligatorio: false

Tipo: string

value

Il valore della dimensione.

Richiesto: false

Tipo: string

timestamp

L'ora in cui i dati della metrica sono stati ricevuti, espressa come numero di secondi trascorsi da alloraJan 1, 1970 00:00:00 UTC. Se questo valore viene omesso, il connettore utilizza l'ora di ricezione del messaggio.

Obbligatorio: false

Tipo: timestamp

Nota

Se utilizzi tra le versioni 1 e 4 di questo connettore, ti consigliamo di recuperare il timestamp separatamente per ogni metrica quando invii più metriche da un'unica fonte. Non utilizzare una variabile per memorizzare il timestamp.

value

Il valore del parametro.

Nota

CloudWatch rifiuta valori troppo piccoli o troppo grandi. I valori devono essere compresi nell'intervallo da 8.515920e-109 a 1.174271e+108 (Base 10) o da 2e-360 a 2e360 (Base 2). I valori speciali (ad esempio, NaN, +Infinity, -Infinity) non sono supportati.

Obbligatorio: true

Tipo: double

unit

Unità del parametro.

Richiesto: false

Tipo: string

Valori validi: 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

Limiti

Tutti i limiti imposti dall' CloudWatch PutMetricDataAPI si applicano alle metriche quando si utilizza questo connettore. Di seguito sono riportati i limiti particolarmente importanti:

  • Limite di 40 KB sul payload dell'API

  • 20 parametri per ciascuna richiesta API

  • 150 transazioni al secondo (TPS) per l'API PutMetricData

Per ulteriori informazioni, consulta CloudWatch i limiti nella Amazon CloudWatch User Guide.

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

Dati di output

Questo connettore pubblica le informazioni di stato come dati di output su un argomento MQTT.

Filtro argomento in sottoscrizione

cloudwatch/metric/put/status

Output di esempio: Operazione riuscita

La risposta include lo spazio dei nomi dei dati metrici e il RequestId campo della risposta. CloudWatch

{ "response": { "cloudwatch_rid":"70573243-d723-11e8-b095-75ff2EXAMPLE", "namespace": "Greengrass", "status":"success" } }
Esempio di output: Errore
{ "response" : { "namespace": "Greengrass", "error": "InvalidInputException", "error_message":"cw metric is invalid", "status":"fail" } }
Nota

Se il connettore rileva un errore ripetibile (ad esempio errori di connessione), riprova la pubblicazione nel batch successivo.

Esempio di utilizzo

Usa i seguenti passaggi di alto livello per configurare una funzione Lambda di esempio di Python 3.7 che puoi usare per provare il connettore.

Nota
  1. Assicurarsi di soddisfare i requisiti per il connettore.

    Per il requisito del ruolo di gruppo, è necessario configurare il ruolo in modo da concedere le autorizzazioni necessarie e assicurarsi che il ruolo sia stato aggiunto al gruppo. Per ulteriori informazioni, consulta Gestione del ruolo del gruppo Greengrass (console) o Gestione del ruolo del gruppo Greengrass (CLI).

  2. Crea e pubblica una funzione Lambda che invia dati di input al connettore.

    Salvare il codice di esempio come file PY. Scarica e decomprimi il AWS IoT GreengrassCore SDK per Python. Quindi, crea un pacchetto zip che contiene il file PY e la cartella greengrasssdk a livello root. Questo pacchetto zip è il pacchetto di distribuzione in cui carichi. AWS Lambda

    Dopo aver creato la funzione Python 3.7 Lambda, pubblica una versione della funzione e crea un alias.

  3. Configurare il gruppo Greengrass.

    1. Aggiungi la funzione Lambda tramite il relativo alias (consigliato). Configura il ciclo di vita Lambda come longevo (o nella "Pinned": true CLI).

    2. Aggiungere il connettore e configurarne i relativi parametri.

    3. Aggiungere sottoscrizioni che consentono al connettore di ricevere i dati di input e inviare i dati di output nei filtri degli argomenti supportati.

      • Imposta la funzione Lambda come origine, il connettore come destinazione e utilizza un filtro per argomenti di input supportato.

      • Imposta il connettore come origine, AWS IoT Core come destinazione e utilizza un filtro per l’argomento di output supportato. Utilizzi questo abbonamento per visualizzare i messaggi di stato nella AWS IoT console.

  4. Distribuisci il gruppo.

  5. Nella AWS IoT console, nella pagina Test, sottoscrivi l'argomento relativo ai dati di output per visualizzare i messaggi di stato dal connettore. La funzione Lambda di esempio è di lunga durata e inizia a inviare messaggi subito dopo l'implementazione del gruppo.

    Al termine del test, puoi impostare il ciclo di vita Lambda su richiesta (o nella CLI) e "Pinned": false distribuire il gruppo. Ciò impedisce alla funzione di inviare messaggi.

Esempio

L'esempio seguente della funzione Lambda invia un messaggio di input al connettore.

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

Licenze

Il connettore CloudWatch Metrics include i seguenti software/licenze di terze parti:

Questo connettore è rilasciato ai sensi del contratto di licenza del software Greengrass Core.

Changelog

La tabella seguente descrive le modifiche apportate a ciascuna versione del connettore.

Versione

Modifiche

5

Correzione dell'aggiunta del supporto per timestamp duplicati nei dati di input.

4

Aggiunto il parametro IsolationMode per configurare la modalità di containerizzazione per il connettore.

3

È stato aggiornato il runtime Lambda a Python 3.7, che modifica i requisiti di runtime.

2

Correggere per ridurre l'eccessiva registrazione di log.

1

Versione iniziale.

Un gruppo Greengrass può contenere una sola versione del connettore alla volta. Per informazioni sull'aggiornamento di una versione del connettore, consulta Aggiornamento delle versioni dei connettori.

Consulta anche