本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
CloudWatch 指标
Amazon CloudWatch 指标组件 (aws.greengrass.Cloudwatch
)将 Greengrass 核心设备中的自定义指标发布到 Amazon CloudWatch。组件使组件能够发布 CloudWatch 指标,您可以使用它来监控和分析 Greengrass 核心设备的环境。有关更多信息,请参阅 。使用 Amazon CloudWatch 指标中的Amazon CloudWatch 用户指南.
要使用此组件发布 CloudWatch 指标,请向此组件订阅的主题发布消息。默认情况下,此组件订阅cloudwatch/metric/put
本地发布/订阅主题。您可以指定其他主题,包括Amazon IoT CoreMQTT 主题,当您部署此组件时。
此组件对同一命名空间中的指标进行批处理,并定期将这些指标发布到 CloudWatch。
此组件提供的功能与Amazon IoT GreengrassV1。有关更多信息,请参阅 。CloudWatch 指标连接器中的Amazon IoT GreengrassV1 开发人员指南.
Versions
此组件具有以下版本:
-
2.0.x
有关组件每个版本中的更改的信息,请参阅更改日志.
Type
此组件是一个 Lambda 组件(aws.greengrass.lambda
)。这些区域有:Greengrass 核心使用运行此组件的 Lambda 函数Lambda 启动器组件.
有关更多信息,请参阅组件类型。
Requirements
此组件有以下要求:
-
您的核心设备必须满足运行 Lambda 功能的要求。如果您希望核心设备运行容器化 Lambda 功能,设备必须满足要求才能执行此操作。有关更多信息,请参阅运行 Lambda 函数的要求。
-
Python
安装在核心设备上的 PATH 环境变量中。 -
这些区域有:Greengrass 设备角色必须允许
cloudwatch:PutMetricData
操作,如以下 IAM 策略示例所示。{ "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:PutMetricData" ], "Effect": "Allow", "Resource": "*" } ] }
有关更多信息,请参阅 。Amazon CloudWatch 权限参考中的Amazon CloudWatch 用户指南.
-
若要从此组件接收输出数据,您必须合并旧版订阅路由器组件当您部署此组件时。旧版订阅路由器组件 (
aws.greengrass.LegacySubscriptionRouter
)是此组件的依赖关系。此配置指定此组件发布响应的主题。有关更多信息,请参阅创建部署。
Dependencies
部署组件时,Amazon IoT Greengrass还部署其依赖关系的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求才能成功部署组件。此部分列出了发布版本以及定义每个依赖关系的组件版本的语义版本约束。您也可以在中查看每一版的组件的依赖关系。Amazon IoT Greengrass控制台
有关组件依赖项的更多信息,请参阅。组件配方参考.
Configuration
此组件提供了以下配置参数,您可以在部署组件时自定义这些参数。
此组件的默认配置包括 Lambda 函数参数。我们建议您仅编辑以下参数,以便在设备上配置此组件。
-
lambdaParams
-
包含此组件的 Lambda 函数参数的对象。此对象包含以下信息:
-
EnvironmentVariables
-
包含 Lambda 函数的参数的对象。此对象包含以下信息:
-
PUBLISH_INTERVAL
-
(可选)组件发布给定命名空间的批处理指标之前等待的最长秒数。要将组件配置为在收到指标时发布指标(也就是说不进行批处理),请指定
0
.组件在同一命名空间中或在经过您指定间隔收到 20 个指标之后发布到 CloudWatch。
注意 组件不保证事件发布的顺序。
此值最多可以是 900 秒。
默认值:10 秒
-
MAX_METRICS_TO_RETAIN
-
(可选)组件用较新的指标替换为较新的指标之前所有命名空间内要保存在内存中的指标的最大数量。
此限制适用于核心设备没有 Internet 连接的情况,因此组件会缓冲要发布的指标的情况。当缓冲区已满时,组件会用较新的指标替换最旧的指标。给定命名空间中的指标仅替换同一命名空间中的指标。
注意 如果组件的主机进程中断,则组件不会保存度量。例如,在部署期间或核心设备重新启动时可能会发生这种情况。
此值必须至少为 2,000 个量度。
默认值:5,000 个指标
-
PUBLISH_REGION
-
(可选)Amazon Web Services 区域向其发布 CloudWatch 指标。此值会覆盖核心设备的默认区域。仅跨区域指标需要使用该参数。
-
-
containerMode
-
(可选) 此组件的容器化模式。从以下选项中进行选择:
-
NoContainer
— 组件不在隔离的运行时环境中运行。 -
GreengrassContainer
— 组件在隔离运行时环境中运行Amazon IoT Greengrass容器。
默认值:
GreengrassContainer
-
-
containerParams
-
(可选)包含此组件的容器参数的对象。组件将使用这些参数,如果您指定
GreengrassContainer
对于 来说为containerMode
.此对象包含以下信息:
-
memorySize
-
(可选)要分配给组件的内存量(以千字节为单位)。
默认值为 64 MB(65,535 KB)。
-
pubsubTopics
-
(可选)包含组件预订接收消息的主题的对象。您可以指定每个主题,以及该组件是否订阅Amazon IoT Core或本地发布/订阅主题。
此对象包含以下信息:
0
— 这是一个字符串形式的数组索引。-
包含以下信息的对象:
type
-
(可选)此组件用于订阅消息的发布/订阅消息的类型。从以下选项中进行选择:
-
Pubsub
– 订阅本地发布/订阅消息。如果选择此选项,则主题不能包含 MQTT 通配符。有关如何在指定此选项时从自定义组件发送消息的更多信息,请参阅发布/订阅本地消息. -
IotCore
— 订阅Amazon IoT CoreMQTT 消息。如果选择此选项,则主题可以包含 MQTT 通配符。有关如何在指定此选项时从自定义组件发送消息的更多信息,请参阅发布/订阅Amazon IoT CoreMQTT 消息.
默认值:
Pubsub
-
topic
-
(可选)组件订阅以接收消息的主题。如果您指定
IotCore
对于 来说为type
,您可以使用 MQTT 通配符(+
和#
)。
例如:配置合并更新(容器模式)
{ "containerMode": "GreengrassContainer" }
例如:配置合并更新(无容器模式)
{ "containerMode": "NoContainer" }
输入数据
此组件接受有关以下主题的指标,并将这些指标发布到 CloudWatch。默认情况下,此组件订阅本地发布/订阅消息。有关如何从自定义组件将消息发布到此组件的更多信息,请参阅。发布/订阅本地消息.
默认主题(本地发布/订阅): cloudwatch/metric/put
该消息接受以下属性。输入消息必须采用 JSON 格式。
-
request
-
此消息中的指标。
请求对象包含要发布到 CloudWatch 的指标数据。指标值必须符合
PutMetricData
operation.类型:
object
,包含以下信息:-
namespace
-
此请求中的指标数据的用户定义命名空间。CloudWatch 使用命名空间作为指标数据点的容器。
注意 不能指定以保留字符串开头的命名空间
AWS/
.类型:
string
有效模式:
[^:].*
-
metricData
-
指标的数据。
类型:
object
,包含以下信息:-
metricName
-
指标的名称。
类型:
string
-
value
-
指标的值。
注意 CloudWatch 拒绝过小或过大的值。值必须介于
8.515920e-109
和1.174271e+108
(基数 10)或2e-360
和2e360
(基地 2). CloudWatch 不支持特殊值,例如NaN
、+Infinity
, 和-Infinity
.类型:
double
-
dimensions
-
(可选)指标的。维度提供有关指标及其数据的附加信息。指标最多可定义 10 个维度。
类型:
array
的对象,其中每个对象均包含以下信息:-
name
-
(可选)维度名称。
类型:
string
-
value
-
(可选)维度值。
类型:
string
-
-
timestamp
-
(可选)接收指标数据的时间,以 Unix 纪元时间为单位,以秒为单位。
默认为组件接收消息的时间。
类型:
integer
注意 当您在单个 Lambda 函数中发送多个指标时,我们建议您分别检索每个指标的时间戳。不要使用变量来存储时间戳。
-
unit
-
(可选)指标的单位。
类型:
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
默认值为
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 主题上的输出数据。您必须将此主题指定为subject
配置中的旧版订阅路由器组件. 有关如何在自定义组件中订阅有关此主题的消息的更多信息,请参阅。发布/订阅Amazon IoT CoreMQTT 消息.
默认主题 (Amazon IoT CoreMQTT): 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" } }
如果组件检测到可重试的错误(如连接错误),它会在下一批处理中重试发布。
Licenses
此组件包含以下第三方软件/许可:
-
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 核心软件许可协议
Changelog
下表介绍每一版的中的更改。
Version |
更改 |
---|---|
2.0.7 |
已更新适用于 Greengrass 原核 2.4.0 版发行。 |
2.0.6 |
已更新适用于 Greengrass 原核 2.3.0 版发行。 |
2.0.5 |
已更新适用于 Greengrass 原核 2.2.0 版发行。 |
2.0.4 |
已更新适用于 Greengrass 原核 2.1.0 版发行。 |
2.0.3 |
初始版本。 |
另请参阅
-
使用 Amazon CloudWatch 指标中的Amazon CloudWatch 用户指南
-
PutMetricData中的Amazon CloudWatch API 参考