Amazon IoT Greengrass Version 12023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅Amazon IoT Greengrass V1维护政策。在此日期之后,Amazon IoT Greengrass V1不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上运行的设备Amazon IoT Greengrass V1不会受到干扰,将继续运行并连接到云端。我们强烈建议你迁移到Amazon IoT Greengrass Version 2,它补充说重要的新功能和支持其他平台。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
从Amazon IoT Greengrass核心设备收集系统运行状况遥测数据
系统健康遥测数据是诊断数据,可以帮助您监控 Greengrass 核心设备上关键操作的性能。Greengrass 核心上的遥测代理收集本地遥测数据并将其发布到亚马逊, EventBridge 无需客户进行任何互动。核心设备会尽最大努力将 EventBridge 遥测数据发布到。例如,核心设备在离线时可能无法提供遥测数据。
注意
Amazon EventBridge 是一种事件总线服务,可用于将应用程序与来自各种来源的数据相连接,例如 Greengrass 核心设备和部署通知。有关更多信息,请参阅什么是 Amazon EventBridge? 在亚马逊 EventBridge 用户指南中。
您可以创建项目和应用程序来检索、分析、转换和报告边缘设备上的遥测数据。领域专家,例如工艺工程师,可以使用这些应用程序来深入了解机队的健康状况。
为确保 Greengrass 边缘组件正常运行,将数据用于开发和质量改进目的。Amazon IoT Greengrass此功能还有助于为新的和增强的边缘功能提供信息。 Amazon IoT Greengrass最多只能将遥测数据保留七天。
此功能在Amazon IoT Greengrass Core 软件 v1.11.0 中可用,所有 Greengrass 内核(包括现有内核)默认启用。一旦升级到Amazon IoT Greengrass Core 软件 v1.11.0 或更高版本,就会自动开始接收数据。
有关如何访问或管理已发布的遥测数据的信息,请参阅订阅接收遥测数据。
遥测代理收集并发布以下系统指标。
遥测指标 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
名称 | 描述 | 源 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Greengrass 核心设备(包括操作系统)上所有应用程序当前使用的内存量。 |
系统 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Greengrass 核心设备(包括操作系统)上所有应用程序当前使用的 CPU 量。 |
系统 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Greengrass 核心设备的操作系统存储的文件描述符的数量。一个文件描述符可以唯一地标识一个打开的文件。 |
系统 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
导致 Lambda 函数耗尽内存的运行次数。 |
系统 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
发往的已丢弃邮件的数量Amazon IoT Core。 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
运行用户定义的 Lambda 函数的超时次数。 |
用户定义的 Lambda 函数Amazon Web Services 云、和系统 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
用户定义的 Lambda 函数未能完成的运行次数。 |
用户定义的 Lambda 函数Amazon Web Services 云、和系统 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
导致用户定义的 Lambda 函数写入错误日志的运行次数。 |
用户定义的 Lambda 函数Amazon Web Services 云、和系统 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
附加到流管理器的数据字节数。 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
流媒体管理器导出到频道的数据的字节数Amazon IoT Analytics。 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
流管理器导出到 Amazon Kinesis 数据流中的数据字节数。 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
流管理器导出到资产属性的数据字节数Amazon IoT SiteWise。 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
流管理器导出到 Amazon S3 中对象的数据的字节数。 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
流管理器导出到 HTTP 的数据的字节数。 |
|
配置遥测设置
Greengrass 遥测使用以下设置:
-
遥测代理每小时汇总遥测数据。
-
遥测代理每 24 小时发布一次遥测消息。
注意
这些设置是不可更改的。
您可以为 Greengrass 核心设备启用或禁用遥测功能。 Amazon IoT Greengrass使用阴影来管理遥测配置。当内核连接到时,您的更改会立即生效Amazon IoT Core。
遥测代理使用 MQTT 协议发布数据,服务质量 (QoS) 级别为 0。这意味着它不会确认交付或重试发布尝试。遥测消息与发往的订阅的其他消息共享 MQTT 连接Amazon IoT Core。
除了您的数据链路成本外,从核心向内核传输数据Amazon IoT Core是免费的。这是因为代理向Amazon保留主题发布内容。但是,根据您的用例,您在接收或处理数据时可能会产生费用。
要求
配置遥测设置时,以下要求适用:
-
您必须使用Amazon IoT Greengrass核心软件 v1.11.0 或更高版本。
注意
如果您正在运行早期版本的早期版本并且不想使用遥测,则无需执行任何操作。
-
在更新遥测设置之前,您必须提供 IAM 权限才能更新核心(事物)影子和调用配置 API。
以下示例 IAM 策略允许您管理特定内核的影子和运行时配置:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowManageShadow", "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow", "iot:DeleteThingShadow", "iot:DescribeThing" ], "Resource": [ "arn:aws:iot:
region
:account-id
:thing/core-name
-*" ] }, { "Sid": "AllowManageRuntimeConfig", "Effect": "Allow", "Action": [ "greengrass:GetCoreRuntimeConfiguration", "greengrass:UpdateCoreRuntimeConfiguration" ], "Resource": [ "arn:aws:iot:region
:account-id
:thing/core-name
" ] } ] }例如,您可以使用通配符
*
命名方案授予对资源的粒度或有条件的访问权限。有关更多信息,请参阅 IAM 用户指南中的添加和删除 IAM 策略。
配置遥测设置(控制台)
以下显示了如何在Amazon IoT Greengrass控制台中更新 Greengrass 核心的遥测设置。
-
在Amazon IoT控制台导航窗格的 “管理” 下,展开 Greengrass 设备,然后选择群组 (V1)。
-
在 Greengrass 群组下,选择你的目标群组。
-
在群组配置页面的概述部分中,选择你的 Greengrass 核心。
-
在内核的配置页面上,选择遥测选项卡。
-
在 “系统运行状况遥测” 部分中,选择 “配置”。
-
在配置遥测中,选择遥测以启用或禁用遥测状态。
重要
默认情况下,Amazon IoT GreengrassCore 软件 v1.11.0 或更高版本的遥测功能处于启用状态。
更改在运行时生效。您不需要部署群组。
配置遥测设置 (CLI)
在Amazon IoT Greengrass API 中,该TelemetryConfiguration
对象表示 Greengrass 核心的遥测设置。该对象是与核心相关的RuntimeConfiguration
对象的一部分。您可以使用Amazon IoT Greengrass API 或Amazon SDK 来管理 Greengrass 遥测。Amazon CLI本节中的示例使用Amazon CLI。
- 检查遥测设置
-
以下命令获取 Greengrass 核心的遥测设置。
-
core-thing-name
替换为目标核心的名称。要获取事物名称,请使用get-core-definition-version命令。该命令返回包含事物名称的事物的 ARN。
aws greengrass get-thing-runtime-configuration --thing-name
core-thing-name
该命令在 JSON 响应中返回一个
GetCoreRuntimeConfigurationResponse
对象。例如:{ "RuntimeConfiguration": { "TelemetryConfiguration": { "ConfigurationSyncStatus": "OutOfSync", "Telemetry": "On" } } }
-
- 配置遥测设置
-
以下命令更新 Greengrass 核心的遥测设置。
-
core-thing-name
替换为目标核心的名称。要获取事物名称,请使用get-core-definition-version命令。该命令返回包含事物名称的事物的 ARN。
如果是,则已应用对遥测设置
ConfigurationSyncStatus
的更改InSync
。更改在运行时生效。您不需要部署群组。 -
TelemetryConfiguration 物体
该TelemetryConfiguration
对象具有以下属性:
ConfigurationSyncStatus
-
检查遥测设置是否同步。您可能无法更改这个属性。
类型:字符串
有效值:
InSync
或OutOfSync
Telemetry
-
开启或关闭遥测。默认为
On
。类型:字符串
有效值:
On
或Off
订阅接收遥测数据
您可以在亚马逊中创建规则 EventBridge ,定义如何处理从 Greengrass 核心设备发布的遥测数据。 EventBridge 收到数据时,它会调用规则中定义的目标操作。例如,您可以创建事件规则来发送通知、存储事件信息、采取纠正措施或调用其他事件。
遥测事件
包括遥测数据在内的部署状态更改事件使用以下格式:
{ "version": "0", "id": "f70f943b-9ae2-e7a5-fec4-4c22178a3e6a", "detail-type": "Greengrass Telemetry Data", "source": "aws.greengrass", "account": "123456789012", "time": "2020-07-28T20:45:53Z", "region": "us-west-1", "resources": [], "detail": { "ThingName": "CoolThing", "Schema": "2020-06-30", "ADP": [ { "TS": 123231546, "NS": "StreamManager", "M": [ { "N": "BytesAppended|BytesUploadedToKinesis", "Sum": 11, "U": "Bytes" } ] }, { "TS": 123231546, "NS": "StreamManager", "M": [ { "N": "BytesAppended|BytesUploadedToS3ExportTaskExecutor", "Sum": 11, "U": "Bytes" } ] }, { "TS": 123231546, "NS": "StreamManager", "M": [ { "N": "BytesAppended|BytesUploadedToHTTP", "Sum": 11, "U": "Bytes" } ] }, { "TS": 123231546, "NS": "StreamManager", "M": [ { "N": "BytesAppended|BytesUploadedToIoTAnalytics", "Sum": 11, "U": "Bytes" } ] }, { "TS": 123231546, "NS": "StreamManager", "M": [ { "N": "BytesAppended|BytesUploadedToIoTSiteWise", "Sum": 11, "U": "Bytes" } ] }, { "TS": 123231546, "NS": "arn:aws:lambda:us-west-1:123456789012:function:my-function", "M": [ { "N": "LambdaTimeout", "Sum": 15, "U": "Count" } ] }, { "TS": 123231546, "NS": "CloudSpooler", "M": [ { "N": "DroppedMessageCount", "Sum": 15, "U": "Count" } ] }, { "TS": 1593727692, "NS": "SystemMetrics", "M": [ { "N": "SystemMemUsage", "Sum": 11.23, "U": "Megabytes" }, { "N": "CpuUsage", "Sum": 35.63, "U": "Percent" }, { "N": "TotalNumberOfFDs", "Sum": 416, "U": "Count" } ] }, { "TS": 1593727692, "NS": "arn:aws:lambda:us-west-1:123456789012:function:my-function", "M": [ { "N": "LambdaOutOfMemory", "Sum": 12, "U": "Count" }, { "N": "LambdaUngracefullyKilled", "Sum": 100, "U": "Count" }, { "N": "LambdaError", "Sum": 7, "U": "Count" } ] } ] } }
该ADP
数组包含具有以下属性的聚合数据点列表:
TS
-
必需。聚合数据的时间戳。
NS
-
必需。系统的命名空间。
M
-
必需。指标列表。指标包含以下属性:
N
-
指标的名称。
Sum
-
汇总的指标值。遥测代理将新值添加到先前的总数中,因此总和是一个不断增加的值。您可以使用时间戳来查找特定聚合的值。例如,要找到最新的聚合值,请从最新的时间戳值中减去先前的时间戳值。
U
-
指标值的单位。
ThingName
-
必需。您的目标设备名称。
创建 EventBridge 规则的先决条件
在为其创建 EventBridge 规则之前Amazon IoT Greengrass,您应执行以下操作:
-
熟悉中的事件、规则和目标 EventBridge。
-
创建和配置 EventBridge 规则调用的目标。规则可以调用多种类型的目标,例如 Amazon Kinesis 直播、Amazon Lambda函数、Amazon SNS 主题和 Amazon SQS 队列。
您的 EventBridge 规则和相关目标必须位于创建 Greengrass 资源Amazon Web Services 区域的地方。有关更多信息,请参阅中的服务终端节点和配额Amazon Web Services 一般参考。
有关更多信息,请参阅什么是 Amazon EventBridge? 以及《亚马逊 EventBridge 用户指南》 EventBridge中的 “亚马逊入门”。
创建事件规则以获取遥测数据(控制台)
使用以下步骤Amazon Web Services Management Console来创建接收 Greengrass 核心发布的遥测数据的 EventBridge 规则。这样,Web 服务器、电子邮件地址和其他主题订阅者就可以响应事件。有关更多信息,请参阅《亚马逊 EventBridge 用户指南》中的创建在Amazon资源事件时触发的 EventBridge 规则。
-
打开亚马逊 EventBridge控制台
并选择创建规则。 -
在 Name and description (名称和描述) 下,输入规则的名称和描述。
-
选择事件总线 ——然后在选定的事件总线上启用该规则。
-
选择规则类型,然后选择带有事件模式的规则。
-
选择下一步。
-
对于事件来源,选择Amazon事件或 EventBridge 合作伙伴事件。
-
对于示例事件,选择Amazon事件,然后选择 Greengrass 遥测数据。
-
在事件模式中,进行以下选择:
-
对于 Event source(事件源),选择 Amazon services(服务)。
-
如需Amazon服务,请选择 Greengras s。
-
对于事件类型,选择 Greengrass 遥测数据。
-
-
选择下一步。
-
对于目标 1,选择Amazon服务。
-
对于选择目标,选择 SQS 队列。
-
对于 Queue,选择您的函数。
创建事件规则以获取遥测数据 (CLI)
使用以下步骤Amazon CLI来创建接收 Greengrass 核心发布的遥测数据的 EventBridge 规则。这样,Web 服务器、电子邮件地址和其他主题订阅者就可以响应事件。
-
创建 规则。
-
将
事物名称
替换为核心的事物名称。要获取事物名称,请使用get-core-definition-version命令。该命令返回包含事物名称的事物的 ARN。
aws events put-rule \ --name TestRule \ --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail\": {\"ThingName\": [\"
thing-name
\"]}}"模式中省略的属性将被忽略。
-
-
将主题添加为规则目标。以下示例使用 Amazon SQS,但您可以配置其他目标类型。
-
将
queue-arn
替换为您的 Amazon SQS 队列的 ARN。
aws events put-targets \ --rule TestRule \ --targets "Id"="1","Arn"="
queue-arn
"注意
要允许 Amazon EventBridge 调用您的目标队列,您必须将基于资源的策略添加到您的主题中。有关更多信息,请参阅亚马逊 EventBridge 用户指南中的 Amaz on SQS 权限。
-
有关更多信息,请参阅《亚马逊 EventBridge 用户指南》 EventBridge中的事件和事件模式。
Amazon IoT Greengrass遥测疑难解答
可以使用以下信息帮助解决配置Amazon IoT Greengrass遥测问题。
错误:运行 get-thing-runtime-configuration 命令后,响应包含ConfigurationStatusOutOfSync “:”
解决方案:
-
DeAmazon IoT vice Shadow 服务需要时间来处理运行时配置更新并将更新交付到 Greengrass 核心设备。您可以稍等片刻,稍后再检查遥测设置是否同步。
-
请确保您的核心设备已联机。
-
启用 Ama CloudWatch zon LogsAmazon IoT Core 来监控影子。
-
使用Amazon IoT指标来监控你的事情。