

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

# AWS IoT Greengrass 中的日志记录和监控
<a name="logging-and-monitoring"></a>

监控是保持 AWS IoT Greengrass 和您的 AWS 解决方案的可靠性、可用性和性能的重要方面。您应从 AWS 解决方案的所有部分收集监控数据，以便更轻松地调试出现的多点故障。在开始监控 AWS IoT Greengrass 之前，您应该创建一个监控计划，其中包括以下问题的答案：
+ 监控目的是什么？
+ 您将监控哪些资源？
+ 监控这些资源的频率如何？
+ 您将使用哪些监控工具？
+ 谁负责执行监控任务？
+ 出现错误时应通知谁？

**Topics**
+ [监控工具](#monitoring-tools)
+ [监控 AWS IoT Greengrass 日志](monitor-logs.md)
+ [使用记录 AWS IoT Greengrass V2 API 调用 AWS CloudTrail](logging-using-cloudtrail.md)
+ [从 AWS IoT Greengrass 核心设备收集系统运行状况遥测数据](telemetry.md)
+ [获取部署和组件运行状态通知](deployment-health-notifications.md)
+ [检查 Greengrass 核心设备状态](device-status.md)

## 监控工具
<a name="monitoring-tools"></a>

AWS 为您提供了各种可用于监控 的工具。AWS IoT Greengrass您可以配置其中的一些工具以便进行监控。一些工具需要手动干预。建议您尽可能实现监控任务自动化。

您可以使用以下自动化监控工具来监控 AWS IoT Greengrass 并报告问题：
+ **Amazon CloudWatch Logs** – 监控、存储和访问来自 AWS CloudTrail 或其他来源的日志文件。有关更多信息，请参阅 *Amazon CloudWatch 用户指南*中的[监控日志文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html)。
+ **AWS CloudTrail 日志监控**——在账户间共享日志文件，通过将 CloudTrail 日志文件发送到 CloudWatch Logs 来进行实时监控，用 Java 编写日志处理应用程序，验证 CloudTrail 提供的日志文件未发生更改。有关更多信息，请参阅e *AWS CloudTrail《用户指南》* 中的 [使用 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-working-with-log-files.html)。
+ **Greengrass 系统运行状况遥测** – 订阅后可接收从 Greengrass 核心发送的遥测数据。有关更多信息，请参阅 [从 AWS IoT Greengrass 核心设备收集系统运行状况遥测数据](telemetry.md)。
+ **设备运行状况通知** 使用 Amazon EventBridge 创建事件，接收有关部署和组件的状态更新。有关更多信息，请参阅 [获取部署和组件运行状态通知](deployment-health-notifications.md)。
+ **实例集状态服务** – 使用实例集状态 API 操作来检查核心设备及其 Greengrass 组件的状态。您也可以在 AWS IoT Greengrass 控制台中查看实例集状态信息。有关更多信息，请参阅 [检查 Greengrass 核心设备状态](device-status.md)。

# 监控 AWS IoT Greengrass 日志
<a name="monitor-logs"></a>

AWS IoT Greengrass 由云服务和 AWS IoT Greengrass 核心软件组成。AWS IoT Greengrass Core 软件可将日志写入 Amazon CloudWatch Logs 和核心设备的本地文件系统。在核心设备上运行的 Greengrass 组件也可以将日志写入 CloudWatch Logs 和本地文件系统。您可以使用日志来监控事件和排查问题。所有 AWS IoT Greengrass 日志条目包含时间戳、日志级别和事件相关信息。

默认情况下，AWS IoT Greengrass Core 软件仅将日志写入本地文件系统。您可以实时查看文件系统日志，因此您可以调试自己开发和部署的 Greengrass 组件。您还可以将核心设备配置为将日志写入 CloudWatch Logs，以便您可以在不访问本地文件系统的情况下对核心设备进行故障排除。有关更多信息，请参阅 [支持登录 CloudWatch Logs](#enable-cloudwatch-logs)。

**Topics**
+ [访问文件系统日志](#access-local-logs)
+ [访问 CloudWatch Logs](#access-cloudwatch-logs)
+ [访问系统服务日志](#access-system-service-logs)
+ [支持登录 CloudWatch Logs](#enable-cloudwatch-logs)
+ [为 AWS IoT Greengrass 配置日志记录](#configure-logging)
+ [AWS CloudTrail日志](#cloudtrail-integration)

## 访问文件系统日志
<a name="access-local-logs"></a>

AWS IoT Greengrass Core 软件将日志存储在核心设备上的 `/greengrass/v2/logs` 文件夹中，其中 `/greengrass/v2` 是 AWS IoT Greengrass 根文件夹的路径。日志文件夹具有以下结构：

```
/greengrass/v2
└── logs
    ├── greengrass.log
    ├── greengrass_2021_09_14_15_0.log
    ├── ComponentName.log
    ├── ComponentName_2021_09_14_15_0.log
    └── main.log
```
+ `greengrass.log` – AWS IoT Greengrass Core 软件日志文件。使用此日志文件可查看有关组件和部署的实时信息。此日志文件包含针对 Greengrass Nucleus（AWS IoT Greengrass Core 软件的核心）和插件组件（例如[日志管理器](log-manager-component.md)和[密钥管理器](secret-manager-component.md)）的日志。
+ `ComponentName.log` – Greengrass 组件日志文件。使用组件日志文件可查看有关核心设备上运行的 Greengrass 组件的实时信息。通用组件和 Lambda 组件将标准输出 (stdout) 和标准错误 (stderr) 写入这些日志文件。
+ `main.log` – 用于处理组件生命周期的 `main` 服务的日志文件。此日志文件将始终为空。

有关插件、通用组件和 Lambda 组件之间的差异的更多信息，请参阅[组件类型](develop-greengrass-components.md#component-types)。

在使用文件系统日志时，请注意以下几点：
+ **根用户权限**

  您必须具有根权限才能读取文件系统上的 AWS IoT Greengrass 日志。
+ **日志文件轮换**

  AWS IoT Greengrass Core 软件每小时或在日志文件超过文件大小限制时轮换一次日志文件。轮换日志文件的文件名包含时间戳。例如，轮换的 AWS IoT Greengrass Core 软件日志文件可以命名为 `greengrass_2021_09_14_15_0.log`。默认文件大小限制为 1024KB（1MB）。你可以在 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)上配置文件大小限制。
+ **日志文件删除**

  当 AWS IoT Greengrass Core 软件日志文件或 Greengrass 组件日志文件（包括轮换的日志文件）的大小超过磁盘空间限制时，AWS IoT Greengrass Core 软件会清理较早的日志文件。AWS IoT Greengrass Core 软件日志和每个组件日志的默认磁盘空间限制为 10240KB（10MB）。您可以在 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)或[日志管理器组件](log-manager-component.md)上配置 AWS IoT Greengrass Core 软件日志磁盘空间限制。您可以在[日志管理器组件](log-manager-component.md)上配置每个组件的日志磁盘空间限制。

**查看 AWS IoT Greengrass Core 软件日志文件**
+ 运行以下命令可实时查看日志文件。将 `/greengrass/v2` 替换为 AWS IoT Greengrass 根文件夹路径。

------
#### [ Linux or Unix ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows Command Prompt (CMD) ]

  ```
  type C:\greengrass\v2\logs\com.example.HelloWorld.log
  ```

  <a name="windows-cmd-type-observe-logs"></a>`type` 命令将文件内容写入终端。多次运行此命令，以观察文件中的更改。

------
#### [ PowerShell ]

  ```
  gc C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

**查看组件的日志文件**
+ 运行以下命令可实时查看日志文件。将 `/greengrass/v2` 或 *C:\$1greengrass\$1v2* 替换为 AWS IoT Greengrass 根文件夹的路径，将 *com.example.HelloWorld* 替换为组件的名称。

------
#### [ Linux or Unix ]

  ```
  sudo tail -f /greengrass/v2/logs/com.example.HelloWorld.log
  ```

------
#### [ PowerShell ]

  ```
  gc C:\greengrass\v2\logs\com.example.HelloWorld.log -Tail 10 -Wait
  ```

------

您还可以使用 [Greengrass CLI](greengrass-cli-component.md) 的 `logs` 命令来分析核心设备上的 Greengrass 日志。要使用 `logs` 命令，您必须将 [Greengrass Nucleus](greengrass-nucleus-component.md) 配置为输出 JSON 格式的日志文件。有关更多信息，请参阅[Greengrass 命令行界面](gg-cli.md)和[日志](gg-cli-logs.md)。

## 访问 CloudWatch Logs
<a name="access-cloudwatch-logs"></a>

您可以部署[日志管理器组件](log-manager-component.md)，将核心设备配置为写入 CloudWatch Logs。有关更多信息，请参阅 [支持登录 CloudWatch Logs](#enable-cloudwatch-logs)。然后，您可以在 Amazon CloudWatch 控制台的**日志**页面上或者使用 CloudWatch Logs API 查看日志。<a name="log-manager-log-group-stream-format"></a>

**日志组名称**  

```
/aws/greengrass/componentType/region/componentName
```
日志组名称使用以下变量：  
+ `componentType` – 组件的类型，可以为以下类型之一：
  + `GreengrassSystemComponent` – 此日志组包括针对内核和插件组件的日志，它们与 Greengrass Nucleus 在同一 JVM 中运行。组件是 [Greengrass Nucleus](greengrass-nucleus-component.md) 的一部分。
  + `UserComponent` – 此日志组包括针对设备上通用组件、Lambda 组件和其他应用程序的日志。组件不是 Greengrass Nucleus 的一部分。

  有关更多信息，请参阅 [组件类型](develop-greengrass-components.md#component-types)。
+ `region` – 核心设备使用的 AWS 区域。
+ `componentName` – 组件名称。对于系统日志，此值为 `System`。

**日志流名称**  

```
/date/thing/thingName
```
日志流名称使用以下变量：  
+ `date` – 日志的日期，例如 `2020/12/15`。日志管理器组件使用 `yyyy/MM/dd` 格式。
+ `thingName` – 核心设备名称。
如果事物名称包含冒号 (`:`)，则日志管理器会将冒号替换为加号 (`+`)。

<a name="log-manager-considerations-intro"></a>在使用日志管理器组件写入 CloudWatch Logs 时，请注意以下几点：<a name="log-manager-considerations"></a>
+ **日志延迟**
**注意**  
我们建议您升级到日志管理器版本 2.3.0，该版本可减少轮换日志文件和活动日志文件的日志延迟。当您升级到日志管理器 2.3.0 时，我们建议您还升级到 Greengrass Nucleus 2.9.1。

  日志管理器组件版本 2.2.8（及更早版本）仅处理和上传轮换日志文件中的日志。默认情况下，AWS IoT Greengrass Core 软件每小时或在达到 1024 KB 后轮换一次日志文件。因此，只有在 AWS IoT Greengrass Core 软件或 Greengrass 组件写入超过 1024 KB 的日志后，日志管理器组件才会上传日志。您可以配置更低的日志文件大小限制，从而更频繁地轮换日志文件。这会导致日志管理器组件更频繁地将日志上传到 CloudWatch Logs。

  日志管理器组件版本 2.3.0（及更高版本）会处理并上传所有日志。写入新日志时，日志管理器版本 2.3.0（及更高版本）会处理并直接上传该活动日志文件，而不会等待其轮换。这意味着您可以在 5 分钟或更短时间内查看新日志。

  日志管理器组件会定期上传新日志。默认情况下，日志管理器组件每 5 分钟上传一次新日志。您可以配置更短的上传间隔，通过配置 `periodicUploadIntervalSec`，让日志管理器组件更频繁地将日志上传到 CloudWatch Logs。有关如何配置此周期性间隔的更多信息，请参阅[配置](https://docs.aws.amazon.com/greengrass/v2/developerguide/log-manager-component.html#log-manager-component-configuration)。

  日志可以从同一 Greengrass 文件系统近乎实时地上传。如果您需要实时观察日志，可考虑使用[文件系统日志](#access-local-logs)。
**注意**  
如果您使用不同的文件系统写入日志，日志管理器会恢复到日志管理器组件版本 2.2.8 及更早版本中的行为。有关访问文件系统日志的信息，请参阅[访问文件系统日志](https://docs.aws.amazon.com/greengrass/v2/developerguide/monitor-logs.html#access-local-logs)。
+ **时钟偏差**

  日志管理器组件使用标准签名版本 4 签名流程来创建 CloudWatch Logs 的 API 请求。如果核心设备上系统时间的不同步时长超过 15 分钟，则 CloudWatch Logs 会拒绝请求。有关更多信息，请参阅 *AWS 一般参考* 中的[签名版本 4 签名流程](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。

## 访问系统服务日志
<a name="access-system-service-logs"></a>

如果您[将 AWS IoT Greengrass Core 软件配置为系统服务](configure-greengrass-core-v2.md#configure-system-service)，则可以查看系统服务日志以排查问题，例如软件无法启动。

**查看系统服务日志（CLI）**

1. 运行以下命令可查看 AWS IoT Greengrass Core 软件系统服务文件。

------
#### [ Linux or Unix (systemd) ]

   ```
   sudo journalctl -u greengrass.service
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   type C:\greengrass\v2\logs\greengrass.wrapper.log
   ```

------
#### [ PowerShell ]

   ```
   gc C:\greengrass\v2\logs\greengrass.wrapper.log
   ```

------

1. 在 Windows 设备上，AWS IoT Greengrass Core 软件会为系统服务错误创建单独的日志文件。运行以下命令可查看系统服务错误日志。

------
#### [ Windows Command Prompt (CMD) ]

   ```
   type C:\greengrass\v2\logs\greengrass.err.log
   ```

------
#### [ PowerShell ]

   ```
   gc C:\greengrass\v2\logs\greengrass.err.log
   ```

------

在 Windows 设备上，您还可以使用**事件查看器**应用程序来查看系统服务日志。

**查看 Windows 服务日志（事件查看器）**

1. 打开**事件查看器**应用程序。

1. 选择 **Windows 日志**，将其展开。

1. 选择**应用程序**以查看应用程序服务日志。

1. 查找并打开**来源**为 **greengrass** 的事件日志。

## 支持登录 CloudWatch Logs
<a name="enable-cloudwatch-logs"></a>

您可以部署[日志管理器组件](log-manager-component.md)，将核心设备配置为将日志写入 CloudWatch Logs。您可以为 AWS IoT Greengrass Core 软件日志启用 CloudWatch Logs，也可以为特定 Greengrass 组件启用 CloudWatch Logs。

**注意**  
Greengrass 核心设备的令牌交换角色必须允许核心设备写入 CloudWatch Logs，如以下示例 IAM 策略所示。如果您[使用自动资源预置安装 AWS IoT Greengrass Core 软件](quick-installation.md)，则您的核心设备具有这些权限。  

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:logs:*:*:*"
    }
  ]
}
```

要将核心设备配置为将 AWS IoT Greengrass Core 软件日志写入 CloudWatch Logs，请[创建一个部署](create-deployments.md)，指定配置更新，为 `aws.greengrass.LogManager` 组件将 `uploadToCloudWatch` 设置为 `true`。AWS IoT Greengrass核心软件日志包括针对 [Greengrass Nucleus](greengrass-nucleus-component.md) 和[插件组件](develop-greengrass-components.md#component-types)的日志。

```
{
  "logsUploaderConfiguration": {
    "systemLogsConfiguration": {
      "uploadToCloudWatch": "true"
    }
  }
}
```

要将核心设备配置为将 Greengrass 组件的日志写入 CloudWatch Logs，请[创建一个部署](create-deployments.md)，指定配置更新，将组件添加到组件日志记录配置列表。当您将组件添加到此列表时，日志管理器组件会将其日志写入 CloudWatch Logs。组件日志包括针对[通用组件和 Lambda 组件](develop-greengrass-components.md#component-types)的日志。

```
{
  "logsUploaderConfiguration": {
    "componentLogsConfigurationMap": {
      "com.example.HelloWorld": {
      
      }
    }
  }
}
```

部署日志管理器组件时，您还可以配置磁盘空间限制，以及核心设备在将日志文件写入 CloudWatch Logs 后是否将其删除。有关更多信息，请参阅 [为 AWS IoT Greengrass 配置日志记录](#configure-logging)。

## 为 AWS IoT Greengrass 配置日志记录
<a name="configure-logging"></a>

您可以配置以下选项，为 Greengrass 核心设备自定义日志记录。要配置这些选项，请[创建一个部署](create-deployments.md)，为 Greengrass Nucleus 或日志管理器组件指定配置更新。
+ **将日志写入 CloudWatch Logs**

  要远程对核心设备进行故障排除，您可以将核心设备配置为将 AWS IoT Greengrass Core 软件和组件日志写入 CloudWatch Logs。为此，请部署和配置[日志管理器组件](log-manager-component.md)。有关更多信息，请参阅 [支持登录 CloudWatch Logs](#enable-cloudwatch-logs)。
+ **删除上传的日志文件**

  要减少磁盘空间使用量，您可以将核心设备配置为在将日志文件写入 CloudWatch Logs 后删除日志文件。有关更多信息，请参阅日志管理器组件的 `deleteLogFileAfterCloudUpload` 参数，您可以为 [AWS IoT Greengrass Core 软件日志](log-manager-component.md#log-manager-component-configuration-system-logs-configuration)和[组件日志](log-manager-component.md#log-manager-component-configuration-component-logs-configuration)指定该参数。
+ **日志磁盘空间限制**

  要限制磁盘空间使用量，您可以在核心设备上为每个日志（包括其轮换的日志文件）配置最大磁盘空间。例如，您可以为 `greengrass.log` 和轮换的 `greengrass.log` 文件配置最大组合磁盘空间。有关更多信息，请参阅 Greengrass Nucleus 组件的 `logging.totalLogsSizeKB` 参数和日志管理器组件的 `diskSpaceLimit` 参数，您可以为 [AWS IoT Greengrass Core 软件日志](log-manager-component.md#log-manager-component-configuration-system-logs-configuration)和[组件日志](log-manager-component.md#log-manager-component-configuration-component-logs-configuration)指定这些参数。
+ **日志文件大小限制**

  您可以为每个日志文件配置最大文件大小。日志文件超过此文件大小限制后，AWS IoT Greengrass Core 软件会创建新的日志文件。[日志管理器组件](log-manager-component.md)版本 2.28（及更早版本）仅将轮换的日志文件写入 CloudWatch Logs，因此您可以指定较低的文件大小限制，以便更频繁地将日志写入 CloudWatch Logs。日志管理器组件版本 2.3.0（及更高版本）会处理和上传所有日志，而不是等待轮换。有关更多信息，请参阅 Greengrass Nucleus 组件的[日志文件大小限制参数](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-log-file-size) (`logging.fileSizeKB`)。
+ **最低日志级别**

  您可以配置 Greengrass Nucleus 组件写入文件系统日志的最低日志级别。例如，您可以指定 `DEBUG` 级别日志以帮助进行故障排除，也可以指定 `ERROR` 级别日志以减少核心设备创建的日志量。有关更多信息，请参阅 Greengrass Nucleus 组件的[日志级别参数](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-log-level) (`logging.level`)。

  您还可以配置日志管理器组件写入 CloudWatch Logs 的最低日志级别。例如，您可以指定更高的日志级别以降低[日志记录成本](https://aws.amazon.com/cloudwatch/pricing/)。有关更多信息，请参阅日志管理器组件的 `minimumLogLevel` 参数，您可以为 [AWS IoT Greengrass Core 软件日志](log-manager-component.md#log-manager-component-configuration-system-logs-configuration)和[组件日志](log-manager-component.md#log-manager-component-configuration-component-logs-configuration)指定该参数。
+ **将日志写入 CloudWatch Logs 的间隔**

  要增加或减少日志管理器组件将日志写入 CloudWatch Logs 的频率，您可以配置要写入新日志文件的间隔。例如，您可以指定比默认 5 分钟间隔更短的间隔，以更快地查看 CloudWatch Logs 中的日志。您可以指定更高的间隔以降低成本，因为日志管理器组件会将日志文件批处理成更少的请求。有关更多信息，请参阅日志管理器组件的[上传间隔参数](log-manager-component.md#log-manager-component-configuration-periodic-upload-interval-sec) (`periodicUploadIntervalSec`)。
+ **日志格式**

  您可以选择 AWS IoT Greengrass Core 软件是以文本格式，还是以 JSON 格式写入日志。如果您阅读日志，请选择文本格式；如果您使用应用程序读取或解析日志，则选择 JSON 格式。有关更多信息，请参阅 Greengrass Nucleus 组件的[日志格式参数](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-logging-format) (`logging.format`)。
+ **本地文件系统日志文件夹**

  您可以在核心设备上将日志文件夹从 `/greengrass/v2/logs` 更改为另一个文件夹。有关更多信息，请参阅 Greengrass Nucleus 组件的[输出目录参数](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-log-level) (`logging.outputDirectory`)。

## AWS CloudTrail日志
<a name="cloudtrail-integration"></a>

AWS IoT Greengrass 与 AWS CloudTrail 集成，后者是在 AWS IoT Greengrass 中记录用户、角色或 AWS 服务 服务所执行操作的服务。有关更多信息，请参阅 [使用记录 AWS IoT Greengrass V2 API 调用 AWS CloudTrail](logging-using-cloudtrail.md)。

# 使用记录 AWS IoT Greengrass V2 API 调用 AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

AWS IoT Greengrass V2 与 AWS CloudTrail一项服务集成，该服务提供用户、角色或 AWS 服务在中执行的操作的记录 AWS IoT Greengrass Version 2。 CloudTrail 将所有 API 调用捕获 AWS IoT Greengrass 为事件。捕获的调用包括来自 AWS IoT Greengrass 控制台的调用和对 AWS IoT Greengrass API 操作的代码调用。

如果您创建了跟踪，则可以启用向 S3 存储桶持续传输事件，包括的事件 AWS IoT Greengrass。 CloudTrail 如果您未配置跟踪，您仍然可以在 CloudTrail 控制台的 “事件**历史记录” 中查看最新的事件**。使用收集的信息 CloudTrail，您可以确定向哪个请求发出 AWS IoT Greengrass、发出请求的 IP 地址、谁发出了请求、何时发出请求以及其他详细信息。

有关的更多信息 CloudTrail，请参阅《[AWS CloudTrail 用户指南》](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)。

**Topics**
+ [AWS IoT Greengrass V2 信息在 CloudTrail](#service-name-info-in-cloudtrail)
+ [AWS IoT Greengrass 中的数据事件 CloudTrail](#greengrass-data-events-cloudtrail)
+ [AWS IoT Greengrass 中的管理事件 CloudTrail](#greengrass-management-events-cloudtrail)
+ [了解 AWS IoT Greengrass V2 日志文件条目](#understanding-service-name-entries)

## AWS IoT Greengrass V2 信息在 CloudTrail
<a name="service-name-info-in-cloudtrail"></a>

CloudTrail 在您创建账户 AWS 账户 时已在您的账户上启用。当活动发生在中时 AWS IoT Greengrass，该活动会与其他 AWS 服务 CloudTrail 事件一起记录在**事件历史**记录中。您可以在 AWS 账户中查看、搜索和下载最新事件。有关更多信息，请参阅[使用事件历史记录查看 CloudTrail 事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)。

要持续记录您的 AWS 账户事件（包括的事件） AWS IoT Greengrass，请创建跟踪。*跟踪*允许 CloudTrail 将日志文件传送到 S3 存储桶。默认情况下，当您在控制台中创建跟踪时，该跟踪将应用于所有 AWS 区域跟踪。跟踪记录 AWS 分区中所有区域的事件，并将日志文件传送到您指定的 S3 存储桶。此外，您可以配置其他 AWS 服务，以进一步分析和处理 CloudTrail 日志中收集的事件数据。有关更多信息，请参阅下列内容：
+ [创建跟踪记录概述](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail 支持的服务和集成](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html)
+ [配置 Amazon SNS 通知 CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/configure-sns-notifications-for-cloudtrail.html)
+ [接收来自多个区域的 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html)和[接收来自多个账户的 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

所有 AWS IoT Greengrass V2 操作均由《API 参考》记录 CloudTrail 并记录在《[AWS IoT Greengrass V2 API 参考](https://docs.aws.amazon.com/greengrass/v2/APIReference/Welcome.html)》中。例如，调用`CreateDeployment`和`CancelDeployment`操作会在 CloudTrail 日志文件中生成条目。`CreateComponentVersion`

每个事件或日志条目都包含有关生成请求的人员信息。身份信息有助于您确定以下内容：
+ 请求是使用根证书还是 AWS Identity and Access Management (IAM) 用户凭证发出。
+ 请求是使用角色还是联合用户的临时安全凭证发出的。
+ 请求是否由其他 AWS 服务发出。

有关更多信息，请参阅 [CloudTrail userIdentity 元素](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)。

## AWS IoT Greengrass 中的数据事件 CloudTrail
<a name="greengrass-data-events-cloudtrail"></a>

[数据事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events)提供有关对资源或在资源中执行的资源操作（例如，获取组件版本或部署配置）的信息。这些也称为数据面板操作。数据事件通常是高容量活动。默认情况下， CloudTrail 不记录数据事件。 CloudTrail **事件历史**记录不记录数据事件。

记录数据事件将收取额外费用。有关 CloudTrail 定价的更多信息，请参阅[AWS CloudTrail 定价](https://aws.amazon.com/cloudtrail/pricing/)。

您可以使用 CloudTrail 控制台或 CloudTrail API 操作记录 AWS IoT Greengrass 资源类型的数据事件。 AWS CLI本节中的[表格](#data-events-table)显示了可用的资源类型 AWS IoT Greengrass。
+ 要使用 CloudTrail 控制台记录数据事件，请创建[跟踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-a-trail-using-the-console-first-time.html#creating-a-trail-in-the-console)或[事件数据存储](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/query-event-data-store-cloudtrail.html)以记录数据事件，或者[更新现有的跟踪或事件数据存储](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events-console)以记录数据事件。

  1. 选择**数据事件**来记录数据事件。

  1. 在**数据事件类型**列表中，选择要对其记录数据事件的资源类型。

  1. 选择要使用的记录选择器模板。可以记录资源类型的所有数据事件、记录所有 `readOnly` 事件、记录所有 `writeOnly` 事件，或者创建自定义记录选择器模板来根据 `readOnly`、`eventName` 和 `resources.ARN` 字段进行筛选。
+ 要使用记录数据事件 AWS CLI，请将`--advanced-event-selectors`参数配置为将`eventCategory`字段设置为等于`Data`并将该`resources.type`字段设置为资源类型值（参见[表](#data-events-table)）。可以添加条件来根据 `readOnly`、`eventName` 和 `resources.ARN` 字段的值进行筛选。
  + 要将跟踪配置为记录数据事件，请运行 [https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/put-event-selectors.html](https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/put-event-selectors.html) 命令。有关更多信息，请参阅[使用 AWS CLI记录跟踪的数据事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events-CLI-trail-examples)。
  + 要将事件数据存储配置为记录数据事件，请运行 [https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/create-event-data-store.html](https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/create-event-data-store.html) 命令以创建新的事件数据存储来记录数据事件，或者运行 [https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/update-event-data-store.html](https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/update-event-data-store.html) 命令来更新现有的事件数据存储。有关更多信息，请参阅[使用 AWS CLI记录事件数据存储的数据事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events-CLI-eds-examples)。

下表列出了 AWS IoT Greengrass 资源类型。**数据事件类型（控制台）**列显示要从控制 CloudTrail 台上的**数据事件类型**列表中选择的值。res **ources.type 值**列显示该`resources.type`值，您将在使用或配置高级事件选择器时指定该值。 AWS CLI CloudTrail APIs“** APIs 记录到的数据 CloudTrail**” 列显示了 CloudTrail针对该资源类型记录的 API 调用。


| 数据事件类型（控制台） | resources.type 值 | 数据 APIs 已记录到 CloudTrail | 
| --- | --- | --- | 
| IoT 证书 | AWS::IoT::Certificate |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/logging-using-cloudtrail.html)  | 
| IoT Greengrass 组件版本 |  AWS::GreengrassV2::ComponentVersion  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/logging-using-cloudtrail.html)  | 
| IoT Greengrass 部署 |  AWS::GreengrassV2::Deployment  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/logging-using-cloudtrail.html)  | 
| IoT 事物 | AWS::IoT::Thing |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/greengrass/v2/developerguide/logging-using-cloudtrail.html)  | 

您可以将高级事件选择器配置为在 `eventName`、`readOnly` 和 `resources.ARN` 字段上进行筛选，从而仅记录那些对您很重要的事件。

添加筛选器`eventName`以包含或排除特定数据 APIs。

有关这些字段的更多信息，请参阅[https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html)。

以下示例演示如何使用 AWS CLI来配置高级选择器。将 *TrailName* 和 *region* 替换为您自己的信息。

**Example – 记录 IoT 事物的数据事件**  

```
aws cloudtrail put-event-selectors --trail-name TrailName --region region \
--advanced-event-selectors \
‘[
    {
            “Name”: “Log all thing data events”,
            “FieldSelectors”: [
                { “Field”: “eventCategory”, “Equals”: [“Data”] },
                { “Field”: “resources.type”, “Equals”: [“AWS::IoT::Thing”] }
            ]
        }
]’
```

**Example – 筛选特定 IoT 事物 API**  

```
aws cloudtrail put-event-selectors --trail-name TrailName --region region \
--advanced-event-selectors \
‘[
    {
            “Name”: “Log IoT Greengrass PutCertificateAuthorities API calls”,
            “FieldSelectors”: [
                { “Field”: “eventCategory”, “Equals”: [“Data”] },
                { “Field”: “resources.type”, “Equals”: [“AWS::IoT::Thing”] },
                { “Field”: “eventName”, “Equals”: [“PutCertificateAuthorities”] }
            ]
    }
]’
```

**Example – 记录所有 Greengrass 数据事件**  

```
aws cloudtrail put-event-selectors --trail-name TrailName --region region \
--advanced-event-selectors \
‘[
    {
        “Name”: “Log all certificate data events”,
        “FieldSelectors”: [
            {
                “Field”: “eventCategory”,
                “Equals”: [
                    “Data”
                ]
            },
            {
                “Field”: “resources.type”,
                “Equals”: [
                    “AWS::IoT::Certificate”
                ]
            }
        ]
    },
    {
        “Name”: “Log all component version data events”,
        “FieldSelectors”: [
            {
                “Field”: “eventCategory”,
                “Equals”: [
                    “Data”
                ]
            },
            {
                “Field”: “resources.type”,
                “Equals”: [
                    “AWS::GreengrassV2::ComponentVersion”
                ]
            }
        ]
    },
    {
        “Name”: “Log all deployment version”,
        “FieldSelectors”: [
            {
                “Field”: “eventCategory”,
                “Equals”: [
                    “Data”
                ]
            },
            {
                “Field”: “resources.type”,
                “Equals”: [
                    “AWS::GreengrassV2::Deployment”
                ]
            }
        ]
    },
    {
        “Name”: “Log all thing data events”,
        “FieldSelectors”: [
            {
                “Field”: “eventCategory”,
                “Equals”: [
                    “Data”
                ]
            },
            {
                “Field”: “resources.type”,
                “Equals”: [
                    “AWS::IoT::Thing”
                ]
            }
        ]
    }
]’
```

## AWS IoT Greengrass 中的管理事件 CloudTrail
<a name="greengrass-management-events-cloudtrail"></a>

[管理事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html#logging-management-events)提供有关对您 AWS 账户中的资源执行的管理操作的信息。这些也称为控制面板操作。默认情况下， CloudTrail 记录管理事件。

AWS IoT Greengrass 将所有 AWS IoT Greengrass 控制平面操作记录为管理事件。有关 AWS IoT Greengrass 登录到的 AWS IoT Greengrass 控制平面操作的列表 CloudTrail，请参阅 [AWS IoT Greengrass API 参考版本 2](https://docs.aws.amazon.com/greengrass/v2/APIReference/Welcome.html)。

## 了解 AWS IoT Greengrass V2 日志文件条目
<a name="understanding-service-name-entries"></a>

跟踪是一种配置，允许将事件作为日志文件传输到您指定的 S3 存储桶。 CloudTrail 日志文件包含一个或多个日志条目。事件表示来自任何源的单个请求。它包括有关请求的操作、操作的日期和时间、请求参数等的信息。 CloudTrail 日志文件不是公共 API 调用的有序堆栈跟踪，因此它们不会按任何特定的顺序出现。

以下示例显示了演示该`CreateDeployment`操作的 CloudTrail 日志条目。

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE",
        "arn": "arn:aws:iam::123456789012:user/Administrator",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "userName": "Administrator"
    },
    "eventTime": "2021-01-06T02:38:05Z",
    "eventSource": "greengrass.amazonaws.com",
    "eventName": "CreateDeployment",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "203.0.113.0",
    "userAgent": "aws-cli/2.1.9 Python/3.7.9 Windows/10 exe/AMD64 prompt/off command/greengrassv2.create-deployment",
    "requestParameters": {
        "deploymentPolicies": {
            "failureHandlingPolicy": "DO_NOTHING",
            "componentUpdatePolicy": {
                "timeoutInSeconds": 60,
                "action": "NOTIFY_COMPONENTS"
            },
            "configurationValidationPolicy": {
                "timeoutInSeconds": 60
            }
        },
        "deploymentName": "Deployment for MyGreengrassCoreGroup",
        "components": {
            "aws.greengrass.Cli": {
                "componentVersion": "2.0.3"
            }
        },
        "iotJobConfiguration": {},
        "targetArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/MyGreengrassCoreGroup"
    },
    "responseElements": {
        "iotJobArn": "arn:aws:iot:us-west-2:123456789012:job/fdfeba1d-ac6d-44ef-ab28-54f684ea578d",
        "iotJobId": "fdfeba1d-ac6d-44ef-ab28-54f684ea578d",
        "deploymentId": "4196dddc-0a21-4c54-a985-66a525f6946e"
    },
    "requestID": "311b9529-4aad-42ac-8408-c06c6fec79a9",
    "eventID": "c0f3aa2c-af22-48c1-8161-bad4a2ab1841",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "eventCategory": "Management",
    "recipientAccountId": "123456789012"
}
```

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

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

您可以使用以下方法从 Greengrass 核心设备收集遥测数据：
+ **内核遥测发射器组件** – Greengrass 核心设备上的[核心遥测发射器组件](nucleus-emitter-component.md) (`aws.greengrass.telemetry.NucleusEmitter`) 默认向 `$local/greengrass/telemetry` 主题发布遥测数据。即使您的设备与云的连接有限，您也可以使用发布到本主题的数据，在核心设备上进行本地操作。或者，您也可以将组件配置为将遥测数据发布到您选择的 M AWS IoT Core QTT 主题。

  您必须将核心发射器组件部署到核心设备才能发布遥测数据。向本地主题发布遥测数据不会产生任何费用。但是，使用 MQTT 主题向发布数据 AWS 云 需视[AWS IoT Core 定价](https://aws.amazon.com/iot-core/pricing/)而定。

  <a name="greengrass-software-catalog-influxdb-telemetry-publisher"></a>AWS IoT Greengrass 提供了多个[社区组件](greengrass-software-catalog.md)，可帮助您使用 InfluxDB 和 Grafana 在核心设备上本地分析和可视化遥测数据。这些组件使用来自 Nucleus 发射器组件的遥测数据。有关更多信息，请参阅 [InfluxDB](https://github.com/awslabs/aws-greengrass-labs-telemetry-influxdbpublisher) 发布者组件的自述文件。
+ **遥测代理** — Greengrass 核心设备上的遥测代理收集本地遥测数据并将其发布到亚马逊，无需任何客户互动。 EventBridge 核心设备会尽最大努力向其 EventBridge 发布遥测数据。例如，核心设备在离线时可能无法传输遥测数据。

  所有 Greengrass 核心设备默认启用遥测代理功能。设置 Greengrass 核心设备后，您就会自动开始接收数据。除了数据链路费用外，从核心设备传输到的数据 AWS IoT Core 也是免费的。这是因为代理向 AWS 保留主题发布内容。但是，根据您的使用场景，您在接收或处理数据时可能会产生费用。
**注意**  
Amazon EventBridge 是一项事件总线服务，可用于将应用程序与来自各种来源（例如 Greengrass 核心设备）的数据连接起来。有关更多信息，请参阅[什么是亚马逊 EventBridge？](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) 在《*亚马逊 EventBridge 用户指南》*中。

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

本部分介绍如何配置和使用遥测座席。有关配置核心遥测发射器组件的信息，请参阅[Nucleus 遥测发射器](nucleus-emitter-component.md)。

**Topics**
+ [遥测指标](#telemetry-metrics)
+ [配置遥测座席设置](#configure-telemetry-agent-settings)
+ [订阅遥测数据 EventBridge](#subscribe-for-telemetry-data)

## 遥测指标
<a name="telemetry-metrics"></a>

下表描述了遥测座席发布的指标。


| Name | 说明 | 
| --- | --- | 
|  **系统**  | 
|  `SystemMemUsage`  |  Greengrass 核心设备上所有应用程序（包括操作系统）当前使用的内存量。  | 
|  `CpuUsage`  |  Greengrass 核心设备上所有应用程序（包括操作系统）当前使用的 CPU 量。  | 
|  `TotalNumberOfFDs`  |  Greengrass 核心设备操作系统存储的文件描述符的数量。一个文件描述符可以唯一地标识一个打开的文件。  | 
|  **Greengrass Nucleus**  | 
|  `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`  |  客户端设备身份验证中未处理的内部错误数量。  | 
|  **流管理器** – 此功能需要 v2.7.0 或更高版本的 Greengrass Nucleus 组件。  | 
|  `BytesAppended`  |  附加到流管理器的数据的字节数。  | 
|  `BytesUploadedToIoTAnalytics`  |  流管理器导出到其中的频道的数据字节数 AWS IoT Analytics。  | 
|  `BytesUploadedToKinesis`  |  流管理器导出到 Amazon Kinesis Data Streams 中流的数据的字节数。  | 
|  `BytesUploadedToIoTSiteWise`  |  流管理器导出到中资产属性的数据字节数 AWS IoT SiteWise。  | 
|  `BytesUploadedToS3`  |  流管理器导出到 Amazon S3 中对象的数据的字节数。  | 
|  **系统指标**：此功能需要 v2.15.0 或更高版本的 Greengrass Nucleus 组件。  | 
|  `CPUArchitecture`  |  设备中央处理器架构。  | 
|  `Family`  |  设备操作系统系列（仅限 Windows）。  | 
|  `KernelVersion`  |  设备内核版本（仅限 Unix）。  | 
|  `KnowledgeBaseArticles`  |  设备上安装的知识库文章（仅限 Windows）。  | 
|  `OSBuildMajor`  |  操作系统版本的主要内部版本号（仅限 Windows）。  | 
|  `OSBuildMinor`  |  操作系统版本的次要内部版本号（仅限 Windows）。  | 
|  `OSName`  |  设备操作系统名称。  | 
|  `OSVersion`  |  设备上操作系统的上市版本。  | 

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

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

遥测座席将使用服务质量（QoS）级别为 0 的 MQTT 协议来发布数据，这意味着它不会确认交付或重试发布尝试。遥测消息与其他发往 AWS IoT Core的订阅消息共享 MQTT 连接。

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

您可以为每台 Greengrass 核心设备启用或禁用遥测座席功能。您还可以配置核心设备聚合和发布数据的间隔。要配置遥测，请在部署 [Greengrass Nucleus 组件](greengrass-nucleus-component.md)时自定义[遥测配置参数](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-telemetry)。

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

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

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

遥测事件使用以下格式。

```
{
  "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"
          }
        ]
      }
      {
        "TS": 1750104449426,
        "NS": "SystemMetrics",
        "M": [
          {
            "N": "KernelVersion",
            "Sum": 1,
            "U": "6.1.140-154.222.amzn2023.x86_64"
          },
          {
            "N": "OSVersion",
            "Sum": 1,
            "U": "2023.7.20250609"
          },
          {
            "N": "OSName",
            "Sum": 1,
            "U": "Amazon Linux"
          },
          {
            "N": "CPUArchitecture",
            "Sum": 1,
            "U": "Broadwell (Server)"
          },
        ]
      }
    ]
  }
}
```<a name="telemetry-agent-adp-array-config"></a>

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

`TS`  
表示数据在何时收集的时间戳。

`NS`  
指标命名空间。

`M`  
指标列表。一个指标包含以下属性：    
`N`  
指标的名称。  
`Sum`  
此遥测事件中指标值的总计。  
`U`  
指标值的单位。

有关每个指标的更多信息，请参阅[遥测指标](#telemetry-metrics)。

### 创建 EventBridge 规则的先决条件
<a name="create-events-rule-prerequisites-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. 在 **Define pattern (定义模式)** 下，配置规则模式。

   1. 选择 **Event pattern (事件模式)**。

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

   1. 对于 **Service provider (服务提供商)**，选择 **AWS**。

   1. 对于 **Service name (服务名称)**，选择 **Greengrass**。

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

1. 在 **Select event bus (选择事件总线)** 下，保留默认事件总线选项。

1. 在 **Select targets (选择目标)** 下，配置您的目标。以下示例使用 Amazon SQS，但您也可配置其它目标类型。

   1. 对于**目标**，选择 **SQS 队列**。

   1. 对于**队列\$1**，选择目标队列。

1. 在 **Tags - optional (标签 - 可选)** 下，定义规则的标签或将字段留空。

1. 选择**创建**。

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

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

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

------
#### [ 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\"]}}"
   ```

------

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

1. 将主题添加为规则目标。以下示例使用 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 用户指南》中的 Ama* zon 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)。

# 获取部署和组件运行状态通知
<a name="deployment-health-notifications"></a>

亚马逊 EventBridge 事件规则向您提供有关您的设备收到的 Greengrass 部署以及设备上已安装组件的状态变更的通知。 EventBridge 提供描述 AWS 资源变化的近乎实时的系统事件流。 AWS IoT Greengrass *尽最大努力*将 EventBridge 这些事件发送到。这意味着， AWS IoT Greengrass 尝试将所有事件发送到， EventBridge 但在极少数情况下，事件可能无法传送。此外， AWS IoT Greengrass 可能会发送给定事件的多个副本，这意味着您的事件侦听器可能不会按照事件发生的顺序接收事件。

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

**Topics**
+ [部署状态更改事件](#deployment.events-message-format)
+ [组件状态更改事件](#component.events-message-format)
+ [创建 EventBridge 规则的先决条件](#create-events-rule-prereqs)
+ [配置设备运行状况通知（控制台）](#create-events-rule-console)
+ [配置设备运行状况通知（CLI）](#create-events-rule-cli)
+ [配置设备运行状况通知（CloudFormation）](#create-events-rule-cloudformation)
+ [另请参阅](#deployment-notifications-see-also)

## 部署状态更改事件
<a name="deployment.events-message-format"></a>

AWS IoT Greengrass 当部署进入以下状态时会发出一个事件：`FAILED`、`SUCCEEDED`、`COMPLETED``REJECTED`、和。`CANCELED`您可以创建一条 EventBridge 规则，该规则适用于所有状态转换或向指定状态的过渡。当部署进入启动规则的状态时， EventBridge 调用规则中定义的目标操作。这样，您就可以发送通知、捕获事件信息、采取纠正措施或启动其他事件以响应状态更改。例如，您可以为以下使用案例创建规则：
+ 启动部署后操作，例如下载资产和通知人员。
+ 在部署成功或失败时发送通知。
+ 发布关于部署事件的自定义指标。

部署状态更改的[事件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html)采用以下格式：

```
{
    "version":"0",
    "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8",
    "detail-type":"Greengrass V2 Effective Deployment Status Change",
    "source":"aws.greengrass",
    "account":"123456789012",
    "region":"us-west-2",
    "time":"2018-03-22T00:38:11Z",
    "resources":["arn:aws:greengrass:us-east-1:123456789012:coreDevices:MyGreengrassCore"],
    "detail":{    
        "deploymentId": "4f38f1a7-3dd0-42a1-af48-EXAMPLE09681",
        "coreDeviceExecutionStatus": "FAILED|SUCCEEDED|COMPLETED|REJECTED|CANCELED",
        "statusDetails": {
          "errorStack": ["DEPLOYMENT_FAILURE", "ARTIFACT_DOWNLOAD_ERROR", "S3_ERROR", "S3_ACCESS_DENIED", "S3_HEAD_OBJECT_ACCESS_DENIED"],
          "errorTypes": ["DEPENDENCY_ERROR", "PERMISSION_ERROR"],
        },
        "reason": "S3_HEAD_OBJECT_ACCESS_DENIED: FAILED_NO_STATE_CHANGE: Failed to download artifact name: 's3://pentest27/nucleus/281/aws.greengrass.nucleus.zip' for component aws.greengrass.Nucleus-2.8.1, reason: S3 HeadObject returns 403 Access Denied. Ensure the IAM role associated with the core device has a policy granting s3:GetObject. null (Service: S3, Status Code: 403, Request ID: HR94ZNT2161DAR58, Extended Request ID: wTX4DDI+qigQt3uzwl9rlnQiYlBgwvPm/KJFWeFAn9t1mnGXTms/luLCYANgq08RIH+x2H+hEKc=)"
     }
}
```

您可以创建规则和事件，以更新您的部署状态。当部署以 `FAILED`、`SUCCEEDED`、`COMPLETED`、`REJECTED` 或 `CANCELED` 状态完成时，会启动事件。如果在核心设备上部署失败，您将收到详细的回复，其中解释了部署失败的原因。有关部署错误代码的更多信息，请参阅[详细的部署错误代码](troubleshooting-deployment.md)。

**部署状态**  
+ `FAILED`. 部署失败。
+ `SUCCEEDED`。以事物组为目标的部署成功完成。
+ `COMPLETED`。以事物为目标的部署成功完成。
+ `REJECTED`。部署被拒绝。有关更多信息，请参阅 `statusDetails` 字段。
+ `CANCELED`。用户取消了部署。

可能是事件重复或者顺序颠倒。要确定事件的顺序，请使用 `time` 属性。

有关 `errorStacks` 和 `errorTypes` 中错误代码的完整列表，请参阅[详细的部署错误代码](troubleshooting-deployment.md)和[详细的组件状态代码](troubleshooting-component.md)。

## 组件状态更改事件
<a name="component.events-message-format"></a>

对于 2.12.2 及更早 AWS IoT Greengrass 版本，当组件进入以下状态时，Greengrass 会发出一个事件：和。`ERRORED` `BROKEN`对于 Greengrass Nucleus 版本 2.12.3 及更高版本，当组件进入以下状态时，Greengrass 会发出事件：`ERRORED`、`BROKEN`、`RUNNING` 和 `FINISHED`。在部署完成后，Greengrass 还会发出事件。您可以创建一条 EventBridge 规则，该规则适用于所有状态转换或向指定状态的过渡。当已安装的组件进入启动规则的状态时，将 EventBridge 调用规则中定义的目标操作。这样，您就可以发送通知、捕获事件信息、采取纠正措施或启动其他事件以响应状态更改。

针对组件状态更改的[事件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html)采用以下格式：

------
#### [ Greengrass nucleus v2.12.2 and earlier ]

组件状态：`ERRORED` 或 `BROKEN`  

```
{
    "version":"0",
    "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8",
    "detail-type":"Greengrass V2 Installed Component Status Change",
    "source":"aws.greengrass",
    "account":"123456789012",
    "region":"us-west-2",
    "time":"2018-03-22T00:38:11Z",
    "resources":["arn:aws:greengrass:us-east-1:123456789012:coreDevices:MyGreengrassCore"],
    "detail": {
       "components": [
          {
            "componentName": "MyComponent",
            "componentVersion": "1.0.0",
            "root": true,
            "lifecycleState": "ERRORED|BROKEN",
            "lifecycleStatusCodes": ["STARTUP_ERROR"],
            "lifecycleStateDetails": "An error occurred during startup. The startup script exited with code 1."
          }
        ]
    }
}
```

------
#### [ Greengrass nucleus v2.12.3 and later ]

组件状态：`ERRORED` 或 `BROKEN`  

```
{
    "version":"0",
    "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8",
    "detail-type":"Greengrass V2 Installed Component Status Change",
    "source":"aws.greengrass",
    "account":"123456789012",
    "region":"us-west-2",
    "time":"2018-03-22T00:38:11Z",
    "resources":["arn:aws:greengrass:us-east-1:123456789012:coreDevices:MyGreengrassCore"],
    "detail": {
       "components": [
          {
            "componentName": "MyComponent",
            "componentVersion": "1.0.0",
            "root": true,
            "lifecycleState": "ERRORED|BROKEN",
            "lifecycleStatusCodes": ["STARTUP_ERROR"],
            "lifecycleStateDetails": "An error occurred during startup. The startup script exited with code 1."
          }
        ]
    }
}
```

组件状态：`RUNNING` 或 `FINISHED`  

```
{
    "version":"0",
    "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8",
    "detail-type":"Greengrass V2 Installed Component Status Change",
    "source":"aws.greengrass",
    "account":"123456789012",
    "region":"us-west-2",
    "time":"2018-03-22T00:38:11Z",
    "resources":["arn:aws:greengrass:us-east-1:123456789012:coreDevices:MyGreengrassCore"],
    "detail": {
       "components": [
          {
            "componentName": "MyComponent",
            "componentVersion": "1.0.0",
            "root": true,
            "lifecycleState": "RUNNING|FINISHED",
            "lifecycleStateDetails": null
          }
        ]
    }
}
```

------

您可以创建规则和事件，以更新已安装组件的状态。当组件在设备上改变状态时，就会启动事件。您将收到详细的回复，其中解释了组件出错或损坏的原因。您还将收到一个指示失败原因的状态码。有关组件状态代码的更多信息，请参阅[详细的组件状态代码](troubleshooting-component.md)。

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

在为创建 EventBridge 规则之前 AWS IoT Greengrass，请执行以下操作：
+ 熟悉中的事件、规则和目标。 EventBridge
+ 创建和配置您的 EventBridge 规则调用的目标。规则可以调用许多类型的目标，包括：
  + Amazon Simple Notification Service (Amazon SNS)
  + AWS Lambda 函数
  + Amazon Kinesis Video Streams
  + Amazon Simple Queue Service（Amazon SQS）队列

有关更多信息，请参阅[什么是亚马逊 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-events-rule-console"></a>

使用以下步骤创建 EventBridge 规则，以便在群组的部署状态发生变化时发布 Amazon SNS 主题。这样，Web 服务器、电子邮件地址和其他主题订阅者就可以响应事件。有关更多信息，请参阅 *Amazon EventBridge 用户指南*中的[创建针对来自 AWS 资源的事件触发的 EventBridge 规则](https://docs.aws.amazon.com/eventbridge/latest/userguide/create-eventbridge-rule.html)。

1. 打开 [Amazon EventBridge 控制台](https://console.aws.amazon.com/events/)。

1. 在导航窗格中，选择**规则**。

1. 选择**创建规则**。

1. 为规则输入名称和描述。

   规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。

1. 对于**事件总线**，请选择要与此规则关联的事件总线。如果您希望此规则对来自您自己的账户的匹配事件触发，请选择 **AWS 默认事件总线**。当你账户中的某项 AWS 服务发出事件时，它总是会进入你账户的默认事件总线。

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

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

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

1. 在**事件模式**中，选择 **AWS 服务**。

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

1. 对于**事件类型**，您可以从下面选择：
   + 对于部署事件，请选择 **Greengrass V2 有效部署状态更改**。
   + 对于组件事件，请选择 **Greengrass V2 已安装组件状态更改**。

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

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

1. 在 **选择目标** 下，配置您的目标。此示例使用了 Amazon SNS 主题，而您可以配置其他目标类型来发送通知。

   1. 对于 **Target (目标)**，选择 **SNS topic (SNS 主题)**。

   1. 对于 **Topic (主题)**，请选择您的目标主题。

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

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

1. 查看规则详细信息并选择**创建规则**。

## 配置设备运行状况通知（CLI）
<a name="create-events-rule-cli"></a>

使用以下步骤创建在发生 Greengrass 状态更改事件时发布 Amazon SNS 主题的 EventBridge 规则。这样，Web 服务器、电子邮件地址和其他主题订阅者就可以响应事件。

1. 创建 规则。
   + 适用于部署状态更改事件。

     ```
     aws events put-rule \
       --name TestRule \
       --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail-type\": [\"Greengrass V2 Effective Deployment Status Change\"]}"
     ```
   + 适用于组件状态更改事件。

     ```
     aws events put-rule \
       --name TestRule \
       --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail-type\": [\"Greengrass V2 Installed Component Status Change\"]}"
     ```

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

1. 将主题添加为规则目标。
   + *topic-arn*替换为您的 Amazon SNS 主题的 ARN。

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

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

## 配置设备运行状况通知（CloudFormation）
<a name="create-events-rule-cloudformation"></a>

使用 CloudFormation 模板创建 EventBridge 规则，发送有关 Greengrass 群组部署状态变更的通知。有关更多信息，请参阅*AWS CloudFormation 用户指南*中的 [Amazon EventBridge 资源类型参考](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Events.html)。

## 另请参阅
<a name="deployment-notifications-see-also"></a>
+ [检查设备部署状态](check-deployment-status.md#check-device-deployment-status)
+ [什么是亚马逊 EventBridge？](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) 在 *Amazon EventBridge 用户指南*中

# 检查 Greengrass 核心设备状态
<a name="device-status"></a>

Greengrass 核心设备向其报告其软件组件的状态。 AWS IoT Greengrass您可以检查每台设备的运行状况摘要，也可以检查每台设备上每个组件的状态。

核心设备的运行状况状态如下：
+ `HEALTHY`— AWS IoT Greengrass 核心软件和所有组件在核心设备上正常运行。
+ `UNHEALTHY`— AWS IoT Greengrass 核心设备上的核心软件或组件处于错误状态。

**注意**  
AWS IoT Greengrass 依靠各个设备向发送状态更新 AWS 云。如果 AWS IoT Greengrass Core 软件未在设备上运行，或者如果设备未连接到 AWS 云，则该设备报告的状态可能无法反映其当前状态。状态时间戳表示上次更新设备状态的时间。  
核心设备在以下时间发送状态更新：  
 AWS IoT Greengrass 核心软件何时启动
当核心设备收到来自的部署时 AWS 云
对于 Greengrass Nucleus 2.12.2 及更早版本，当核心设备上任何组件的状态变为 `ERRORED` 或 `BROKEN` 时，核心设备会发送状态更新
对于 Greengrass Nucleus 2.12.3 及更高版本，当核心设备上任何组件的状态变为 `ERRORED`、`BROKEN`、`RUNNING` 或 `FINISHED` 时，核心设备会发送状态更新
按[您可以配置的固定间隔](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-fss)，默认为 24 小时
对于 C AWS IoT Greengrass ore v2.7.0 及更高版本，当进行本地部署和云部署时，核心设备会发送状态更新

**Topics**
+ [检查核心设备的运行状况](#check-core-device-health-status)
+ [检查核心设备组的运行状况](#check-core-device-group-health-status)
+ [检查核心设备组件状态](#check-core-device-component-status)

## 检查核心设备的运行状况
<a name="check-core-device-health-status"></a>

您可以检查单个核心设备的状态。

**检查核心设备（AWS CLI）的状态**
+ 运行以下命令以检索设备的状态。将 *coreDeviceName* 替换为要查询的核心设备的名称。

  ```
  aws greengrassv2 get-core-device --core-device-thing-name coreDeviceName
  ```

  响应包含有关核心设备的信息，包括其状态。

## 检查核心设备组的运行状况
<a name="check-core-device-group-health-status"></a>

您可以检查一组核心设备（事物组）的状态。

**检查一组设备（AWS CLI）的状态**
+ 运行以下命令以检索多台核心设备的状态。将命令中的 ARN 替换为要查询的事物组的 ARN。

  ```
  aws greengrassv2 list-core-devices --thing-group-arn "arn:aws:iot:region:account-id:thinggroup/thingGroupName"
  ```

  响应包含事物组中的核心设备列表。列表中的每个条目都包含核心设备的状态。

## 检查核心设备组件状态
<a name="check-core-device-component-status"></a>

您可以检查核心设备上软件组件的状态，例如生命周期状态。有关组件生命周期状态的更多信息，请参阅 [开发 AWS IoT Greengrass 组件](develop-greengrass-components.md)。

**检查核心设备（AWS CLI）上组件的状态**
+ 运行以下命令以检索核心设备上组件的状态。将 *coreDeviceName* 替换为要查询的核心设备的名称。

  ```
  aws greengrassv2 list-installed-components --core-device-thing-name coreDeviceName
  ```

  响应包含在核心设备上运行的组件列表。列表中的每个条目都包含组件的生命周期状态，包括数据状态的最新程度以及 Greengrass 核心设备上次向云端发送包含特定组件的消息的时间。响应还将包括将该组件引入 Greengrass 核心设备的最新部署来源。
**注意**  
此命令检索 Greengrass 核心设备所运行的组件的分页列表。默认情况下，此列表不包括作为其他组件的依赖关系部署的组件。您可以通过将 `topologyFilter` 参数设置为 `ALL`，在响应中包含依赖关系。