O AWS IoT Greengrass Version 1 entrou na fase de vida útil prolongada em 30 de junho de 2023. Para obter mais informações, consulte política de manutenção do AWS IoT Greengrass V1. Após essa data, o AWS IoT Greengrass V1 não lançará atualizações que forneçam recursos, aprimoramentos, correções de erros ou patches de segurança. Os dispositivos que funcionam com o AWS IoT Greengrass V1 não serão interrompidos e continuarão operando e se conectando à nuvem. É altamente recomendável que você migre para AWS IoT Greengrass Version 2, o que adicionará novos recursos significativos e suporte para plataformas adicionais.
Conector de métricas do Amazon CloudWatch
O conector de métricas do CloudWatch Metrics publica métricas personalizadas dos dispositivos Greengrass no Amazon CloudWatch. O conector fornece uma infraestrutura centralizada para a publicação de métricas do CloudWatch, que você pode usar para monitorar e analisar o ambiente de núcleo do Greengrass e atuar em eventos locais. Para obter mais informações, consulte Usando as métricas do Amazon CloudWatch no Guia do usuário do Amazon CloudWatch.
Esse conector recebe dados de métrica como mensagens MQTT. O conector agrupa as métricas em lotes do mesmo namespace e as publica no CloudWatch em intervalos regulares.
Esse conector tem as seguintes versões.
Version (Versão) |
ARN |
---|---|
5 |
|
4 |
|
3 |
|
2 |
|
1 |
|
Para obter informações sobre alterações de versão, consulte o Changelog.
Requisitos
Esse conector tem os seguintes requisitos:
Parâmetros do conector
Esse conector oferece os seguintes parâmetros:
Exemplo de criação de conector (AWS CLI)
O seguinte comando da CLI cria um ConnectorDefinition
com uma versão inicial que contém o conector de métricas do CloudWatch.
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" } } ] }'
No console do AWS IoT Greengrass, você pode adicionar um conector na página Conectores do grupo. Para obter mais informações, consulte Conceitos básicos de conectores do Greengrass (console).
Dados de entrada
Esse conector aceita métricas em um tópico MQTT e as publica no CloudWatch. As mensagens de entrada devem estar no formato JSON.
- Filtro de tópico na assinatura
-
cloudwatch/metric/put
- Propriedades de mensagens
-
request
-
Informações sobre a métrica nesta mensagem.
O objeto de solicitação contém os dados de métrica para publicação no CloudWatch. Os valores de métrica devem atender às especificações de API
PutMetricData
. Apenas onamespace
,metricData.metricName
e as propriedadesmetricData.value
são necessários.Obrigatório:
true
Tipo:
object
que inclui as seguintes propriedades:namespace
-
O namespace definido pelo usuário para os dados métricos nessa solicitação. O CloudWatch usa namespaces como contêineres para pontos de dados métricos.
nota
Você não pode especificar um namespace que comece com a string reservada
AWS/
.Obrigatório:
true
Digite:
string
Padrão válido:
[^:].*
metricData
-
Os dados para a métrica.
Obrigatório:
true
Tipo:
object
que inclui as seguintes propriedades:metricName
-
O nome da métrica.
Obrigatório:
true
Digite:
string
dimensions
-
As dimensões associadas com a métrica. As dimensões fornecem mais informações sobre a métrica e seus dados. Uma métrica pode definir até 10 dimensões.
Esse conector inclui, automaticamente, uma dimensão chamada
coreName
, em que o valor é o nome do núcleo.Obrigatório:
false
Tipo:
array
de objetos de dimensão que incluem as seguintes propriedades:name
-
O nome da dimensão.
Obrigatório:
false
Digite:
string
value
-
O valor da dimensão.
Obrigatório:
false
Digite:
string
timestamp
-
O horário em que os dados da métrica foram recebidos, expresso em segundos desde
Jan 1, 1970 00:00:00 UTC
. Se esse valor for omitido, o conector usará o horário em que ele recebeu a mensagem.Obrigatório:
false
Digite:
timestamp
nota
Se você usar entre as versões 1 e 4 desse conector, recomendamos que você recupere o timestamp separadamente para cada métrica ao enviar várias métricas de uma única fonte. Não use uma variável para armazenar o timestamp.
value
-
O valor para a métrica.
nota
O CloudWatch rejeitará valores muito pequenos ou muito grandes. Os valores devem estar no intervalo de
8.515920e-109
a1.174271e+108
(Base 10) ou2e-360
a2e360
(Base 2). Os valores especiais (por exemplo,NaN
,+Infinity
,-Infinity
) não são compatíveis.Obrigatório:
true
Digite:
double
unit
-
A unidade da métrica.
Obrigatório:
false
Digite:
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
- Limites
-
Todos os limites impostos pela API
PutMetricData
do CloudWatch aplicam-se às métricas ao usar esse conector. É especialmente importante observar os limites a seguir:-
Limite de 40 KB na carga da API
-
20 métricas por solicitação de API
-
150 transações por segundo (TPS) para a API
PutMetricData
Para obter mais informações, consulte Limites do CloudWatch no Guia do usuário do Amazon CloudWatch.
-
- Exemplo de entrada
-
{ "request": { "namespace": "Greengrass", "metricData": { "metricName": "latency", "dimensions": [ { "name": "hostname", "value": "test_hostname" } ], "timestamp": 1539027324, "value": 123.0, "unit": "Seconds" } } }
Dados de saída
O conector publica informações de status como dados de saída em um tópico MQTT.
- Filtro de tópico na assinatura
-
cloudwatch/metric/put/status
- Exemplo de resultado: sucesso
-
A resposta inclui o namespace dos dados de métrica e o campo
RequestId
da resposta do CloudWatch.{ "response": { "cloudwatch_rid":"70573243-d723-11e8-b095-75ff2EXAMPLE", "namespace": "Greengrass", "status":"success" } }
- Exemplo de resultado: falha
-
{ "response" : { "namespace": "Greengrass", "error": "InvalidInputException", "error_message":"cw metric is invalid", "status":"fail" } }
nota
Se o conector detectar um erro que pode ser repetido (por exemplo, erros de conexão), ele tentará publicar novamente no próximo lote.
Exemplo de uso
Use as seguintes etapas de alto nível para configurar um exemplo de função do Lambda Python 3.7 que pode ser usado para testar o conector.
nota
-
Se você usar outros runtimes do Python, poderá criar um symblink do Python3.x para o Python 3.7.
-
Os tópicos Conceitos básicos de conectores (console) e Conceitos básicos de conectores (CLI) contêm etapas detalhadas que mostram como configurar e implantar um exemplo do conector de notificações do Twilio.
-
Certifique-se de cumprir os requisitos para o conector.
Para o requisito de função de grupo, você deve configurar a função para conceder as permissões necessárias e certificar-se de que a função tenha sido adicionada ao grupo. Para obter mais informações, consulte Gerenciar a função de grupo do Greengrass (console) ou Gerenciar a função de grupo do Greengrass (CLI).
-
Crie e publique uma função do Lambda que envie dados de entrada para o conector.
Salve o código de exemplo como arquivo PY. Baixe e descompacte o SDK do AWS IoT Greengrass Core para Python. Crie então um pacote zip que contenha o arquivo PY e a pasta
greengrasssdk
no nível raiz. Este pacote zip é o pacote de implantação que você transfere por upload para o AWS Lambda.Depois de criar a função do Lambda Python 3.7, publique uma versão de função e crie um alias.
-
Configure o grupo do Greengrass.
-
Adicione a função do Lambda pelo seu alias (recomendado). Configure o ciclo de vida do Lambda como de longa duração (ou
"Pinned": true
na CLI). -
Adicione o conector e configure seus parâmetros.
-
Adicione assinaturas que permitam que o conector receba dados de entrada e envie dados de saída em filtros de tópico compatíveis.
-
Defina a função do Lambda como origem, o conector como destino e use um filtro de tópico de entrada compatível.
-
Defina o conector como origem, o AWS IoT Core como destino, e use um filtro de tópico de saída compatível. Use essa assinatura para exibir mensagens de status no console do AWS IoT.
-
-
-
Implante o grupo.
-
No console do AWS IoT, na página Teste, assine o tópico de dados de saída para exibir mensagens de status do conector. A função de exemplo do Lambda é de longa duração e começa a enviar mensagens imediatamente após o grupo ser implantado.
Ao finalizar o teste, você pode definir o ciclo de vida do Lambda como sob demanda (ou
"Pinned": false
na CLI) e implantar o grupo. Isso impede o envio de mensagens pela função.
Exemplo
O exemplo a seguir da função do Lambda envia uma mensagem de entrada para o 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
Licenças
O conector do CloudWatch inclui o seguinte licenciamento/software de terceiros:
-
AWS SDK for Python (Boto3)
/Licença Apache 2.0 -
botocore
/Licença Apache 2.0 -
dateutil
/Licença PSF -
docutils
/Licença BSD, GNU Licença pública geral (GPL), Licença Python Software Foundation, Domínio público -
jmespath
/Licença MIT -
s3transfer
/Licença Apache 2.0 -
urllib3
/Licença MIT
Esse conector é liberado de acordo com o Contrato de licença de software do Greengrass Core
Changelog
A tabela a seguir descreve as alterações em cada versão do conector.
Version (Versão) |
Alterações |
---|---|
5 |
Correção para adicionar suporte para timestamps duplicados nos dados de entrada. |
4 |
Adicionado o parâmetro |
3 |
Atualização do runtime do Lambda para Python 3.7, o que altera o requisito de runtime. |
2 |
Corrija para reduzir o registro excessivo. |
1 |
Versão inicial. |
Um grupo do Greengrass só pode conter uma versão do conector por vez. Para obter informações sobre como fazer upgrade de uma versão do conector, consulte Atualizar a versões do conector.
Consulte também
-
Integrar a serviços e protocolos usando conectores do Greengrass
-
Usando métricas do Amazon CloudWatch no Guia do usuário do Amazon CloudWatch
-
PutMetricData na Referência de API do Amazon CloudWatch