本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊 CloudWatch 指标组件 (aws.greengrass.Cloudwatch
) 将来自Greengrass核心设备的自定义指标发布到亚马逊。 CloudWatch该组件使组件能够发布 CloudWatch 指标,您可以使用这些指标来监控和分析 Greengrass 核心设备的环境。有关更多信息,请参阅亚马逊 CloudWatch 用户指南中的使用亚马逊 CloudWatch指标。
要使用此组件发布 CloudWatch 指标,请向该组件订阅的主题发布一条消息。默认情况下,此组件订阅 cloudwatch/metric/put
local publish/subscribe 主题。部署此组件时,您可以指定其他主题,包括 AWS IoT Core MQTT 主题。
该组件对位于同一命名空间中的指标进行批处理,并定期将其发布到 CloudWatch 。
注意
此组件提供的功能与 AWS IoT Greengrass V1 中的 CloudWatch 指标连接器类似。有关更多信息,请参阅 AWS IoT Greengrass V1 开发者指南中的CloudWatch 指标连接器。
版本
此组件具有以下版本:
-
3.2.x
-
3.1.x
-
3.0.x
-
2.1.x
-
2.0.x
有关每个组件版本中的更改的信息,请参阅更改日志。
类型
此组件是一个通用组件 (aws.greengrass.generic
)。Greengrass Nucleus 运行组件的生命周期脚本。
有关更多信息,请参阅 组件类型。
操作系统
此组件可以安装在运行以下操作系统的核心设备上:
Linux
Windows
要求
此组件具有以下要求:
-
Python
版本 3.7 已安装在核心设备上,并已添加到 PATH 环境变量中。 -
Greengrass 设备角色必须允许执行
cloudwatch:PutMetricData
操作,如以下示例 IAM 策略中所示。{ "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:PutMetricData" ], "Effect": "Allow", "Resource": "*" } ] }
有关更多信息,请参阅《亚马逊 CloudWatch 用户指南》中的亚马逊 CloudWatch权限参考。
端点和端口
除基本操作所需的端点和端口外,此组件还必须能够对以下端点和端口执行出站请求。有关更多信息,请参阅 允许设备流量通过代理或防火墙。
Endpoint | 端口 | 必需 | 描述 |
---|---|---|---|
|
443 | 是 |
上传 CloudWatch 指标。 |
依赖项
部署组件时, AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖关系的要求,才能成功部署组件。本部分列出了此组件的已发布版本的依赖关系,以及定义每个依赖关系的组件版本的语义版本约束。您还可以在 AWS IoT Greengrass 控制台
下表列出了此组件版本 3.2.0 的依赖关系。
依赖关系 | 兼容版本 | 依赖关系类型 |
---|---|---|
Greengrass Nucleus | >=2.0.0 <3.0.0 | 软性 |
令牌交换服务 | >=0.0.0 | 硬性 |
有关组件依赖关系的更多信息,请参阅组件配方参考。
配置
此组件提供您可以在部署组件时自定义的以下配置参数。
-
PublishInterval
-
(可选)组件发布给定命名空间的批处理指标之前等待的最长秒数。要将组件配置为在收到指标时发布它们,即不进行批处理,请指定
0
。该组件在同一命名空间中收到 20 个指标之后或在您指定的间隔之后发布到。 CloudWatch
注意
组件不指定事件的发布顺序。
此值最多可以是 900 秒。
默认值:10 秒
-
MaxMetricsToRetain
-
(可选)组件将指标替换为新指标之前,所有命名空间内可在内存中保存的指标的最大数量。
此限制适用于核心设备无法连接互联网的情况,以便组件缓冲指标供稍后发布。缓冲区已满时,组件会将最旧的指标替换为较新的指标。给定命名空间中的指标仅替换同一命名空间中的指标。
注意
如果组件的主机进程中断,则组件不会保存指标。例如,在部署或核心设备重新启动期间,可能会发生此情况。
此值必须至少为 2,000 个指标。
默认值:5,000 个指标
InputTopic
-
(可选)组件订阅以接收消息的主题。如果您为
PubSubToIoTCore
指定true
,则可以在本主题中使用 MQTT 通配符(+ 和 #)。默认值:
cloudwatch/metric/put
OutputTopic
-
(可选)组件向其发布状态响应的主题。
默认值:
cloudwatch/metric/put/status
PubSubToIoTCore
-
(可选)字符串值,用于定义是否发布和订阅 AWS IoT Core MQTT 主题。支持的值为
true
和false
。默认值:
false
LogLevel
-
(组件)组件的日志记录级别。从以下日志级别中选择,此处按级别顺序列出:
-
DEBUG
-
INFO
-
WARNING
-
ERROR
-
CRITICAL
默认值:
INFO
-
UseInstaller
-
(可选)布尔值,用于定义是否使用此组件中的安装程序脚本来安装此组件的 SDK 依赖关系。
如果您想使用自定义脚本来安装依赖关系,或者想要在预构建的 Linux 映像中包含运行时依赖关系,请将此值设置为
false
。要使用此组件,必须安装以下库(包括所有依赖关系),并使其可供默认 Greengrass 系统用户使用。默认值:
true
PublishRegion
-
(可选) AWS 区域 要向其发布 CloudWatch 指标的。此值覆盖核心设备的默认区域。此参数仅是跨区域指标的必需参数。
accessControl
-
(可选)包含允许组件发布和订阅指定主题的授权策略的对象。如果您为
InputTopic
和OutputTopic
指定了自定义值,则必须更新此对象中的资源值。默认值:
{ "aws.greengrass.ipc.pubsub": { "aws.greengrass.Cloudwatch:pubsub:1": { "policyDescription": "Allows access to subscribe to input topics.", "operations": [ "aws.greengrass#SubscribeToTopic" ], "resources": [ "
cloudwatch/metric/put
" ] }, "aws.greengrass.Cloudwatch:pubsub:2": { "policyDescription": "Allows access to publish to output topics.", "operations": [ "aws.greengrass#PublishToTopic" ], "resources": [ "cloudwatch/metric/put/status
" ] } }, "aws.greengrass.ipc.mqttproxy": { "aws.greengrass.Cloudwatch:mqttproxy:1": { "policyDescription": "Allows access to subscribe to input topics.", "operations": [ "aws.greengrass#SubscribeToIoTCore" ], "resources": [ "cloudwatch/metric/put
" ] }, "aws.greengrass.Cloudwatch:mqttproxy:2": { "policyDescription": "Allows access to publish to output topics.", "operations": [ "aws.greengrass#PublishToIoTCore" ], "resources": [ "cloudwatch/metric/put/status
" ] } } }
例 示例:配置合并更新
{
"PublishInterval": 0,
"PubSubToIoTCore": true
}
输入数据
此组件接受有关以下主题的指标并将这些指标发布到 CloudWatch。默认情况下,此组件订阅本地发布/订阅消息。有关如何从您的自定义组件向此组件发布消息的更多信息,请参阅 发布/订阅本地消息。
从组件版本 v3.0.0 开始,您可以选择通过将 PubSubToIoTCore
配置参数设置为 true
来将此组件配置为订阅 MQTT 主题。有关在自定义组件中向 MQTT 主题发布消息的更多信息,请参阅 发布/订阅 AWS IoT Core MQTT 消息。
默认主题:cloudwatch/metric/put
消息接受以下属性。输入消息必须采用 JSON 格式。
-
request
-
此消息中的指标。
请求对象包含要发布到 CloudWatch 的指标数据。指标值必须符合
PutMetricData
操作的规范。类型:包含以下信息的
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 个维度。
此组件自动包含一个名为
coreName
的维度,其中的值是核心设备的名称。类型:对象的
array
,每个对象都包含以下信息:-
name
-
(可选)维度名称。
类型:
string
-
value
-
(可选)维度值。
类型:
string
-
-
timestamp
-
(可选)接收指标数据的时间,以 Unix 纪元时间(以秒为单位)表示。
默认为组件收到消息的时间。
类型:
double
注意
如果您使用此组件的版本 2.0.3 到版本 2.0.7,我们建议您在从单一来源发送多个指标时分别检索每个指标的时间戳。不要使用变量来存储时间戳。
-
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"
}
}
}
输出数据
默认情况下,此组件会将响应作为输出数据发布到以下本地发布/订阅主题中。有关如何在自定义组件中订阅此主题消息的更多信息,请参阅 发布/订阅本地消息。
您可以选择通过将 PubSubToIoTCore
配置参数设置为 true
来将此组件配置为发布到 MQTT 主题。有关在自定义组件中订阅 MQTT 主题消息的更多信息,请参阅 发布/订阅 AWS IoT Core MQTT 消息。
注意
默认情况下,组件版本 2.0.x 会将响应作为输出数据发布到 MQTT 主题。您必须在旧版订阅路由器组件的配置中将主题指定为 subject
。
默认主题:cloudwatch/metric/put/status
例 示例输出:成功
响应包括指标数据的命名空间和 CloudWatch 响应中的RequestId
字段。
{
"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"
}
}
注意
如果组件检测到可以重试的错误(例如连接错误),它会在下一次批处理中重试发布。
许可证
此组件包含以下第三方软件/许可:
-
AWS 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 Core 软件许可协议
本地日志文件
此组件使用以下日志文件。
/logs/aws.greengrass.Cloudwatch.log
/greengrass/v2
查看此组件的日志
-
在核心设备上运行以下命令可实时查看此组件的日志文件。将
或/greengrass/v2
C:\greengrass\v2
替换为 AWS IoT Greengrass 根文件夹的路径。sudo tail -f
/logs/aws.greengrass.Cloudwatch.log/greengrass/v2
更改日志
下表介绍每个组件版本的更改。
版本 |
更改 |
---|---|
3.2.0 |
|
3.1.0 |
|
3.0.0 |
此版本的 CloudWatch 指标组件需要的配置参数与版本 2.x 不同。如果您为版本 2.x 使用非默认配置,并且想要从 v2.x 升级到 v3.x,则必须更新该组件的配置。有关更多信息,请参阅CloudWatch指标组件配置。
|
另请参阅
-
PutMetricData在 Amazon CloudWatch API 参考中