

终止支持通知：2026 年 10 月 7 日， AWS 将停止对的支持。 AWS IoT Greengrass Version 1 2026 年 10 月 7 日之后，您将无法再访问这些 AWS IoT Greengrass V1 资源。如需了解更多信息，请访问[迁移自 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)。

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

# 从 AWS IoT Greengrass 核心设备收集系统运行状况遥测数据
<a name="telemetry"></a>

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

**注意**  
[Amazon EventBridge 是一项事件总线服务，可用于将应用程序与来自各种来源（例如 Greengrass 核心设备和部署通知）的数据连接起来。](deployment-notifications.md)有关更多信息，请参阅[什么是亚马逊 EventBridge？](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) 在《*亚马逊 EventBridge 用户指南》*中。

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

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

此功能在 C AWS IoT Greengrass ore 软件 v1.11.0 中可用，默认情况下，所有 Greengrass 内核（包括现有内核）均处于启用状态。升级到 C AWS IoT Greengrass ore 软件 v1.11.0 或更高版本后，您就会自动开始接收数据。

有关如何访问或管理已发布遥测数据的信息，请参阅[订阅以接收遥测数据](#subscribe-for-telemetry-data)。

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


**遥测指标**  

| Name | 说明 | 来源 | 
| --- | --- | --- | 
|  `SystemMemUsage`  |  Greengrass 核心设备上所有应用程序（包括操作系统）当前使用的内存量。  |  系统  | 
|  `CpuUsage`  |  Greengrass 核心设备上所有应用程序（包括操作系统）当前使用的 CPU 量。  |  系统  | 
|  `TotalNumberOfFDs`  |  Greengrass 核心设备操作系统存储的文件描述符的数量。一个文件描述符可以唯一地标识一个打开的文件。  |  系统  | 
|  `LambdaOutOfMemory`  |  导致 Lambda 函数用完内存的运行次数。  |  系统  | 
|  `DroppedMessageCount`  |  发往 AWS IoT Core的已丢弃消息的数量。  |  `GGCloudSpooler` 系统组件  | 
|  `LambdaTimeout`  |  运行用户定义的 Lambda 函数的超时次数。  |  用户定义的 Lambda 函数和 AWS 云系统  | 
|  `LambdaUngracefullyKilled`  |  用户定义的 Lambda 函数未能完成的运行次数。  |  用户定义的 Lambda 函数和 AWS 云系统   | 
|  `LambdaError`  |  产生用户定义的 Lambda 函数写入错误日志的运行次数。  |  用户定义的 Lambda 函数和 AWS 云系统  | 
|  `BytesAppended`  |  附加到流管理器的数据的字节数。  |  `GGStreamManager` 系统组件  | 
|  `BytesUploadedToIoTAnalytics`  |  流管理器导出到其中的频道的数据字节数 AWS IoT Analytics。  |  `GGStreamManager` 系统组件  | 
|  `BytesUploadedToKinesis`  |  流管理器导出到 Amazon Kinesis Data Streams 中流的数据的字节数。  |  `GGStreamManager` 系统组件  | 
|  `BytesUploadedToIoTSiteWise`  |  流管理器导出到中资产属性的数据字节数 AWS IoT SiteWise。  |  `GGStreamManager` 系统组件  | 
|  `BytesUploadedToS3ExportTaskExecutor`  |  流管理器导出到 Amazon S3 中对象的数据的字节数。  |  `GGStreamManager` 系统组件  | 
|  `BytesUploadedToHTTP`  |  流管理器导出到 HTTP 的数据的字节数。  |  `GGStreamManager` 系统组件  | 

## 配置遥测设置
<a name="configure-telemetry-settings"></a>

Greengrass 遥测使用以下设置：
+ 遥测代理每小时汇总一次遥测数据。
+ 遥测代理每 24 小时发布一次遥测消息。

**注意**  
这些设置不可更改。

您可以为 Greengrass 核心设备启用或禁用遥测功能。 AWS IoT Greengrass 将使用[影子](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html)来管理遥测配置。当核心与连接时，您的更改会立即生效 AWS IoT Core。

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

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

### 要求
<a name="configure-telemetry-settings-reqs"></a>

配置遥测设置时适用以下要求：
+ 您必须使用 AWS IoT Greengrass 核心软件 v1.11.0 或更高版本。
**注意**  
如果您运行的是早期版本并且不想使用遥测，您不需要执行任何操作。
+ 在更新遥测设置 APIs 之前，您必须提供 IAM 权限才能更新核心（事物）影子和调用配置。

  以下示例 IAM policy 允许您管理特定核心的影子和运行时配置：

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [        
          {
              "Sid": "AllowManageShadow",
              "Effect": "Allow",
              "Action": [
                  "iot:GetThingShadow",
                  "iot:UpdateThingShadow",
                  "iot:DeleteThingShadow", 
                  "iot:DescribeThing"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:thing/core-name-*"
              ]
          },
          {            
              "Sid": "AllowManageRuntimeConfig",
              "Effect": "Allow",
              "Action": [
                  "greengrass:GetCoreRuntimeConfiguration",
                  "greengrass:UpdateCoreRuntimeConfiguration"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:thing/core-name"
              ]
          }
      ]
  }
  ```

------

  <a name="wildcards-grant-granular-conditional-access"></a>您可以授予对资源的具体或条件访问权限（例如，通过使用通配符 `*` 命名方案）。有关更多信息，请参阅 *IAM 用户指南*中的[添加和删除 IAM policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

### 配置遥测设置（控制台）
<a name="configure-telemetry-settings-console"></a>

以下内容显示了如何在控制台中更新 Greengrass 内核的遥测设置。 AWS IoT Greengrass 

1. **在 AWS IoT 控制台导航窗格的**管理**下，展开 **Greengrass** 设备，然后选择群组 (V1)。**

1. 在 **Greengrass 组**下，选择您的目标组。

1. 在组配置页面的**概述**部分中，选择您的 **Greengrass 核心**。

1. 在核心的配置页面上，选择**遥测**选项卡。

1. 在**系统运行状况遥测**部分中，选择**配置**。

1. 在**配置遥测**中，选择遥测以启用或禁用遥测状态。
**重要**  
默认情况下，C AWS IoT Greengrass ore 软件 v1.11.0 或更高版本的遥测功能处于启用状态。

这些更改在运行时生效。您不需要部署这个组。

### 配置遥测设置 (CLI)
<a name="configure-telemetry-settings-cli"></a>

在 AWS IoT Greengrass API 中，该`TelemetryConfiguration`对象表示 Greengrass 核心的遥测设置。此对象是与核心关联的 `RuntimeConfiguration` 对象的一部分。你可以使用 AWS IoT Greengrass API 或 AWS SDK 来管理 Greengrass 遥测数据。 AWS CLI本节中的示例使用 AWS CLI。

**检查遥测设置**  
以下命令会获取 Greengrass 核心的遥测设置。  
+ *core-thing-name*替换为目标核心的名称。

  要获取事物名称，请使用[get-core-definition-version](https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-core-definition-version.html)命令。该命令返回包含事物名称的事物 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](https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-core-definition-version.html)命令。该命令返回包含事物名称的事物 ARN。

```
aws greengrass update-thing-runtime-configuration --thing-name core-thing-name --telemetry-configuration  '{
    "RuntimeConfiguration": {
        "TelemetryConfiguration": {
            "ConfigurationSyncStatus": "InSync",
            "Telemetry": "Off"
        }
    }
}
```

```
aws greengrass update-thing-runtime-configuration --thing-name core-thing-name --telemetry-configuration "{\"TelemetryConfiguration\":{\"ConfigurationSyncStatus\":\"InSync\",\"Telemetry\":\"Off\"}}"
```
如果 `ConfigurationSyncStatus` 是 `InSync`，则已应用对遥测设置的更改。这些更改在运行时生效。您不需要部署这个组。

#### TelemetryConfiguration 对象
<a name="TelemetryConfiguration-object"></a>

`TelemetryConfiguration` 对象具有以下属性：

`ConfigurationSyncStatus`  
检查遥测设置是否同步。您可能无法更改此属性。  
类型：字符串  
有效值：`InSync` 或 `OutOfSync`

`Telemetry`  
开启或关闭遥测。默认值为 `On`。  
类型：字符串  
有效值：`On` 或 `Off`

## 订阅以接收遥测数据
<a name="subscribe-for-telemetry-data"></a>

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

### 遥测事件
<a name="events-message-format"></a>

部署状态更改的事件（包括遥测数据）采用以下格式：

```
{
    "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`  
[指标](#telemetry-metrics)的名称。  
`Sum`  
聚合的指标值。遥测代理会将新值加到之前的总数上，因此总和是一个不断增大的值。您可以使用时间戳来查找特定聚合的值。例如，要查找最新的聚合值，请从最新时间戳的值中减去上一时间戳的值。  
`U`  
指标值的单位。

`ThingName`  
必需。您的目标事物的名称。

### 创建 EventBridge 规则的先决条件
<a name="create-events-rule-prereqs-telemetry"></a>

在为创建 EventBridge 规则之前 AWS IoT Greengrass，应执行以下操作：
+ 熟悉中的事件、规则和目标。 EventBridge
+ 创建和配置您的 EventBridge 规则调用的[目标](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-targets.html)。规则可以调用多种类型的目标，例如 Amazon Kinesis 流、 AWS Lambda 函数、亚马逊 SNS 主题和亚马逊 SQS 队列。

  您的 EventBridge 规则和关联目标必须位于您创建 Greengrass 资源 AWS 区域 的位置。有关更多信息，请参阅 *AWS 一般参考* 中的[服务端点和配额](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)。

有关更多信息，请参阅[什么是亚马逊 EventBridge？](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) 以及《[亚马逊* EventBridge 用户指南》 EventBridge中的 “亚马逊*入门](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-getting-set-up.html)”。

### 创建事件规则以获取遥测数据（控制台）
<a name="create-telemetry-event-rule-console"></a>

使用以下步骤 AWS 管理控制台 来创建用于接收 Greengrass 核心发布的遥测数据的 EventBridge 规则。这样，Web 服务器、电子邮件地址和其他主题订阅者就可以响应事件。有关更多信息，请参阅 *Amazon EventBridge 用户指南*中的[创建针对来自 AWS 资源的事件触发的 EventBridge 规则](https://docs.aws.amazon.com/eventbridge/latest/userguide/create-eventbridge-rule.html)。

1. 打开 A [mazon EventBridge 控制台](https://console.aws.amazon.com/events/)并选择**创建规则**。

1. 在 **Name and description (名称和描述)** 下，输入规则的名称和描述。

1. 选择**时间总线**，并对选定事件总线启用规则。

1. 选择**规则类型**，并选择**具有事件模式的规则**。

1. 选择**下一步**。

1. 对于**事件来源**，选择**AWS 事件或 EventBridge 合作伙伴事件**。

1. 在**示例事件**中，选择 **AWS 事件**，然后选择 **Greengrass 遥测数据**。

1. 在**事件模式**中，请进行下列选择：

   1. 对于**事件源**，选择**AWS 服务**。

   1. 对于 **AWS 服务**，选择 **Greengrass**。

   1. 在**事件类型**中，选择 **Greengrass 遥测数据**。

1. 选择**下一步**。

1. 对于 **目标**，选择 **AWS 服务**。

1. 在**选择目标**中，选择 **SQS 队列**。

1. 在**队列**中，选择您的函数。

### 创建事件规则以获取遥测数据 (CLI)
<a name="create-telemetry-event-rule-cli"></a>

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

1. 创建 规则。
   + *thing-name*替换为核心的事物名称。

     要获取事物名称，请使用[get-core-definition-version](https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-core-definition-version.html)命令。该命令返回包含事物名称的事物 ARN。

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

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

1. 将主题添加为规则目标。以下示例使用 Amazon SQS，但您也可配置其他目标类型。
   + *queue-arn*替换为您的 Amazon SQS 队列的 ARN。

   ```
   aws events put-targets \
     --rule TestRule \
     --targets "Id"="1","Arn"="queue-arn"
   ```
**注意**  
要允许 Amazon EventBridge 调用您的目标队列，您必须在主题中添加基于资源的策略。有关更多信息，请参阅[亚马逊* EventBridge 用户指南中的亚马*逊 SQS 权限](https://docs.aws.amazon.com/eventbridge/latest/userguide/resource-based-policies-eventbridge.html#sqs-permissions)。

有关更多信息，请参阅 *Amazon EventBridge 用户指南 EventBridge*[中的事件和事件模式](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html)。

## AWS IoT Greengrass 遥测故障排除
<a name="telemetry-troubleshoot"></a>

使用以下信息来帮助解决与配置 AWS IoT Greengrass 遥测有关的问题。

### 错误：运行 get-thing-runtime-configuration命令后，响应包含 ConfigurationStatus OutOfSync “:”
<a name="telemetry-troubleshoot-ConfigurationStatus-OutOfSync"></a>

**解决方案**
+ Device Shadow 服务需要时间来处理运行时配置更新并将更新传送到 Greengrass 核心 AWS IoT 设备。您可以稍等片刻，然后再检查遥测设置是否同步。
+ 确保您的核心设备在线。
+ 启用 [Amazon CloudWatch 登录 AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/cloud-watch-logs.html#viewing-logs)以监控影子。
+ 使用 [AWS IoT 指标](https://docs.aws.amazon.com/iot/latest/developerguide/monitoring-cloudwatch.html)监控事物。