Amazon IoT Greengrass Version 12023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅Amazon IoT Greengrass V1维护政策。在此日期之后,将Amazon IoT Greengrass V1不会发布提供功能、增强功能、错误修复或安全补丁的更新。运行的设备Amazon IoT Greengrass V1不会中断,将继续运行并连接到云端。我们强烈建议您迁移到 Amazon IoT Greengrass Version 2,这增加了重要的新功能并支持其他平台。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
CloudWatch 指标连接器
这些区域有: CloudWatch 指标连接器将 Greengrass 设备中的自定义指标发布到亚马逊 CloudWatch. 该连接器为发布提供了一个集中的基础架构 CloudWatch 指标,您可以使用它来监控和分析 Greengrass 核心环境,以及处理本地事件。有关更多信息,请参阅 。使用 Amazon CloudWatch 指标中的亚马逊 CloudWatch 用户指南.
此连接器以 MQTT 消息形式接收指标数据。连接器对同一命名空间中的指标进行批处理,并将这些指标发布到 CloudWatch 定期。
此连接器具有以下版本。
版本 |
ARN |
---|---|
5 |
|
4 |
|
3 |
|
2 |
|
1 |
|
有关版本更改的信息,请参阅更改日志。
要求
此连接器具有以下要求:
连接器参数
该连接器提供以下参数:
创建连接器示例 (Amazon CLI)
以下 CLI 命令将创建一个ConnectorDefinition
其初始版本包含 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" } } ] }'
在Amazon IoT Greengrassconsole,则可以从该组的连接器页. 有关更多信息,请参阅 Greengrass 连接器入门(控制台)。
输入数据
此连接器接受有关 MQTT 主题的指标,并将这些指标发布到 CloudWatch. 输入消息必须采用 JSON 格式。
- 订阅中的主题筛选条件
-
cloudwatch/metric/put
- 消息属性
-
request
-
有关此消息中的指标的信息。
请求对象包含要发布到 CloudWatch 的指标数据。指标值必须符合
PutMetricData
API。只有namespace
、metricData.metricName
和metricData.value
属性是必需的。必需:
true
类型:
object
包含以下属性的:namespace
-
此请求中的指标数据的用户定义命名空间。 CloudWatch 使用命名空间作为指标数据点的容器。
注意
不能指定以保留字符串开头的命名空间
AWS/
.必需:
true
类型:
string
有效模式:
[^:].*
metricData
-
指标的数据。
必需:
true
类型:
object
包含以下属性的:metricName
-
指标的名称。
必需:
true
类型:
string
dimensions
-
与指标关联的维度。维度提供有关指标及其数据的更多信息。指标最多可定义 10 个维度。
此连接器自动包含名为的维
coreName
,其中值是核心的名称。必需:
false
类型:
array
维对象的包含以下属性:name
-
维度名称。
必需:
false
类型:
string
value
-
维度值。
必需:
false
类型:
string
timestamp
-
收到指标数据的时间,表示为自以来的秒数
Jan 1, 1970 00:00:00 UTC
. 如果省略此值,则连接器将使用它收到消息的时间。必需:
false
类型:
timestamp
注意
如果您在此连接器的版本 1 和 4 之间使用,我们建议您在从单个源发送多个指标时分别检索每个指标的时间戳。不要使用变量来存储时间戳。
value
-
指标的值。
注意
CloudWatch 拒绝过小或过大的值。值必须在范围
8.515920e-109
到1.174271e+108
(以 10 为底的指数)内或范围2e-360
到2e360
(以 2 为底的指数)内。不支持特殊值(例如NaN
、+Infinity
、-Infinity
)。必需:
true
类型:
double
unit
-
指标的单位。
必需:
false
类型:
string
有效值:
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
- 限制
-
施加的所有限制 CloudWatch
PutMetricData
使用此连接器时,API 适用于指标。以下限制尤其重要:-
API 负载的 40 KB 限制
-
每个 API 请求的 20 个指标
-
PutMetricData
API 的每秒 150 个事务 (TPS)
有关更多信息,请参阅 。CloudWatch 限制中的亚马逊 CloudWatch 用户指南.
-
- 示例输入
-
{ "request": { "namespace": "Greengrass", "metricData": { "metricName": "latency", "dimensions": [ { "name": "hostname", "value": "test_hostname" } ], "timestamp": 1539027324, "value": 123.0, "unit": "Seconds" } } }
输出数据
此连接器将状态信息发布为 MQTT 主题的输出数据。
- 订阅中的主题筛选条件
-
cloudwatch/metric/put/status
- 输出示例:成功
-
该响应包含指标数据的命名空间和
RequestId
来自的字段 CloudWatch 响应。{ "response": { "cloudwatch_rid":"70573243-d723-11e8-b095-75ff2EXAMPLE", "namespace": "Greengrass", "status":"success" } }
- 输出示例:失败
-
{ "response" : { "namespace": "Greengrass", "error": "InvalidInputException", "error_message":"cw metric is invalid", "status":"fail" } }
注意
如果连接器检测到可重试错误(例如,连接错误),则会在下一个批次中重试发布。
用法示例
使用以下概括步骤设置可用于尝试连接器的示例 Python 3.7 Lambda 数。
注意
-
如果您使用其他 Python 运行时,您可以创建从 Python3.x 到 Python 3.7 的符号链接。
-
连接器入门(控制台) 和连接器入门 (CLI) 主题包含详细步骤,说明如何配置和部署示例 Twilio 通知连接器。
-
确保满足连接器的要求。
对于组角色要求,您必须将角色配置为授予所需权限,并确保角色已添加到组中。有关更多信息,请参阅 管理 Greengrass 组角色(控制台) 或 管理 Greengrass 组角色 (CLI)。
-
创建并发布将输入数据发送到连接器的 Lambda 函数。
将示例代码保存为 PY 文件。下载并解压缩Amazon IoT Greengrass适用于 Python 的核心. 然后,创建一个 zip 包,其中在根级别包含 PY 文件和
greengrasssdk
文件夹。此 zip 包是您上传到的部署包Amazon Lambda.创建 Python 3.7 Lambda 函数后,发布函数版本并创建别名。
-
配置 Greengrass 组。
-
部署组。
-
在Amazon IoT控制台、测试页面上,订阅输出数据主题以查看连接器中的状态消息。示例 Lambda 函数是长时间生存的,并且在部署组后立即开始发送消息。
完成测试后,您可以将 Lambda 生命周期设置为按需(或
"Pinned": false
在 CLI 中设置为)并部署组。这会阻止函数发送消息。
示例
以下示例 Lambda 函数将输入消息发送到连接器。
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
许可证
这些区域有: CloudWatch 指标连接器包含以下第三方软件/许可:
-
Amazon SDK for Python (Boto3)
/Apache 许可证 2.0 -
botocore
/Apache 许可证 2.0 -
dateutil
/PSF 许可证 -
docutils
/BSD 许可证,GNU 通用公共许可证 (GPL),Python 软件基金会许可证,公共领域 -
jmespath
/MIT 许可证 -
s3transfer
/Apache 许可证 2.0 -
urllib3
/MIT 许可证
此连接器在Greengrass 核心软件许可协议
更改日志
下表介绍了连接器各个版本的更改。
版本 |
更改 |
---|---|
5 |
修复了在输入数据中添加对重复时间戳的支持。 |
4 |
增加了用于配置连接器容器化模式的 |
3 |
将 Lambda 运行时升级到 Python 3.7,这会更改运行时要求。 |
2 |
进行了修复,以减少过多的日志记录。 |
1 |
首次发布。 |
Greengrass 组每次只能包含连接器的一个版本。有关升级连接器版本的信息,请参阅升级连接器版本。
另请参阅
-
使用 Amazon CloudWatch 指标中的亚马逊 CloudWatch 用户指南
-
PutMetricData中的亚马逊 CloudWatch API 参考