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

Amazon IoT Greengrass Version 1在 2023 年 6 月 30 日之前不再接收功能更新,并且只会收到安全补丁和错误修复。有关更多信息,请参阅 。Amazon IoT Greengrass V1维护政策. 强烈建议您选择迁移到Amazon IoT Greengrass Version 2,这增加了重要新功能对其他平台的支持.

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

从以下位置收集系统运行状况遥测数据Amazon IoT Greengrass核心设备

系统运行状况遥测数据是诊断数据,可帮助您监控 Greengrass 核心设备上关键操作的性能。Greengrass 核心上的遥测代理收集本地遥测数据并将其发布到亚马逊 EventBridge 无需任何客户互动。核心设备将遥测数据发布到 EventBridge 尽最大努力发出。例如,核心设备在离线时可能无法传送遥测数据。

注意

亚马逊 EventBridge 是一种事件总线服务,让您可以用其轻松地将应用程序与来自各种来源的数据相连接,例如 Greengrass 核心设备和部署通知. 有关更多信息,请参阅 。什么是 Amazon EventBridge?中的亚马逊 EventBridge 用户指南.

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

为确保 Greengrass 边缘组件正常运行,Amazon IoT Greengrass将数据用于开发和质量改进目的。此功能还有助于为新的和增强的边缘功能提供信息。Amazon IoT Greengrass仅保留遥测数据最多 7 天。

此功能在Amazon IoT Greengrass核心软件 v1.11.0,默认情况下对所有 Greengrass 内核(包括现有内核)启用。升级到后,您会立即自动开始接收数据Amazon IoT Greengrass核心软件版本 v1 或更高版本。

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

遥测代理收集并发布以下系统指标。

遥测指标
名称 描述

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

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

GGStreamManager系统组件

配置遥测设置

Greengrass 遥测使用以下设置:

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

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

注意

这些设置是不可更改的。

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

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

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

要求

配置遥测设置时,以下要求适用:

  • 您必须使用Amazon IoT Greengrass核心软件版本 v1 或更高版本。

    注意

    如果您运行的是早期版本并且不想使用遥测,则无需执行任何操作。

  • 在更新遥测设置之前,您必须提供 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" ] } ] }

    您可以授予对资源的具体或条件访问权限,例如,通过使用通配符来授予对资源的具体或条件访问权限*命名方案。有关更多信息,请参阅 。添加和删除 IM 策略中的IAM 用户指南.

配置遥测设置(控制台)

下面显示了Greengrass 在Amazon IoT Greengrass控制台。

  1. 在Amazon IoT控制台导航窗格,在Manage,展开Greengrass,然后选择。组 (V1).

  2. UNDERGreengrass 组,选择您的目标组。

  3. 在组配置页面上,在概述部分,选择您的Greengrass 核心.

  4. 在核心的配置页面上,选择遥测选项卡。

  5. 系统运行状况遥测部分,选择。配置.

  6. In配置遥测中,选择 “遥测” 以启用或禁用 “遥测” 状态。

    重要

    默认情况下会对以下对象启用遥测功能Amazon IoT Greengrass核心软件版本 v1 或更高版本。

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

配置遥测设置 (CLI)

在Amazon IoT GreengrassAPI,TelemetryConfiguration对象表示Greengrass 核心的遥测设置。这个对象是RuntimeConfiguration与核心关联的对象。您可以使用Amazon IoT GreengrassAPI,Amazon CLI,或者Amazon用于管理Greengrass 遥测的 SDK。本节中的示例使用Amazon CLI.

检查遥测设置

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

  • Replacecore-thing-name使用目标核心的名称。

    要获取事物名称,请使用get-core-definition-version命令。命令会返回包含事物名称的事物的 ARN。

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

该命令将返回GetCoreRuntimeConfigurationResponseJSON 响应的对象。例如:

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

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

  • Replacecore-thing-name使用目标核心的名称。

    要获取事物名称,请使用get-core-definition-version命令。命令会返回包含事物名称的事物的 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 宾语

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

ConfigurationSyncStatus

检查遥测设置是否同步。您可能不会更改这个属性。

类型:字符串

有效值:InSyncOutOfSync

Telemetry

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

类型:字符串

有效值:OnOff

订阅接收遥测数据

您可以在亚马逊创建规则 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 规则,并且关联的目标必须位于Amazon Web Services 区域你在哪里创建了你的Greengrass 资源。有关更多信息,请参阅 。服务终端节点和配额中的Amazon一般参考.

有关更多信息,请参阅 。什么是 Amazon EventBridge?开始使用 Amazon EventBridge中的亚马逊 EventBridge 用户指南.

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

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

  1. 打开亚马逊 EventBridge控制台然后选择创建规则.

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

  3. 选择事件总线-并在选定的事件总线上启用该规则。

  4. Select.Rule type然后选择具有事件模式的规则.

  5. 选择 Next(下一步)。

  6. 适用于事件源,选择Amazon事件或 EventBridge 合作伙伴活动.

  7. 适用于示例事件,选择Amazon事件,然后选择。Greengrass 遥测数据.

  8. In事件模式,进行以下选择:

    1. 适用于事件源,选择Amazon服务.

    2. 适用于Amazon服务,选择Greengrass.

    3. 适用于Event type,选择Greengrass 遥测数据.

  9. 选择 Next(下一步)。

  10. 适用于目标 1,选择Amazon服务.

  11. 适用于选择一个目标,选择SQS 队列.

  12. 适用于队列,选择您的函数。

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

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

  1. 创建 规则。

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

      要获取事物名称,请使用get-core-definition-version命令。命令会返回包含事物名称的事物的 ARN。

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

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

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

    • Replacequeue-arn使用您的 Amazon SQS 队列的 ARN。

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

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

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

问题排查Amazon IoT Greengrass遥测

使用以下信息可帮助您解决配置中的问题Amazon IoT Greengrass遥测。

Error: 响应包含”ConfigurationStatus“: "OutOfSync“在你运行 get-thing-runtime-configuration 命令

解决方案:

  • 这些区域有:Amazon IoTDevice Shadow 服务需要一些时间来处理运行时配置更新并将更新交付给 Greengrass 核心设备。稍后,您可以稍后再检查遥测设置是否同步。

  • 确保您的核心设备已联机。

  • 启用亚马逊 CloudWatch 中的 日志Amazon IoT Core监视影子。

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