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

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

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

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

注意

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

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

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

默认情况下,为所有 Greengrass 核心设备启用此功能。在设置 Greengrass 核心设备后,您会自动开始接收数据。

AWS AWS IoT Greengrass 遥测使用以下默认设置:

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

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

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

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

遥测指标

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

名称 描述

SystemMemUsage

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

系统

CpuUsage

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

系统

TotalNumberOfFDs

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

系统

NumberOfComponentsRunning

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

AWS IoT Greengrass 核心

NumberOfComponentsErrored

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

AWS IoT Greengrass 核心

NumberOfComponentsInstalled

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

AWS IoT Greengrass 核心

NumberOfComponentsStarting

Greengrass 核心设备上开始的组件的数量。

AWS IoT Greengrass 核心

NumberOfComponentsNew

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

AWS IoT Greengrass 核心

NumberOfComponentsStopping

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

AWS IoT Greengrass 核心

NumberOfComponentsFinished

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

AWS IoT Greengrass 核心

NumberOfComponentsBroken

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

AWS IoT Greengrass 核心

NumberOfComponentsStateless

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

AWS IoT Greengrass 核心

配置遥测设置

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

订阅遥测数据

您可以在 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" } ] } ] } }

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

TS

聚合数据的时间的时间戳。

NS

指标命名空间。

M

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

N

指标的名称。

Sum

聚合指标值。遥测代理将新值添加到以前的总计中,因此总和是一个持续增加的值。您可以使用时间戳来查找特定聚合的值。例如,要查找最新的聚合值,请从最新的时间戳值中减去以前的时间戳值。

U

指标值的单位。

创建 EventBridge 规则的先决条件

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

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

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

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

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

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

使用以下步骤,通过 AWS 管理控制台创建接收 Greengrass 核心设备发布的遥测数据的 EventBridge 规则。这样,Web 服务器、电子邮件地址和其他主题订阅者就可以响应事件。有关更多信息,请参阅《Amazon EventBridge 用户指南》中的“创建 EventBridge 规则,以从 AWS 资源触发事件”。

  1. 打开 Amazon EventBridge 控制台,然后选择 Create rule (创建规则)。

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

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

    1. 选择 Event pattern

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

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

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

    5. 对于 Event type (事件类型),选择 Greengrass Telemetry Data (Greengrass 遥测数据)。

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

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

    1. 对于 Target (目标),选择 SQS queue (SQS 队列)。

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

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

  7. 选择创建

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

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

  1. 创建 规则。

    • Replace thing-name 替换为核心设备的事物名称。

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

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

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

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

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

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

有关更多信息,请参阅《Amazon EventBridgeEventBridge 中的事件和事件模式”。