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

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

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

系统运行状况遥测数据是一种诊断数据,可以帮助您监控 Greengrass 核心设备上关键操作的性能。您可以创建项目和应用程序,以检索、分析、转换和报告来自边缘设备的遥测数据。工艺工程师等领域专家可以使用这些应用程序来深入了解实例集的运行状况。

您可以使用以下方法从 Greengrass 核心设备收集遥测数据:

  • Nucleus 遥测发射器组件 — Greengras s 核心设备aws.greengrass.telemetry.NucleusEmitter上的 nucleus 遥测发射器组件 () 默认向主题发布遥测数据。$local/greengrass/telemetry即使您的设备与云的连接有限,您也可以使用发布到本主题的数据在核心设备上进行本地操作。或者,您也可以将组件配置为将遥测数据发布到您选择的 M Amazon IoT Core QTT 主题。

    必须将 nucleus 发射器组件部署到核心设备才能发布遥测数据。向本地主题发布遥测数据不会产生任何费用。但是,使用 MQTT 主题向发布数据Amazon Web Services 云需视Amazon IoT Core定价而定。

    Amazon IoT Greengrass提供了多个社区组件,可帮助您使用 InfluxDB 和 Grafana 在核心设备上本地分析和可视化遥测数据。这些组件使用来自原子核发射器组件的遥测数据。有关更多信息,请参阅 InfluxDB 发布者组件的自述文件。

  • 遥测代理 — Greengrass 核心设备上的遥测代理收集本地遥测数据并将其发布到亚马逊,无需任何客户互动。 EventBridge 核心设备会尽最大努力向其 EventBridge 发布遥测数据。例如,核心设备在离线时可能无法传输遥测数据。

    所有 Greengrass 核心设备默认启用遥测代理功能。设置 Greengrass 核心设备后,您就会自动开始接收数据。除了您的数据链路费用外,从核心设备传输到的数据Amazon IoT Core也是免费的。这是因为代理会发布到 Amazon 保留主题。但是,根据您的使用场景,您在接收或处理数据时可能会产生费用。

    注意

    Amazon EventBridge 是一项事件总线服务,可用于将应用程序与来自各种来源(例如 Greengrass 核心设备)的数据连接起来。有关更多信息,请参阅什么是亚马逊 EventBridge? 在《亚马逊 EventBridge 用户指南》中。

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

本节介绍如何配置和使用遥测代理。有关配置 nucleus 遥测发射器组件的信息,请参见。Nucleus 遥测发射器

遥测指标

下表描述了遥测代理发布的指标。

名称 描述

系统

SystemMemUsage

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

CpuUsage

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

TotalNumberOfFDs

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

Greengrass 核

NumberOfComponentsRunning

在 Greengrass 核心设备上运行的组件数量。

NumberOfComponentsErrored

Greengrass 核心设备上处于错误状态的组件数量。

NumberOfComponentsInstalled

安装在 Greengrass 核心设备上的组件数量。

NumberOfComponentsStarting

在 Greengrass 核心设备上启动的组件数量。

NumberOfComponentsNew

Greengrass 核心设备上新增的组件数量。

NumberOfComponentsStopping

在 Greengrass 核心设备上停止运行的组件数量。

NumberOfComponentsFinished

在 Greengrass 核心设备上完成的组件数量。

NumberOfComponentsBroken

Greengrass 核心设备上损坏的组件数量。

NumberOfComponentsStateless

Greengrass 核心设备上处于无状态的组件数量。

客户端设备身份验证 — 此功能需要客户端设备身份验证组件的 v2.4.0 或更高版本。

VerifyClientDeviceIdentity.Success

验证客户端设备身份是否成功的次数。

VerifyClientDeviceIdentity.Failure

验证客户端设备身份失败的次数。

AuthorizeClientDeviceActions.Success

客户端设备被授权完成请求的操作的次数。

AuthorizeClientDeviceActions.Failure

客户端设备无权完成请求的操作的次数。

GetClientDeviceAuthToken.Success

客户端设备成功通过身份验证的次数。

GetClientDeviceAuthToken.Failure

无法对客户端设备进行身份验证的次数。

SubscribeToCertificateUpdates.Success

成功订阅证书更新的次数。

SubscribeToCertificateUpdates.Failure

尝试订阅证书更新的失败次数。

ServiceError

客户端设备身份验证中未处理的内部错误数量。

直播管理器 — 此功能需要 Greengrass 核心组件的 v2.7.0 或更高版本。

BytesAppended

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

BytesUploadedToIoTAnalytics

流管理器导出到 Amazon IoT Analytics 中频道的数据的字节数。

BytesUploadedToKinesis

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

BytesUploadedToIoTSiteWise

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

BytesUploadedToS3

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

配置遥测代理设置

遥测代理使用以下默认设置:

  • 遥测代理每小时汇总一次遥测数据。

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

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

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

您可以为每台 Greengrass 核心设备启用或禁用遥测代理功能。您还可以配置核心设备聚合和发布数据的间隔。要配置遥测,请在部署 Greengr ass nucleus 组件时自定义遥测配置参数。

订阅遥测数据 EventBridge

您可以在 Amazon 中创建规则 EventBridge ,定义如何处理遥测代理在 Greengrass 核心设备上发布的遥测数据。 EventBridge 收到数据后,它会调用您的规则中定义的目标操作。例如,您可以创建事件规则来发送通知、存储事件信息、采取纠正措施或调用其他事件。

遥测事件

遥测事件使用以下格式。

{ "version": "0", "id": "a09d303e-2f6e-3d3c-a693-8e33f4fe3955", "detail-type": "Greengrass Telemetry Data", "source": "aws.greengrass", "account": "123456789012", "time": "2020-11-30T20:45:53Z", "region": "us-east-1", "resources": [], "detail": { "ThingName": "MyGreengrassCore", "Schema": "2020-07-30", "ADP": [ { "TS": 1602186483234, "NS": "SystemMetrics", "M": [ { "N": "TotalNumberOfFDs", "Sum": 6447.0, "U": "Count" }, { "N": "CpuUsage", "Sum": 15.458333333333332, "U": "Percent" }, { "N": "SystemMemUsage", "Sum": 10201.0, "U": "Megabytes" } ] }, { "TS": 1602186483234, "NS": "GreengrassComponents", "M": [ { "N": "NumberOfComponentsStopping", "Sum": 0.0, "U": "Count" }, { "N": "NumberOfComponentsStarting", "Sum": 0.0, "U": "Count" }, { "N": "NumberOfComponentsBroken", "Sum": 0.0, "U": "Count" }, { "N": "NumberOfComponentsFinished", "Sum": 1.0, "U": "Count" }, { "N": "NumberOfComponentsInstalled", "Sum": 0.0, "U": "Count" }, { "N": "NumberOfComponentsRunning", "Sum": 7.0, "U": "Count" }, { "N": "NumberOfComponentsNew", "Sum": 0.0, "U": "Count" }, { "N": "NumberOfComponentsErrored", "Sum": 0.0, "U": "Count" }, { "N": "NumberOfComponentsStateless", "Sum": 0.0, "U": "Count" } ] }, { "TS": 1602186483234, "NS": "aws.greengrass.ClientDeviceAuth", "M": [ { "N": "VerifyClientDeviceIdentity.Success", "Sum": 3.0, "U": "Count" }, { "N": "VerifyClientDeviceIdentity.Failure", "Sum": 1.0, "U": "Count" }, { "N": "AuthorizeClientDeviceActions.Success", "Sum": 20.0, "U": "Count" }, { "N": "AuthorizeClientDeviceActions.Failure", "Sum": 5.0, "U": "Count" }, { "N": "GetClientDeviceAuthToken.Success", "Sum": 5.0, "U": "Count" }, { "N": "GetClientDeviceAuthToken.Failure", "Sum": 2.0, "U": "Count" }, { "N": "SubscribeToCertificateUpdates.Success", "Sum": 10.0, "U": "Count" }, { "N": "SubscribeToCertificateUpdates.Failure", "Sum": 1.0, "U": "Count" }, { "N": "ServiceError", "Sum": 3.0, "U": "Count" } ] }, { "TS": 1602186483234, "NS": "aws.greengrass.StreamManager", "M": [ { "N": "BytesAppended", "Sum": 157745524.0, "U": "Bytes" }, { "N": "BytesUploadedToIoTAnalytics", "Sum": 149012.0, "U": "Bytes" }, { "N": "BytesUploadedToKinesis", "Sum": 12192.0, "U": "Bytes" }, { "N": "BytesUploadedToIoTSiteWise", "Sum": 13321.0, "U": "Bytes" }, { "N": "BytesUploadedToS3", "Sum": 12213.0, "U": "Bytes" } ] } ] } }

ADP 数组包含具有以下属性的聚合数据点的列表:

TS

收集数据的时间戳。

NS

指标命名空间。

M

指标列表。一个指标包含以下属性:

N

指标的名称。

Sum

此遥测事件中指标值的总和。

U

指标值的单位。

有关每个指标的更多信息,请参阅遥测指标

创建 EventBridge规则的先决条件

在为创建 EventBridge 规则之前Amazon IoT Greengrass,应执行以下操作:

  • 熟悉中的事件、规则和目标。 EventBridge

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

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

有关更多信息,请参阅什么是亚马逊 EventBridge? 以及《亚马逊 EventBridge 用户指南》 EventBridge中的 “亚马逊入门”。

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

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

  1. 打开 A mazon 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. 对于事件类型,请选择 Greengrass 遥测数据

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

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

    1. 对于 “目标”,选择 SQS 队列。

    2. 对于 Queue*,选择您的目标队列

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

  7. 选择创建

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

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

  1. 创建 规则。

    • 事物名称替换为核心设备的事物名称。

    Linux or Unix
    aws events put-rule \ --name MyGreengrassTelemetryEventRule \ --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail\": {\"ThingName\": [\"thing-name\"]}}"
    Windows Command Prompt (CMD)
    aws events put-rule ^ --name MyGreengrassTelemetryEventRule ^ --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail\": {\"ThingName\": [\"thing-name\"]}}"
    PowerShell
    aws events put-rule ` --name MyGreengrassTelemetryEventRule ` --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail\": {\"ThingName\": [\"thing-name\"]}}"

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

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

    • queue-arn 替换为 Amazon SQS 队列的 ARN。

    Linux or Unix
    aws events put-targets \ --rule MyGreengrassTelemetryEventRule \ --targets "Id"="1","Arn"="queue-arn"
    Windows Command Prompt (CMD)
    aws events put-targets ^ --rule MyGreengrassTelemetryEventRule ^ --targets "Id"="1","Arn"="queue-arn"
    PowerShell
    aws events put-targets ` --rule MyGreengrassTelemetryEventRule ` --targets "Id"="1","Arn"="queue-arn"
    注意

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

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