收集系统健康状况遥测数据Amazon IoT Greengrass核心设备 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

您正在查看Amazon IoT Greengrass Version 1.Amazon IoT Greengrass Version 2是最新的主要版本Amazon IoT Greengrass. 有关使用Amazon IoT Greengrass V2,请参阅Amazon IoT Greengrass Version 2开发人员指南.

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

收集系统健康状况遥测数据Amazon IoT Greengrass核心设备

系统健康状况遥测数据是诊断数据,可帮助您监控 Greengrass 核心设备上关键操作的性能。Greengrass 核心上的遥测代理收集本地遥测数据并将其发布到 Amazon EventBridge,而无需任何客户交互。核心设备会尽力将遥测数据发布到 EventBridge。例如,核心设备在离线时可能无法提供遥测数据。

注意

Amazon EventBridge 是一个事件总线服务,您可以使用,将应用程序与来自各种来源的数据连接起来,例如 Greengrass 核心设备和之一:部署通知。有关更多信息,请参阅 。什么是 Amazon EventBridge?中的Amazon EventBridge 用户指南

您可以创建项目和应用程序,以便从边缘设备检索、分析、转换和报告遥测数据。领域专家(如流程工程师)可以使用这些应用程序来深入了解车队的运行状况。

为了确保 Greengrass 边组件正常工作,Amazon IoT Greengrass将数据用于开发和提高质量的目的。此功能还有助于提供新的和增强的边缘功能。Amazon IoT Greengrass仅保留遥测数据最多七天。

此功能在Amazon IoT Greengrass核心软件 v1.11.0,默认情况下为所有 Greengrass 内核(包括现有内核)启用。一旦升级到Amazon IoT Greengrass核心软件 v1.11.0 或更高版本。

有关如何访问或管理发布的遥测数据的信息,请参阅订阅接收遥测数据

遥测代理收集并发布以下系统度量。

遥测指标
名称 说明

SystemMemUsage

Greengrass 核心设备上的所有应用程序当前正在使用的内存量,包括操作系统。

系统

CpuUsage

Greengrass 核心设备上的所有应用程序当前正在使用的 CPU 量,包括操作系统。

系统

TotalNumberOfFDs

Greengrass 核心设备的操作系统存储的文件描述符数目。一个文件描述符唯一标识一个打开的文件。

系统

LambdaOutOfMemory

导致 Lambda 函数内存不足的运行次数。

系统

DroppedMessageCount

丢弃的邮件的数量 Amazon IoT Core 。

GGCloudSpooler系统组件

LambdaTimeout

运行用户定义的 Lambda 函数的超时次数。

用户定义的 Lambda 函数, Amazon Web Services 云 和系统

LambdaUngracefullyKilled

用户定义的 Lambda 函数无法完成的运行次数。

用户定义的 Lambda 函数 Amazon Web Services 云 和系统

LambdaError

导致用户定义的 Lambda 函数写入错误日志的运行次数。

用户定义的 Lambda 函数 Amazon Web Services 云 和系统

BytesAppended

附加到流管理器的数据的字节数。

GGStreamManager系统组件

BytesUploadedToIoTAnalytics

流管理器导出到Amazon IoT Analytics。

GGStreamManager系统组件

BytesUploadedToKinesis

流管理器导出到 Amazon Kinesis 数据流中流的数据字节数。

GGStreamManager系统组件

BytesUploadedToIoTSiteWise

流管理器导出到中资产属性的数据的字节数Amazon IoT SiteWise。

GGStreamManager系统组件

BytesUploadedToS3ExportTaskExecutor

流管理器导出到 Amazon S3 中的对象的数据的字节数。

GGStreamManager系统组件

BytesUploadedToHTTP

流管理器导出到 HTTP 的数据的字节数。

GGStreamManager系统组件

配置遥测设置

Greengrass 遥测使用以下设置:

  • 遥测代理每小时聚合遥测数据。

  • 遥测代理每 24 小时发布一条遥测消息。

注意

这些设置是不可更改的。

您可以启用或禁用 Greengrass 核心设备的遥测功能。Amazon IoT Greengrass使用Shadows来管理遥测配置。您的更改将立即生效,当核心连接到 Amazon IoT Core 。

遥测代理使用服务质量 (QoS) 级别为 0 的 MQTT 协议发布数据。这意味着它不会确认传递或重试发布尝试。遥测消息与其他消息共享 MQTT 连接,用于订阅目的地 Amazon IoT Core 。

除了数据链路成本之外,数据从核心传输到 Amazon IoT Core 是免费的。这是因为代理发布到Amazon预留的主题。但是,根据您的用例,您可能会在接收或处理数据时产生成本。

Requirements

配置遥测设置时,满足以下要求:

  • 您必须使用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 用户指南

配置遥测设置(控制台)

下面显示了如何更新 Greengrass 核心的遥测设置Amazon IoT Greengrass控制台。

  1. 登录到 Amazon IoT Greengrass 控制台

  2. 在Amazon IoT控制台的导航窗格中,选择Greengrass经典 (V1)Groups

  3. UNDERGreengrass 组下,选择您的目标组。

  4. 在导航窗格中,选择 Cores

  5. UNDER核心下,选择您的目标核心。

  6. 在导航窗格中,选择遥测

  7. 在存储库的系统 Health 遥测页面上,选择编辑

  8. UNDER配置遥测中,选择Enable (启用 Gem)或者禁用,然后选择更新

    重要

    默认情况下,启用遥测功能Amazon IoT Greengrass核心软件 v1.11.0 或更高版本。

更改在运行时生效。您无需部署组。

配置遥测设置 (CLI)

在Amazon IoT GreengrassAPI、TelemetryConfiguration对象表示 Greengrass 核心的遥测设置。此对象是RuntimeConfiguration对象与核心相关联。可以使用Amazon IoT GreengrassAPI、Amazon CLI,或者Amazon软件开发工具包来管理 Greengrass 斯遥测。本节中的示例使用Amazon CLI。

检查遥测设置

以下命令获取 Greengrass 核心的遥测设置。

  • Replace核心事物名称替换为目标核心的名称。

    要获取事物名称,您可以使用获取核心定义版本命令。命令返回包含事物名称的事物的 ARN。

aws greengrass get-thing-runtime-configuration --thing-name core-thing-name

该命令将返回GetCoreRuntimeConfigurationResponse对象在 JSON 响应中。例如:

{ "RuntimeConfiguration": { "TelemetryConfiguration": { "ConfigurationSyncStatus": "OutOfSync", "Telemetry": "On" } } }
配置遥测设置

以下命令更新 Greengrass 核心的遥测设置。

  • Replace核心事物名称替换为目标核心的名称。

    要获取事物名称,您可以使用获取核心定义版本命令。命令返回包含事物名称的事物的 ARN。

JSON expanded
aws greengrass update-thing-runtime-configuration --thing-name core-thing-name --telemetry-configuration '{ "RuntimeConfiguration": { "TelemetryConfiguration": { "ConfigurationSyncStatus": "InSync", "Telemetry": "Off" } } }
JSON single-line
aws greengrass update-thing-runtime-configuration --thing-name core-thing-name --telemetry-configuration "{\"TelemetryConfiguration\":{\"ConfigurationSyncStatus\":\"InSync\",\"Telemetry\":\"Off\"}}"

对遥测设置的更改已应用ConfigurationSyncStatusInSync。更改在运行时生效。您无需部署组。

遥测配置对象

这些区域有:TelemetryConfiguration对象具有以下属性:

ConfigurationSyncStatus

检查遥测设置是否同步。您可能不会对此属性进行更改。

类型:字符串

有效值:InSyncOutOfSync

Telemetry

打开或关闭遥测。默认为 On

类型:字符串

有效值:OnOff

订阅接收遥测数据

您可以在 Amazon 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 中的事件、规则和目标。

  • 创建和配置targets由您的 EventBridge 梁规则调用。规则可以调用许多类型的目标,例如 Amazon Kinesis 流、Amazon Lambda函数、Amazon SNS 主题和 Amazon SQS 队列。

    您的 EventBridge 规则和关联的目标必须位于 Amazon Web Services 区域 在那里你创建了你的 Greengrass 资源。有关更多信息,请参阅 。服务终端节点和配额中的Amazon一般参考

有关更多信息,请参阅 。什么是 Amazon EventBridge?Amazon EventBridge 入门中的Amazon EventBridge 用户指南

创建事件规则以获取遥测数据(控制台)

请使用以下步骤使用Amazon Web Services Management Console创建一个 EventBridge 规则,用于接收由 Greengrass 核心发布的遥测数据。这样,Web 服务器、电子邮件地址和其他主题订阅者就可以响应事件。有关更多信息,请参阅 。创建对事件触发的 EventBridge 规则Amazon资源中的Amazon EventBridge 用户指南

  1. 打开Amazon EventBridge,然后选择创建规则

  2. Name and description (名称和描述) 下,输入规则的名称和描述。

  3. Define pattern (定义模式) 下,配置规则模式。

    1. 选择 Event pattern

    2. 选择 Pre-defined pattern by service (服务预定义的模式)

    3. 对于 Service provider (服务提供商),选择 Amazon

    4. 对于 Service name (服务名称),选择 Greengrass

    5. 适用于Event type下,选择Greengrass Telemetry Telemetry

  4. Select event bus (选择事件总线) 下,保留默认事件总线选项。

  5. Select targets (选择目标) 下,配置您的目标。以下示例使用 Amazon SQS 队列,而您可以配置其他目标类型。

    1. 适用于目标中,选择SQS 队列

    2. 适用于队列 *下,选择您的目标队列。

  6. Tags - optional (标签 - 可选) 下,定义规则的标签或将字段留空。

  7. 选择创建

创建事件规则以获取遥测数据 (CLI)

请使用以下步骤使用Amazon CLI创建一个 EventBridge 规则,用于接收由 Greengrass 核心发布的遥测数据。这样,Web 服务器、电子邮件地址和其他主题订阅者就可以响应事件。

  1. 创建 规则。

    • Replace事物名称使用核心的事物名称。

      要获取事物名称,您可以使用获取核心定义版本命令。命令返回包含事物名称的事物的 ARN。

    aws events put-rule \ --name TestRule \ --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail\": {\"ThingName\": [\"thing-name\"]}}"

    模式中省略的属性将被忽略。

  2. 将主题添加为规则目标。以下示例使用 Amazon SQS,而您可以配置其他目标类型。

    • Replace队列 arn使用 Amazon SQS 队列的 ARN 执行。

    aws events put-targets \ --rule TestRule \ --targets "Id"="1","Arn"="queue-arn"
    注意

    要允许 Amazon EventBridge 调用您的目标队列,您必须将基于资源的策略添加到您的主题中。有关更多信息,请参阅 。Amazon SQS 权限中的Amazon EventBridge 用户指南

有关更多信息,请参阅 。EventBridge 中的事件和事件模式中的Amazon EventBridge 用户指南

故障排除Amazon IoT Greengrass遥测

使用以下信息可帮助您排查配置Amazon IoT Greengrass遥测。

Error: 响应包含 “配置状态”:运行获取运行时配置命令后,“OutofSync”

解决方案:

  • 这些区域有:Amazon IoTDevice Shadow 服务需要时间来处理运行时配置更新并将更新传递到 Greengrass 核心设备。您可能稍后等待并检查遥测设置是否同步。

  • 确保您的核心设备处于联机状态。

  • Enable (启用 Gem)Amazon CloudWatch Logs Amazon IoT Core 以监视阴影。

  • 使用Amazon IoT指标来监测您的事物。