CloudWatch Conector de métricas - AWS IoT Greengrass

AWS IoT Greengrass Version 1 entró en la fase de vida útil prolongada el 30 de junio de 2023. Para obtener más información, consulte la política de mantenimiento de AWS IoT Greengrass V1 Después de esta fecha, AWS IoT Greengrass V1 no se publicarán actualizaciones que proporcionen funciones, mejoras, correcciones de errores o parches de seguridad. Los dispositivos que se ejecuten AWS IoT Greengrass V1 no se verán afectados y seguirán funcionando y conectándose a la nube. Le recomendamos encarecidamente que migre a AWS IoT Greengrass Version 2, ya que añade importantes funciones nuevas y es compatible con plataformas adicionales.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

CloudWatch Conector de métricas

El conector CloudWatch Metrics publica métricas personalizadas de los dispositivos Greengrass en Amazon. CloudWatch El conector proporciona una infraestructura centralizada para publicar CloudWatch métricas, que puede utilizar para supervisar y analizar el entorno principal de Greengrass y actuar en función de los eventos locales. Para obtener más información, consulta Uso de CloudWatch las métricas de Amazon en la Guía del CloudWatch usuario de Amazon.

Este conector recibe datos de métricas como mensajes de MQTT. El conector agrupa las métricas que se encuentran en el mismo espacio de nombres y las publica a CloudWatch intervalos regulares.

Este conector tiene las siguientes versiones.

Versión

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

Para obtener información sobre los cambios de versión, consulte el Registro de cambios.

Requisitos

Este conector exige los siguientes requisitos:

Version 3 - 5
  • Software AWS IoT Greengrass Core versión 1.9.3 o posterior.

  • Python versión 3.7 o 3.8 instalado en el dispositivo principal y añadido a la variable de entorno PATH.

    nota

    Para usar Python 3.8, ejecute el siguiente comando para crear un enlace simbólico desde la carpeta de instalación predeterminada de Python 3.7 a los binarios de Python 3.8 instalados.

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

    Esto configura su dispositivo para que cumpla con el requisito de Python para AWS IoT Greengrass.

  • El rol de grupo Greengrass configurado para permitir la acción cloudwatch:PutMetricData, tal como se muestra en la política de (IAM) AWS Identity and Access Management de ejemplo siguiente.

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

    Para el requisito de rol de grupo, debe configurar el rol para conceder los permisos necesarios y asegurarse de que el rol se ha añadido al grupo. Para obtener más información, consulte Administración del rol de grupo de Greengrass (consola) o Administración del rol de grupo de Greengrass (CLI).

    Para obtener más información sobre CloudWatch los permisos, consulta la referencia de CloudWatch permisos de Amazon en la Guía del usuario de IAM.

Versions 1 - 2
  • Software AWS IoT Greengrass Core versión 1.7 o posterior.

  • Versión 2.7 de Python instalada en el dispositivo principal y añadida a la variable de entorno PATH.

  • El rol de grupo Greengrass configurado para permitir la acción cloudwatch:PutMetricData, tal como se muestra en la política de (IAM) AWS Identity and Access Management de ejemplo siguiente.

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

    Para el requisito de rol de grupo, debe configurar el rol para conceder los permisos necesarios y asegurarse de que el rol se ha añadido al grupo. Para obtener más información, consulte Administración del rol de grupo de Greengrass (consola) o Administración del rol de grupo de Greengrass (CLI).

    Para obtener más información sobre CloudWatch los permisos, consulta la referencia de CloudWatch permisos de Amazon en la Guía del usuario de IAM.

Parámetros de conector

Este conector proporciona los siguientes parámetros:

Versions 4 - 5
PublishInterval

El número máximo de segundos que se debe esperar antes de publicar las métricas por lote para un determinado espacio de nombres. El valor máximo es 900. Para configurar el conector con el fin de publicar las métricas a medida que se reciben (sin hacerlo por lotes), especifique 0.

El conector publica para CloudWatch después de recibir 20 métricas en el mismo espacio de nombres o después del intervalo especificado.

nota

El conector no garantiza el orden de publicación de los eventos.

Nombre para mostrar en la consola AWS IoT: Publicar intervalo

Obligatorio: true

Tipo: string

Valores válidos: 0 - 900

Patrón válido: [0-9]|[1-9]\d|[1-9]\d\d|900

PublishRegion

El Región de AWS para publicar CloudWatch las métricas. Este valor anula la región de métricas de Greengrass predeterminada. Solo se requiere cuando se publican métricas entre regiones.

Nombre para mostrar en la consola AWS IoT: Publicar región

Obligatorio: false

Tipo: string

Patrón válido: ^$|([a-z]{2}-[a-z]+-\d{1})

MemorySize

La memoria (en KB) que se asignará al conector.

Nombre que mostrar en la consola AWS IoT: Tamaño de memoria

Obligatorio: true

Tipo: string

Patrón válido: ^[0-9]+$

MaxMetricsToRetain

El número máximo de métricas de todos los espacios de nombres que se guardarán en la memoria antes de que se reemplacen por nuevas métricas. El valor mínimo es 2000.

Este límite se aplica cuando no hay conexión a Internet y el conector comienza a almacenar en búfer las métricas que se van a publicar más adelante. Cuando el búfer está lleno, la métricas más antiguas se sustituyen por nuevas. Las métricas de un determinado espacio de nombres se reemplazan únicamente por métricas del mismo espacio de nombres.

nota

Las métricas no se guardan si el proceso de host para el conector se interrumpe. Por ejemplo, esta interrupción puede ocurrir durante la implementación de grupos o cuando el dispositivo se reinicia.

Nombre para mostrar en la consola AWS IoT: Número máximo de métricas que se deben retener

Obligatorio: true

Tipo: string

Patrón válido: ^([2-9]\d{3}|[1-9]\d{4,})$

IsolationMode

El modo de creación de contenedores para este conector. El valor predeterminado es GreengrassContainer, lo que significa que el conector se ejecuta en un entorno de tiempo de ejecución aislado dentro del contenedor de AWS IoT Greengrass.

nota

La configuración de creación de contenedores predeterminada para el grupo no se aplica a los conectores.

Nombre para mostrar en la consola AWS IoT: Modo de aislamiento de contenedores

Obligatorio: false

Tipo: string

Valores válidos: GreengrassContainer o NoContainer

Patrón válido: ^NoContainer$|^GreengrassContainer$

Versions 1 - 3
PublishInterval

El número máximo de segundos que se debe esperar antes de publicar las métricas por lote para un determinado espacio de nombres. El valor máximo es 900. Para configurar el conector con el fin de publicar las métricas a medida que se reciben (sin hacerlo por lotes), especifique 0.

El conector publica para CloudWatch después de recibir 20 métricas en el mismo espacio de nombres o después del intervalo especificado.

nota

El conector no garantiza el orden de publicación de los eventos.

Nombre para mostrar en la consola AWS IoT: Publicar intervalo

Obligatorio: true

Tipo: string

Valores válidos: 0 - 900

Patrón válido: [0-9]|[1-9]\d|[1-9]\d\d|900

PublishRegion

El Región de AWS para publicar CloudWatch las métricas. Este valor anula la región de métricas de Greengrass predeterminada. Solo se requiere cuando se publican métricas entre regiones.

Nombre para mostrar en la consola AWS IoT: Publicar región

Obligatorio: false

Tipo: string

Patrón válido: ^$|([a-z]{2}-[a-z]+-\d{1})

MemorySize

La memoria (en KB) que se asignará al conector.

Nombre que mostrar en la consola AWS IoT: Tamaño de memoria

Obligatorio: true

Tipo: string

Patrón válido: ^[0-9]+$

MaxMetricsToRetain

El número máximo de métricas de todos los espacios de nombres que se guardarán en la memoria antes de que se reemplacen por nuevas métricas. El valor mínimo es 2000.

Este límite se aplica cuando no hay conexión a Internet y el conector comienza a almacenar en búfer las métricas que se van a publicar más adelante. Cuando el búfer está lleno, la métricas más antiguas se sustituyen por nuevas. Las métricas de un determinado espacio de nombres se reemplazan únicamente por métricas del mismo espacio de nombres.

nota

Las métricas no se guardan si el proceso de host para el conector se interrumpe. Por ejemplo, esta interrupción puede ocurrir durante la implementación de grupos o cuando el dispositivo se reinicia.

Nombre para mostrar en la consola AWS IoT: Número máximo de métricas que se deben retener

Obligatorio: true

Tipo: string

Patrón válido: ^([2-9]\d{3}|[1-9]\d{4,})$

Ejemplo de creación de conector (AWS CLI)

El siguiente comando CLI crea una ConnectorDefinition con una versión inicial que contiene el conector de CloudWatch métricas.

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

En la consola AWS IoT Greengrass, puede añadir un conector desde la página de Conectores del grupo. Para obtener más información, consulte Introducción a los conectores de Greengrass (consola).

Datos de entrada

Este conector acepta métricas sobre un tema de MQTT y las publica en. CloudWatch Los mensajes de entrada deben tener un formato JSON válido.

Filtro de temas en la suscripción

cloudwatch/metric/put

Propiedades de mensajes
request

Información acerca de la métrica en este mensaje.

El objeto de la solicitud contiene los datos de métricas que se publicarán en CloudWatch. Los valores de métricas debe cumplir las especificaciones de la API de PutMetricData API. Solo se necesitan las propiedades namespace, metricData.metricName y metricData.value.

Obligatorio: true

Escriba: object que incluya las siguientes propiedades:

namespace

El espacio de nombres definido por el usuario para los datos de las métricas de esta solicitud. CloudWatch utiliza los espacios de nombres como contenedores para los puntos de datos métricos.

nota

No se puede especificar un espacio de nombres que comience la cadena reservada por AWS/.

Obligatorio: true

Tipo: string

Patrón válido: [^:].*

metricData

Los datos de la métrica.

Obligatorio: true

Escriba: object que incluya las siguientes propiedades:

metricName

El nombre de la métrica.

Obligatorio: true

Tipo: string

dimensions

Las dimensiones que están asociados con la métrica. Las dimensiones proporcionan información adicional acerca de la métrica y sus datos. Una métrica puede definir hasta 10 dimensiones.

Este conector incluye automáticamente una dimensión denominada coreName, cuyo valor es el nombre del núcleo.

Obligatorio: false

Tipo: array de objetos de dimensión que incluyen las siguientes propiedades:

name

El nombre de la dimensión.

Obligatorio: false

Tipo: string

value

El valor de la dimensión.

Obligatorio: false

Tipo: string

timestamp

La hora a la que se ha recibido los datos de las métricas, expresado como segundos desde Jan 1, 1970 00:00:00 UTC. Si no se especifica este valor, el conector utiliza la hora en que se recibió el mensaje.

Obligatorio: false

Tipo: timestamp

nota

Si utiliza las versiones 1 y 4 de este conector, le recomendamos que recupere la marca de tiempo por separado para cada métrica cuando envíe varias métricas desde una sola fuente. No utilice una variable para almacenar la marca de tiempo.

value

El valor de la métrica.

nota

CloudWatch rechaza los valores que son demasiado pequeños o demasiado grandes. Los valores deben estar en el rango de 8.515920e-109 a 1.174271e+108 (Base 10) o 2e-360 a 2e360 (Base 2). Los valores especiales (por ejemplo, NaN, +Infinity, -Infinity) no son compatibles.

Obligatorio: true

Tipo: double

unit

La unidad de la métrica.

Obligatorio: false

Tipo: string

Valores válidos: 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

Límites

Todos los límites impuestos por la CloudWatch PutMetricDataAPI se aplican a las métricas cuando se utiliza este conector. Los siguientes límites son especialmente importantes:

  • Límite de 40 KB en la carga de API

  • 20 métricas por solicitud de API

  • 150 transacciones por segundo (TPS) para la API de PutMetricData

Para obtener más información, consulta CloudWatch los límites en la Guía del CloudWatch usuario de Amazon.

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

Datos de salida

Este conector publica información de estado como datos de salida en un tema MQTT.

Filtro de temas en la suscripción

cloudwatch/metric/put/status

Ejemplo de salida: Correcto

La respuesta incluye el espacio de nombres de los datos de la métrica y el RequestId campo de la CloudWatch respuesta.

{ "response": { "cloudwatch_rid":"70573243-d723-11e8-b095-75ff2EXAMPLE", "namespace": "Greengrass", "status":"success" } }
Ejemplo de salida: Error
{ "response" : { "namespace": "Greengrass", "error": "InvalidInputException", "error_message":"cw metric is invalid", "status":"fail" } }
nota

Si el conector detecta un error que se puede volver a intentar (por ejemplo, errores de conexión), volverá a intentar la publicación en el siguiente lote.

Ejemplo de uso

Utilice los siguientes pasos de alto nivel para configurar una función de Lambda de Python 3.7 de ejemplo que puede utilizar para probar el conector.

nota
  1. Asegúrese de cumplir los requisitos para el conector.

    Para el requisito de rol de grupo, debe configurar el rol para conceder los permisos necesarios y asegurarse de que el rol se ha añadido al grupo. Para obtener más información, consulte Administración del rol de grupo de Greengrass (consola) o Administración del rol de grupo de Greengrass (CLI).

  2. Cree y publique una función de Lambda que envíe datos de entrada al conector.

    Guarde el código de ejemplo como un archivo PY. Descargue y descomprima el SDK de AWS IoT Greengrass Core para Python. A continuación, cree un paquete zip que contenga el archivo PY y la carpeta greengrasssdk en el nivel raíz. Este paquete zip es el paquete de implementación que se carga en AWS Lambda.

    Después de crear la función de Lambda de Python 3.7, publique una versión de característica y cree un alias.

  3. Configuración del grupo de Greengrass.

    1. Agregue la función de Lambda por su alias (recomendado). Configure el ciclo de vida de Lambda como de larga duración (o "Pinned": true en la CLI).

    2. Agregue el conector y configure sus parámetros.

    3. Agregue suscripciones que permitan al conector recibir datos de entrada y enviar datos de salida en filtros de tema compatibles.

      • Establezca la función de Lambda como fuente, el conector como destino y utilice un filtro de tema de entrada compatible.

      • Establezca el conector como origen, AWS IoT Core como destino y utilice un filtro de tema de salida compatible. Utilice esta suscripción para ver los mensajes de estado en la consola de AWS IoT.

  4. Implemente el grupo.

  5. En la consola de AWS IoT, en la página Prueba suscríbase al tema de datos de salida para ver los mensajes de estado del conector. La función de Lambda de ejemplo es de larga duración y comienza a enviar mensajes inmediatamente después de implementar el grupo.

    Cuando haya terminado de probar, puede establecer el ciclo de vida de Lambda en Bajo demanda (o "Pinned": false en la CLI) e implementar el grupo. Esto impide que la característica envíe mensajes.

Ejemplo

El siguiente ejemplo de función de Lambda envía un mensaje de entrada al conector.

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

Licencias

El conector CloudWatch Metrics incluye el siguiente software o licencia de terceros:

Este conector se publica bajo el contrato de licencia de software de Greengrass Core.

Registros de cambios

La siguiente tabla describe los cambios en cada versión del conector.

Versión

Cambios

5

Se corrigió para añadir la admisión de marcas de tiempo duplicadas en los datos de entrada.

4

Se ha agregado el parámetro IsolationMode para configurar el modo de creación de contenedores del conector.

3

Se actualizó el tiempo de ejecución de Lambda a Python 3.7, lo que cambia el requisito de tiempo de ejecución.

2

Se ha introducido una corrección para reducir el registro excesivo.

1

Versión inicial.

Un grupo de Greengrass solo puede contener una versión del conector a la vez. Para obtener información sobre cómo actualizar una versión de conector, consulte Actualización de versiones de los conectores.

Véase también