

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

# 监控 AWS IoT
<a name="monitoring_overview"></a>

监控是维护 AWS 解决方案的可靠性、可用性和性能的重要组成部分。 AWS IoT 

我们强烈建议您从 AWS 解决方案的各个部分收集监控数据，以便在出现多点故障时更轻松地进行调试。首先创建一个监控计划来回答以下问题。如果您不确定如何回答这些问题，您仍然可以继续[启用日志记录](configure-logging.md)并建立性能基准。
+ 监控目的是什么？
+ 您将监控哪些资源？
+ 监控这些资源的频率如何？
+ 您将使用哪些监控工具？
+ 谁负责执行监控任务？
+ 出现错误时应通知谁？

下一步是[启用日志记录](configure-logging.md)，并通过测量不同时间和不同负载条件下的性能，建立环境中正常 AWS IoT 性能的基准。监控时 AWS IoT，请保留历史监控数据，以便可以将其与当前性能数据进行比较。这将帮助您确定一般的性能模式和性能异常，并设计解决问题的方法。

要确定您的基准绩效 AWS IoT，您应该从一开始就监控这些指标。您可在以后随时监控更多指标。
+  [`PublishIn.Success`](metrics_dimensions.md#message-broker-metrics) 
+  [`PublishOut.Success`](metrics_dimensions.md#message-broker-metrics) 
+  [`Subscribe.Success`](metrics_dimensions.md#message-broker-metrics) 
+  [`Ping.Success`](metrics_dimensions.md#message-broker-metrics) 
+  [`Connect.Success`](metrics_dimensions.md#message-broker-metrics) 
+  [`GetThingShadow.Accepted`](metrics_dimensions.md#shadow-metrics) 
+  [`UpdateThingShadow.Accepted`](metrics_dimensions.md#shadow-metrics) 
+  [`DeleteThingShadow.Accepted`](metrics_dimensions.md#shadow-metrics) 
+  [`RulesExecuted`](metrics_dimensions.md#iot-metrics) 

本部分中的主题可帮助您启动对 AWS IoT的日志记录和监控操作。

**Topics**
+ [配置 AWS IoT 日志](configure-logging.md)
+ [使用 Amazon 监控 AWS IoT 警报和指标 CloudWatch](monitoring-cloudwatch.md)
+ [AWS IoT 使用 CloudWatch 日志进行监控](cloud-watch-logs.md)
+ [将设备端日志上传到 Amazon CloudWatch](upload-device-logs-to-cloudwatch.md)
+ [使用记录 AWS IoT API 调用 AWS CloudTrail](iot-using-cloudtrail.md)

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

必须先使用 AWS IoT 控制台、CLI 或 API 启用日志记录，然后才能监控和记录 AWS IoT 活动。您可以在三个 AWS IoT 级别上配置日志记录：账户级别、事件级别或资源特定级别。V2 日志仅提供事件级和特定资源的日志记录。使用 V1 日志记录的客户必须迁移到 V2 才能访问这些功能。查看[详情](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#migration-v1-v2)。

在考虑如何配置 AWS IoT 日志记录时，除非另有说明，否则账户级别的日志记录配置将决定如何记录 AWS IoT 活动。首先，您可能需要获取默认[日志级别](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#log-level)为 INFO 或 DEBUG 的详细日志。查看初始日志后，您可以将默认日志级别更改为不那么详细的级别，例如账户或事件级别的 WARN 或 ERROR，并对可能需要更多关注的资源设置更详细的特定于资源的日志级别。日志级别可随时更改。

本主题介绍云端登录。 AWS IoT有关设备端日志记录和监控的信息，请参阅[将设备端日志上传](https://docs.aws.amazon.com/iot/latest/developerguide/upload-device-logs-to-cloudwatch.html)到。 CloudWatch

有关日志记录和监控的信息 AWS IoT Greengrass，请参阅[中的日志和监控 AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/logging-and-monitoring.html)。

## 配置 V2 登录 AWS IoT
<a name="configuring-v2-logging"></a>

### 确定您的日志版本
<a name="determing-your-logging-version"></a>

 NotConfiguredException 如果未启用 [V2 日志记录，则 GetV2 LoggingOptions API](https://docs.aws.amazon.com/iot/latest/apireference/API_GetV2LoggingOptions.html) 会返回一个。如果正在使用 V1 日志记录或未配置任何日志记录，则会发生此错误。

### 了解 V2 日志功能
<a name="understanding-v2-logging-features"></a>

V2 日志记录提供两项关键功能：事件级日志记录和特定于资源的日志记录。事件级别的日志记录支持有针对性的日志配置以及可自定义的日志级别和 CloudWatch 日志组目标。特定资源的日志允许您按事物组、源 IP、客户端 ID 或委托人 ID 筛选日志。这些功能共同提供了对物联网操作的精细控制和全面可见性，通过消除不必要的日志活动来提高日志可搜索性并降低成本。

### 从 V1 迁移到 V2
<a name="migration-v1-v2"></a>

[您可以通过 C AWS LI 或 SDK 使用 Setv2 LoggingOptions API 迁移到 V2 日志记录。](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/set-v2-logging-options.html)迁移后， AWS IoT 自动将所有日志路由到 CloudWatch 日志组 “AWSIotLogsv2”。重要：如果您的下游应用程序或资源消耗了 “日AWSIot志” 中的信息，请更新它们以使用相应的日志组路径。

## 配置日志记录角色和策略
<a name="configure-logging-role-and-policy"></a>

 在启用登录功能之前 AWS IoT，您必须创建一个 IAM 角色和一个策略，该策略 AWS IoT 允许您代表您向 CloudWatch 日志组写入 AWS IoT 日志活动。您还可以在[AWS IoT 控制台的 “日志” 部分](https://console.aws.amazon.com/iot/home#/settings/logging)生成具有所需策略的 IAM 角色。

**注意**  
在启用 AWS IoT 日志记录之前，请确保您了解 CloudWatch 日志访问权限。有权访问 CloudWatch 日志的用户可以从您的设备中查看调试信息。有关更多信息，请参阅 [Amazon CloudWatch 日志的身份验证和访问控制](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html)。  
如果您预计 AWS IoT Core 由于负载测试而出现高流量模式，请考虑禁用 IoT 日志以防止限制。如果检测到高流量，我们的服务可能会禁用您账户中的日志记录。

以下内容显示了如何为 AWS IoT Core 资源创建日志记录角色和策略。

### 创建日志记录角色
<a name="create-logging-role"></a>

要创建日志记录角色，请打开 [IAM 控制台的角色中心](https://console.aws.amazon.com/iam/home#/roles)并选择 **Create role**（创建角色）。

1. 在**选择受信任的实体**下，选择 **AWS 服务**。然后在**使用案例**下，选择 **IoT**。如果您看不到 **IoT**，请在**其他 AWS 服务的使用案例：**下拉菜单中输入并搜索 **IoT**。选择**下一步**。

1. 在 **Add permissions**（添加权限）页面上，您将看到自动附加到服务角色的策略。选择**下一步**。

1. 在 **Name, review, and create**（命名、检查和创建）页面上，为此角色输入 **Role name**（角色名称）和 **Role description**（角色描述），然后选择 **Create role**（创建角色）。

### 日志记录角色策略
<a name="logging-role-policy"></a>

以下策略文件提供了允许代表您 AWS IoT 向其提交日志条目的角色策略和信任策略。 CloudWatch 如果您使用自定义日志组配置事件级 CloudWatch 日志记录，则必须更新角色策略以包含自定义资源 ARN。

如果您还 适用于 LoRaWAN 的 AWS IoT Core 允许提交日志条目，则会看到一份为您创建的策略文档，其中记录了这两项活动。

**注意**  
在您创建日志记录角色时已为您创建这些文档。这些文档包含变量* `${partition}`, ** `${region}` *、和* `${accountId}` *，必须将其替换为自己的值。  
将分区替换为该区域的分区。
将区域替换为您使用的 AWS 区域。确保您使用的 AWS 区域与在设备上配置 AWS CLI 时使用的区域相同。
用您的账户 ID 替换 AWS 账户 ID。

角色策略：

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:PutMetricFilter",
                "logs:PutRetentionPolicy",
                "iot:GetLoggingOptions",
                "iot:SetLoggingOptions",
                "iot:SetV2LoggingOptions",
                "iot:GetV2LoggingOptions",
                "iot:SetV2LoggingLevel",
                "iot:ListV2LoggingLevels",
                "iot:DeleteV2LoggingLevel"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:123456789012:log-group:AWSIotLogsV2:*"
            ]
        }
    ]
}
```

仅记录 AWS IoT Core 活动的信任策略：

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": "iot.amazonaws.com"
        },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

AWS IoT 由于 IAM 角色权限不足， CloudWatch 日志可能无法将日志发布到日志。发生这种情况时，请检查[ CloudWatch 日志指标](https://docs.aws.amazon.com/iot/latest/developerguide/metrics_dimensions.html#logging-metrics)以调查故障并对其进行故障排除。

## 在 AWS IoT （控制台）中配置日志记录
<a name="configure-logging-console"></a>

本节介绍如何使用 AWS IoT 控制台配置 AWS IoT 日志记录。您可以设置账户级别、事件级别和特定资源的日志记录。

**要配置 AWS IoT 记录，请执行以下操作：**

1. 登录 AWS IoT 控制台。有关更多信息，请参阅 [打开控制 AWS IoT 台](setting-up.md#iot-console-signin)。

1. 在左侧导航窗格中，选择 “**日志**”（以前是 “设置” 下的部分）。

1. 配置账户级日志记录：账户级别的日志记录适用于您的所有 AWS IoT 队列（设备或终端节点），除非被事件级别或特定资源的设置所覆盖。

   1. 在 “账户级日志记录” 下，选择 “**管理账户级日志记录**” 以进行更新。

   1. 选择 “启用日志记录” 复选框以开始向其发送日志 CloudWatch。如果未选中 “启用日志记录”，则无论事件级别或资源级别的日志记录配置如何，都 AWS IoT 不会向 CloudWatch 日志组发送任何日志。

   1. 在 **IAM 日志角色**下，从下拉列表中选择一个现有角色。您可以**查看角色详细信息**以检查角色权限。或者，选择**创建新角色**来设置新的 IAM 角色。日志角色提供的策略允许代表您 AWS IoT 向提交日志条目。 CloudWatch 如果您使用自定义日志组配置事件级 CloudWatch 日志记录，则必须更新角色策略以包含该日志组的 ARN。

   1. 选择与要在**日志中显示[的日志条目的详细级别](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#log-level)相对应的 “默认** CloudWatch 日志” 级别。注意：日志级别 “DEBUG” 提供了最多的细节，但会增加 CloudWatch 成本。 CloudWatch 无法在账户级别配置日志组目标。但是，您可以为各个事件类型指定自定义日志组，如下一节所述。

   1. 选择 “**更新日志记录**” 以保存您的更改。

1. 事件级日志允许您有选择地捕获相关事件的日志，并将其定向到专用的 CloudWatch 日志组。这使您可以灵活地按用例组织日志，以提高可发现性，与不同的受众共享，并通过启用日志和根据事件重要性设置日志级别来降低 CloudWatch 成本。

   配置**事件级别的日志记录：事件级别**的日志记录会捕获特定 AWS IoT 事件，例如客户端身份验证尝试。这些设置会覆盖账户级别的日志记录。

   1. 在 “**事件级日志记录**” 部分下，选择 “**管理事件级日志记录**” 以进行更新。

   1. 默认情况下，事件类型继承账户级别的日志配置。注意：配置特定资源的日志记录后，它会覆盖账户和事件级别的设置。

   1. 要修改单个事件的设置，请单击相应事件行中的值。您可以调整日志级别和 CloudWatch 日志组目标。指定自定义 CloudWatch 日志组目标时，必须验证 IAM 角色策略是否包含新日志组的权限。如果不更新角色策略，则无法 AWS IoT 将日志写入自定义日志组。做出选择后，单击复选标记以确认您的选择。**“已修改” 列将显示 “是”**，以指示待处理的更改。

   1. 单击 “**更新日志**” 以应用您的更改，或者选择 “**取消**” 放弃。

1. 配置特定于资源的覆盖：资源特定的覆盖将日志设置应用于选定的资源。资源可以是事物组、源 IP、客户端 ID 或委托人 ID。特定于资源的日志配置会覆盖账户级别和事件级别的设置。启用后，它会在为指定资源配置的日志级别为所有事件类型生成日志。例如，您可以为特定事物设置调试级别的日志记录，同时为所有其他事物保留信息级别的日志记录。

   1. 在 “**资源特定覆盖” 部分中选择 “添加特定于资源的替代**”。

   1. 选择日志目标：事物组、源 IP、客户端 ID 或主体 ID。

   1. 为所选目标类型输入相应的日志目标值。

   1. 从 “特定于资源的日志级别” 部分的下拉菜单中选择所需的日志级别。

   1. 单击 “**提交**” 添加改写，或单击 “**取消”** 放弃更改。

   1. 要修改现有的特定于资源的替代，请选中资源旁边的复选框，然后单击 “移除” 以删除覆盖或单击 “编辑” 进行修改。

启用日志记录后，请访问 [在 CloudWatch 控制台中查看 AWS IoT 日志](cloud-watch-logs.md#viewing-logs) 以了解有关查看日志条目的更多信息。

## 配置账户和事件级别登录 ( AWS IoT CLI)
<a name="global-logging-cli"></a>

本节介绍如何使用 CLI 为 AWS IoT 配置全局日志。

您可以选择配置事件级别的日志记录。事件级别的日志记录捕获事件级别的日志信息，例如身份验证和授权或证书创建事件。您可以在事件级别自定义日志级别和 CloudWatch 日志组目标。与账户级日志相比，事件级别的日志记录在更具针对性的级别上运行，因此会覆盖账户级别的日志记录设置。这种分层方法允许您根据事件的操作重要性和成本考虑因素为不同类型的事件维护不同的日志记录策略。

**注意**  
您需要提供要使用角色的 Amazon 资源名称（ARN）。如果需要创建用于日志记录的角色，请参阅 [创建日志记录角色](#create-logging-role)，然后继续操作。为任何事件类型指定自定义 CloudWatch日志组时，请确保您的日志记录角色具有目标日志组所需的权限。  
 用于调用 API 的委托人对于您的日志记录角色必须具有[传递角色权限](pass-role.md)。

您也可以使用 API 中与此处显示的 CLI 命令相对应的方法，对 AWS API 执行此过程。

**使用 CLI 配置默认日志记录 AWS IoT**

1. 使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/set-v2-logging-options.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/set-v2-logging-options.html) 命令为您的账户设置日志记录选项。

   ```
   aws iot set-v2-logging-options \
       --event-configurations event-configuration-list \
       --role-arn logging-role-arn \
       --default-log-level log-level
   ```

   其中：  
**--role-arn**  
授予在日志中写入日志 AWS IoT 权限的角色 ARN。 CloudWatch 初始设置需要角色ARN配置。  
**--default-log-level**  
要使用的[日志级别](#log-level)。有效值为：`ERROR``WARN`、`INFO`、`DEBUG`、或`DISABLED`。 Default-log-level初始设置需要进行配置。  
**--no-disable-all-logs**  
一个可选参数，用于启用所有 AWS IoT 日志记录。使用此参数可在当前禁用日志记录时启用日志记录。  
 **--disable-all-logs**   
一个可选参数，用于禁用所有 AWS IoT 日志记录。使用此参数可在当前启用日志记录时禁用日志记录。  
**--event-configurations**  
此参数是可选的，允许您为各个事件类型自定义日志设置：  
   + EventType：覆盖账户级别设置的事件类型
   + LogLevel：使用 “调试”、“信息”、“错误”、“警告” 或 “已禁用” 来覆盖账户级别的设置
   + LogDestination：为 CloudWatch 日志传输指定自定义日志组

   您可以为每种事件类型单独配置日志级别和日志目标。如果未指定，则事件将继承账户级别的设置

   ```
   aws iot set-v2-logging-options \
       --event-configurations "[{\"eventType\":\"Publish-In\",\"logLevel\":\"INFO\",\"logDestination\":\"examplePublishInLogGroup\"}]"
   ```

1. 使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/get-v2-logging-options.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/get-v2-logging-options.html) 命令获取当前日志记录选项。

   ```
   aws iot get-v2-logging-options \
       --verbose
   ```

   其中：  
**--verbose**  
一个可选参数，用于检索所有 EventType 及其配置。

启用日志记录后，请访问 [在 CloudWatch 控制台中查看 AWS IoT 日志](cloud-watch-logs.md#viewing-logs) 以了解有关查看日志条目的更多信息。

**注意**  
AWS IoT 继续支持旧命令（**set-logging-options**和**get-logging-options**），以便在您的账户上设置和获取全局登录。请注意，使用这些命令时，生成的日志将包含纯文本而不是 JSON 有效载荷，并且日志记录延迟通常会更高。将不会再对这些较早命令的实施进行更多改进。我们建议您使用 [“v2” 版本](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#migration-v1-v2)来配置日志记录选项，并在可能的情况下更改使用旧版本的旧版应用程序。

## 在 ( AWS IoT CLI) 中配置特定于资源的替代
<a name="fine-logging-cli"></a>

本节介绍如何使用 CLI 为 AWS IoT 配置特定于资源的替代。资源特定的覆盖允许您为由事物组、客户端 ID、源 IP 或委托人 ID 标识的特定资源指定日志级别。启用特定资源的日志记录后，它会覆盖账户级别和事件级别的设置。所有事件类型都将在配置的日志级别为指定资源生成日志，即使这些事件在事件级别配置中被禁用。

事物组可包含其它事物组以创建分层关系。此流程介绍如何配置单个事物组的日志记录。您可以将此流程应用于层次结构中的父事物组，以配置层次结构中所有事物组的日志记录。您也可以将此流程应用于子事情组，以覆盖其父级的日志记录配置。

一个事物可以是一个事物组的成员。这种成员资格允许该事物继承应用于该事物组的配置、策略和设置。事物组用于集体管理和应用设置到多个事物，而不是单独处理每个事物。当您的客户端 ID 与事物名称匹配时， AWS IoT Core 会自动将客户端会话与相应的事物资源相关联。这允许客户端会话继承应用于该事物所属事物组的配置和设置，包括日志记录级别。如果您的客户端 ID 与事物名称不匹配，您可以启用独占事物附件来建立关联。有关更多信息，请参阅 [将 AWS IoT 事物关联到 MQTT 客户端连接](exclusive-thing.md)。

除了事物组之外，您还可以录入目标，例如设备的客户端 ID、源 IP 和主体 ID。

**注意**  
您需要提供要使用角色的 Amazon 资源名称（ARN）。如果需要创建用于日志记录的角色，请参阅 [创建日志记录角色](#create-logging-role)，然后继续操作。  
用于调用 API 的委托人对于您的日志记录角色必须具有[传递角色权限](pass-role.md)。

您也可以使用 API 中与此处显示的 CLI 命令相对应的方法，对 AWS API 执行此过程。

**使用 CLI 为以下各项配置特定于资源的替代 AWS IoT**

1. 在配置特定资源的日志记录之前，使用以下命令启用账户级日志记录：aws iot set-v2-logging-options 命令

1. 使用[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/set-v2-logging-level.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/set-v2-logging-level.html)命令配置特定于资源的替代。有关事物组配置，请参阅以下示例：

   ```
   aws iot set-v2-logging-level \
                 --log-target targetType=THING_GROUP,targetName=thing_group_name \
                 --log-level log_level
   ```  
**--log-target**  
您要配置日志记录的资源的类型和名称。`targetType` 值必须是下列项之一：`THING_GROUP` \$1 `CLIENT_ID` \$1 `SOURCE_IP` \$1 `PRINCIPAL_ID`。log-target 参数值可以是文本（如前面的命令示例所示），也可以是 JSON 字符串，如以下示例所示。  

   ```
   aws iot set-v2-logging-level \
                 --log-target '{"targetType": "THING_GROUP","targetName": "thing_group_name"}' \
                 --log-level log_level
   ```  
**--log-level**  
为指定资源生成日志时使用的日志记录级别。有效值为：**DEBUG**、**INFO**、**ERROR**、**WARN** 和 **DISABLED**。

1. 使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-v2-logging-levels.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-v2-logging-levels.html) 命令列出当前配置的日志记录级别。

   ```
   aws iot list-v2-logging-levels
   ```

1. 使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/delete-v2-logging-level.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/delete-v2-logging-level.html) 命令删除资源特定的日志记录级别，比如下面的例子。

   ```
   aws iot delete-v2-logging-level \
                 --target-type "THING_GROUP" \
                 --target-name "thing_group_name"
   ```

   ```
   aws iot delete-v2-logging-level \
                 --target-type=CLIENT_ID 
                 --target-name=ClientId1
   ```  
**--target-type**  
`target-type` 值必须是下列项之一：`THING_GROUP` \$1 `CLIENT_ID` \$1 `SOURCE_IP` \$1 `PRINCIPAL_ID`。  
**--target-name**  
要删除日志记录级别的事物组的名称。

## 日志级别
<a name="log-level"></a>

这些日志级别确定记录的事件，并应用于默认日志级别和资源特定的日志级别。

ERROR  
导致操作失败的任何错误。  
示例：由于证书过期，无法对设备进行身份验证。  
日志仅包含 ERROR 信息。

警告  
可能导致系统中出现不一致问题，但不会导致操作失败的所有情况。  
示例：接近消息速率限制。  
日志包括 ERROR 和 WARN 信息。

INFO  
有关事物流的高级别信息。  
示例：客户端成功订阅了 MQTT 主题。  
日志包括 INFO、ERROR 和 WARN 信息。

调试  
可能有助于调试问题的信息。  
示例：物联网规则引擎检测到一条发布到规则主题 “规则/测试” 的消息并成功开始执行。该规则配置为 RepublishAction。  
日志包括 DEBUG、INFO、ERROR 和 WARN 信息。

DISABLED  
所有日志记录均处于禁用状态。

# 使用 Amazon 监控 AWS IoT 警报和指标 CloudWatch
<a name="monitoring-cloudwatch"></a>

您可以使用 AWS IoT 进行监控 CloudWatch，它会收集原始数据并将其处理 AWS IoT 为可读的、近乎实时的指标。这些统计数据会保存两周，从而使您能够访问历史信息，并能够更好地了解您的网络应用程序或服务的执行情况。默认情况下， AWS IoT 指标数据每隔一分钟自动发送到 CloudWatch 。有关更多信息，请参阅[什么是亚马逊 CloudWatch、亚马逊 CloudWatch 事件和亚马逊 CloudWatch 日志？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatch.html) 在《*亚马逊 CloudWatch 用户指南》*中。

## 使用 AWS IoT 指标
<a name="how_to_use_metrics"></a>

报告的指标 AWS IoT 提供了您可以用不同方式进行分析的信息。以下使用案例基于您每天将十个事物连接一次 Internet 的场景。每天：
+ 十件事大致 AWS IoT 在同一时间相连。
+ 每个事物都会订阅主题筛选条件，接着在等待一个小时后断开连接。在此期间，事物之间相互通信并探索更多与环境状态有关的信息。
+ 每个事物都会基于其新发现的数据，使用 `UpdateThingShadow` 发布一些看法。
+ 每件事都与之断开连接。 AWS IoT

为了帮助您入门，这些主题探讨了您可能会遇到的一些问题。
+  [我如何在事物每天没有成功建立连接时得到通知？](creating_alarms.md#how_to_detect_connection_failures) 
+  [我如何在事物每天没有发布数据时得到通知？](creating_alarms.md#how_to_detect_publish_failures) 
+  [我如何在事物的影子更新每天被拒绝时得到通知？](creating_alarms.md#detect_rejected_updates) 
+  [如何为 Jobs 创建 CloudWatch 警报？](creating_alarms.md#cw-jobs-alarms) 

**Topics**
+ [使用 AWS IoT 指标](#how_to_use_metrics)
+ [创建要监控的 CloudWatch 警报 AWS IoT](creating_alarms.md)
+ [AWS IoT 指标和维度](metrics_dimensions.md)

# 创建要监控的 CloudWatch 警报 AWS IoT
<a name="creating_alarms"></a>

您可以创建一个 CloudWatch 警报，当警报状态发生变化时，该警报会发送 Amazon SNS 消息。警报会在您规定的时间范围内监控某一项指标。当指标的值在多个时间段内超过给定阈值时，将执行一项或多项操作。操作是一个发送到 Amazon SNS 主题或 Auto Scaling 策略的通知。警报仅在持续状态变化时触发操作。 CloudWatch 警报不会仅仅因为它们处于特定状态而触发操作；该状态必须已更改并维持了指定的时间段。

**Topics**
+ [我如何知道事物每天是否成功建立连接？](#how_to_detect_connection_failures)
+ [我如何在事物每天没有发布数据时得到通知？](#how_to_detect_publish_failures)
+ [我如何在事物的影子更新每天被拒绝时得到通知？](#detect_rejected_updates)
+ [如何为作业创建 CloudWatch 警报？](#cw-jobs-alarms)

 您可以查看 CloudWatch 警报可以监控的所有指标[AWS IoT 指标和维度](metrics_dimensions.md)。

## 我如何知道事物每天是否成功建立连接？
<a name="how_to_detect_connection_failures"></a>

1. 创建名为 `things-not-connecting-successfully` 的 Amazon SNS 主题，并记录其 Amazon Resource Name (ARN)。此流程将您主题的 ARN 称为 ` sns-topic-arn `。

   有关如何创建 Amazon SNS 通知的更多信息，请参阅 [Amazon SNS 入门](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

1. 创建告警。

   ```
   aws cloudwatch put-metric-alarm \
       --alarm-name ConnectSuccessAlarm \
       --alarm-description "Alarm when my Things don't connect successfully" \
       --namespace AWS/IoT \
       --metric-name Connect.Success \
       --dimensions Name=Protocol,Value=MQTT \
       --statistic Sum \
       --threshold 10 \
       --comparison-operator LessThanThreshold \
       --period 86400 \
       --evaluation-periods 1 \
       --alarm-actions sns-topic-arn
   ```

1. 测试告警。

   ```
   aws cloudwatch set-alarm-state --alarm-name ConnectSuccessAlarm --state-reason "initializing" --state-value OK
   ```

   ```
   aws cloudwatch set-alarm-state --alarm-name ConnectSuccessAlarm --state-reason "initializing" --state-value ALARM
   ```

1. 验证警报是否显示在 [CloudWatch 控制台](https://console.aws.amazon.com/cloudwatch)中。

## 我如何在事物每天没有发布数据时得到通知？
<a name="how_to_detect_publish_failures"></a>

1. 创建名为 `things-not-publishing-data` 的 Amazon SNS 主题，并记录其 Amazon Resource Name (ARN)。此流程将您主题的 ARN 称为 ` sns-topic-arn `。

   有关如何创建 Amazon SNS 通知的更多信息，请参阅 [Amazon SNS 入门](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

1. 创建告警。

   ```
   aws cloudwatch put-metric-alarm \
       --alarm-name PublishInSuccessAlarm\
       --alarm-description "Alarm when my Things don't publish their data \
       --namespace AWS/IoT \
       --metric-name PublishIn.Success \
       --dimensions Name=Protocol,Value=MQTT \
       --statistic Sum \
       --threshold 10 \
       --comparison-operator LessThanThreshold \
       --period 86400 \
       --evaluation-periods 1 \
       --alarm-actions sns-topic-arn
   ```

1. 测试告警。

   ```
   aws cloudwatch set-alarm-state --alarm-name PublishInSuccessAlarm --state-reason "initializing" --state-value OK
   ```

   ```
   aws cloudwatch set-alarm-state --alarm-name PublishInSuccessAlarm --state-reason "initializing" --state-value ALARM
   ```

1. 验证警报是否显示在 [CloudWatch 控制台](https://console.aws.amazon.com/cloudwatch)中。

## 我如何在事物的影子更新每天被拒绝时得到通知？
<a name="detect_rejected_updates"></a>

1. 创建名为 `things-shadow-updates-rejected` 的 Amazon SNS 主题，并记录其 Amazon Resource Name (ARN)。此流程将您主题的 ARN 称为 ` sns-topic-arn `。

   有关如何创建 Amazon SNS 通知的更多信息，请参阅 [Amazon SNS 入门](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

1. 创建告警。

   ```
   aws cloudwatch put-metric-alarm \
       --alarm-name UpdateThingShadowSuccessAlarm \
       --alarm-description "Alarm when my Things Shadow updates are getting rejected" \
       --namespace AWS/IoT \
       --metric-name UpdateThingShadow.Success \
       --dimensions Name=Protocol,Value=MQTT \
       --statistic Sum \
       --threshold 10 \
       --comparison-operator LessThanThreshold \
       --period 86400 \
       --unit Count \
       --evaluation-periods 1 \
       --alarm-actions sns-topic-arn
   ```

1. 测试告警。

   ```
   aws cloudwatch set-alarm-state --alarm-name UpdateThingShadowSuccessAlarm --state-reason "initializing" --state-value OK
   ```

   ```
   aws cloudwatch set-alarm-state --alarm-name UpdateThingShadowSuccessAlarm --state-reason "initializing" --state-value ALARM
   ```

1. 验证警报是否显示在 [CloudWatch 控制台](https://console.aws.amazon.com/cloudwatch)中。

## 如何为作业创建 CloudWatch 警报？
<a name="cw-jobs-alarms"></a>

作业服务提供 CloudWatch 指标供您监控作业。您可以创建 CloudWatch 警报来监控任何警报[任务指标](metrics_dimensions.md#jobs-metrics)。

以下命令创建 CloudWatch 警报以监控 Job 的失败任务执行总数，*SampleOTAJob*并在超过 20 个任务执行失败时通知您。警报通过每 300 秒检查报告值来监控 Jobs 指标 `FailedJobExecutionTotalCount`。它在单个报告值大于 20 时激活，这意味着自任务启动以来失败的任务执行数超过了 20。当告警关闭时，它会向提供的 Amazon SNS 主题发送通知。

```
aws cloudwatch put-metric-alarm \
    --alarm-name TotalFailedJobExecution-SampleOTAJob \
    --alarm-description "Alarm when total number of failed job execution exceeds the threshold for SampleOTAJob" \
    --namespace AWS/IoT \
    --metric-name FailedJobExecutionTotalCount \
    --dimensions Name=JobId,Value=SampleOTAJob \
    --statistic Sum \
    --threshold 20 \
    --comparison-operator GreaterThanThreshold \
    --period 300 \
    --unit Count \
    --evaluation-periods 1 \
    --alarm-actions arn:aws:sns:<AWS_REGION>:<AWS_ACCOUNT_ID>:SampleOTAJob-has-too-many-failed-job-ececutions
```

以下命令创建 CloudWatch 警报，以监控 Job 在给定时间段内失败*SampleOTAJob*的任务执行次数。然后，在该时段内有超过 5 个任务执行失败时，它会通知您。警报通过每 3600 秒检查报告值来监控 Jobs 指标 `FailedJobExecutionCount`。它在单个报告值大于 5 时激活，这意味着过去 1 小时内失败的任务执行数超过了 5。当告警关闭时，它会向提供的 Amazon SNS 主题发送通知。

```
aws cloudwatch put-metric-alarm \
    --alarm-name FailedJobExecution-SampleOTAJob \
    --alarm-description "Alarm when number of failed job execution per hour exceeds the threshold for SampleOTAJob" \
    --namespace AWS/IoT \
    --metric-name FailedJobExecutionCount \
    --dimensions Name=JobId,Value=SampleOTAJob \
    --statistic Sum \
    --threshold 5 \
    --comparison-operator GreaterThanThreshold \
    --period 3600 \
    --unit Count \
    --evaluation-periods 1 \
    --alarm-actions arn:aws:sns:<AWS_REGION>:<AWS_ACCOUNT_ID>:SampleOTAJob-has-too-many-failed-job-ececutions-per-hour
```

# AWS IoT 指标和维度
<a name="metrics_dimensions"></a>

当您与交互时 AWS IoT，该服务会 CloudWatch 每分钟向发送一次指标和维度。您可以使用 AWS IoT、使用 CloudWatch 控制台或 AWS CLI 查看这些指标。

要使用 CloudWatch 控制台查看指标，请打开[CloudWatch 控制台](https://console.aws.amazon.com/cloudwatch)。在导航窗格中，选择 **Metrics**（指标）然后选择 **All metrics**（所有指标）。在 “**浏览**” 选项卡中，搜索 AWS IoT 以查看指标列表。指标的分组首先依据服务命名空间，然后依据每个命名空间内的各种维度组合。

要使用查看指标 AWS CLI，请运行以下命令。

```
1. aws cloudwatch list-metrics --namespace "AWS/IoT"
```

**Topics**
+ [AWS IoT 指标](#iot-metrics)
+ [AWS IoT Core 凭证提供者指标](#credential-provider-metrics)
+ [身份验证指标](#authentication-metrics)
+ [服务器证书 OCSP 绑定指标](#server-ocsp-metrics)
+ [规则指标](#rulemetrics)
+ [规则操作指标](#rule-action-metrics)
+ [HTTP 操作特定指标](#http-action-metrics)
+ [消息代理指标](#message-broker-metrics)
+ [设备影子指标](#shadow-metrics)
+ [记录指标](#logging-metrics)
+ [任务指标](#jobs-metrics)
+ [Device Defender audit 指标](#device-defender-audit-metrics)
+ [Device Defender Detect 指标](#device-defender-detect-metrics)
+ [设备预调配指标](#provisioning-metrics)
+ [LoRa广域网指标](#lorawan-metrics)
+ [实例集索引指标](#fleet-indexing-metrics)
+ [指标的维度](#aws-iot-metricdimensions)

## AWS IoT 指标
<a name="iot-metrics"></a>


| 指标 | 说明 | 
| --- | --- | 
|   `AddThingToDynamicThingGroupsFailed`   |  与将事物添加到动态事物组相关联的失败事件数。`DynamicThingGroupName` 维度包含添加事物时失败的动态组的名称。  | 
|   `NumLogBatchesFailedToPublishThrottled`   |  因限制错误而无法发布的日志事件的单个批次。  | 
|   `NumLogEventsFailedToPublishThrottled`   |  批处理中的因限制错误而无法发布的日志事件的数量。  | 

## AWS IoT Core 凭证提供者指标
<a name="credential-provider-metrics"></a>


| 指标 | 说明 | 
| --- | --- | 
|   `CredentialExchangeSuccess`   |  向 AWS IoT Core 凭证提供程序成功提交 `AssumeRoleWithCertificate` 请求的数量。  | 

## 身份验证指标
<a name="authentication-metrics"></a>

**注意**  
身份验证指标显示在 CloudWatch 控制台的**协议指标**下。


| 指标 | 说明 | 
| --- | --- | 
|   `Connection.AuthNError`   | 由于身份验证失败而 AWS IoT Core 被拒绝的连接尝试次数。此指标仅考虑发送的服务器名称指示（SNI）字符串与您的 AWS 账户端点匹配的连接。该指标包括来自外部来源（例如互联网扫描工具或探测活动）的连接尝试次数。Protocol 维度包含用于发送连接尝试的协议。 | 

## 服务器证书 OCSP 绑定指标
<a name="server-ocsp-metrics"></a>


| 指标 | 说明 | 
| --- | --- | 
| 检索OCSPStaple数据。成功 | OCSP 响应已成功接收并处理。在已配置域的 TLS 握手期间，将包含此响应。DomainConfigurationName 维度包含已启用服务器证书 OCSP 绑定的已配置域的名称。 | 

## 规则指标
<a name="rulemetrics"></a>


| 指标 | 说明 | 
| --- | --- | 
|   `ParseError`   |  在规则所侦听的主题上发布的消息中出现的 JSON 分析错误的数量。`RuleName` 维度包含规则的名称。  | 
|   `RuleExecutionThrottled`   |  由于恶意行为或由于消息数超过了规则引擎的限制，规则引擎限制的消息数。`RuleName` 维度包含要触发的规则的名称。  | 
|   `RuleNotFound`   |  找不到要触发的规则。`RuleName` 维度包含规则的名称。  | 
|   `RulesExecuted`   |  已执行的 AWS IoT 规则数。  | 
|   `TopicMatch`   |  已在规则所侦听的主题上发布的传入消息的数量。`RuleName` 维度包含规则的名称。  | 

## 规则操作指标
<a name="rule-action-metrics"></a>


| 指标 | 说明 | 
| --- | --- | 
|   `Failure`   |  失败的规则操作调用的数量。`RuleName` 维度包含指定操作的规则的名称。`ActionType` 维度包含已调用的操作的类型。  | 
|   `Success`   |  成功的规则操作调用的数量。`RuleName` 维度包含指定操作的规则的名称。`ActionType` 维度包含已调用的操作的类型。  | 
|  ErrorActionFailure  | 失败的错误操作数量。RuleName 维度包含指定操作的规则的名称。ActionType 维度包含已调用的操作的类型。 | 
|  ErrorActionSuccess  | 成功的错误操作数量。RuleName 维度包含指定操作的规则的名称。ActionType 维度包含已调用的操作的类型。 | 

## HTTP 操作特定指标
<a name="http-action-metrics"></a>


| 指标 | 说明 | 
| --- | --- | 
|   `HttpCode_Other`   |  如果来自下游网络的响应的状态码不 service/application 是 2xx、4xx 或 5xx，则生成。  | 
|   `HttpCode_4XX`   |  如果来自下游网络的响应的状态码介 service/application 于 400 和 499 之间，则生成。  | 
|   `HttpCode_5XX`   |  如果来自下游网络的响应的状态码介 service/application 于 500 和 599 之间，则生成。  | 
|   `HttpInvalidUrl`   |  如果在替换模板后的端点 URL 不以 `https://` 开头，则生成此指标。  | 
|   `HttpRequestTimeout`   |  如果下游 Web service/application 未在请求超时限制内返回响应，则生成。有关更多信息，请参阅 [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/iot-core.html#limits_iot)。  | 
|   `HttpUnknownHost`   |  如果 URL 有效，但服务不存在或无法访问，则生成此指标。  | 

## 消息代理指标
<a name="message-broker-metrics"></a>

**注意**  
消息代理指标显示在 CloudWatch 控制台的**协议指标**下。


| 指标 | 说明 | 
| --- | --- | 
|   `Connect.AuthError`   |  无法由消息代理授权的连接请求的数量。`Protocol` 维度包含用于发送 `CONNECT` 消息的协议。  | 
|   `Connect.ClientError`   |  因 MQTT 消息不符合中定义的要求而被拒绝的连接请求数。[AWS IoT 限额](limits-iot.md)`Protocol` 维度包含用于发送 `CONNECT` 消息的协议。  | 
|   `Connect.ClientIDThrottle`   |  因该客户端超出指定客户端 ID 所允许的连接请求速率而受限的连接请求的数量。`Protocol` 维度包含用于发送 `CONNECT` 消息的协议。  | 
|   `Connect.ServerError`   |  因出现内部错误而导致失败的连接请求的数量。`Protocol` 维度包含用于发送 `CONNECT` 消息的协议。  | 
|   `Connect.Success`   |  与消息代理的成功连接的数量。`Protocol` 维度包含用于发送 `CONNECT` 消息的协议。  | 
|   `Connect.Throttle`   |  因账户超出允许的连接请求速率而受限的连接请求的数量。`Protocol` 维度包含用于发送 `CONNECT` 消息的协议。  | 
|   `Ping.Success`   |  消息代理收到的 ping 消息的数量。`Protocol` 维度包含用于发送 ping 消息的协议。  | 
|   `PublishIn.AuthError`   |  消息代理无法授权的发布请求的数量。`Protocol` 维度包含用于发布消息的协议。HTTP 发布不支持此指标。  | 
|   `PublishIn.ClientError`   |  由于消息不符合中定义的要求而被消息代理拒绝的发布请求的数量[AWS IoT 限额](limits-iot.md)。`Protocol` 维度包含用于发布消息的协议。  | 
|   `PublishIn.ServerError`   |  因出现内部错误而导致消息代理无法处理的发布请求的数量。`Protocol` 维度包含用于发送 `PUBLISH` 消息的协议。  | 
|   `PublishIn.Success`   |  消息代理已成功处理的发布请求的数量。`Protocol` 维度包含用于发送 `PUBLISH` 消息的协议。  | 
|   `PublishIn.Throttle`   |  因客户端超出允许的入站消息速率而受限制的发布请求的数量。`Protocol` 维度包含用于发送 `PUBLISH` 消息的协议。HTTP 发布不支持此指标。  | 
|   `PublishOut.AuthError`   |   AWS IoT无法授权的由消息代理发出的发布请求的数量。`Protocol` 维度包含用于发送 `PUBLISH` 消息的协议。  | 
|   `PublishOut.ClientError`   |  消息代理发出的由于消息不符合中定义的要求而被拒绝的发布请求的数量[AWS IoT 限额](limits-iot.md)。`Protocol` 维度包含用于发送 `PUBLISH` 消息的协议。  | 
|   `PublishOut.Success`   |  消息代理已成功发出的发布请求的数量。`Protocol` 维度包含用于发送 `PUBLISH` 消息的协议。  | 
|  PublishOut.Throttle  |  因客户端超出允许的入站消息速率而节流的发布请求数量。`Protocol` 维度包含用于发送 `PUBLISH` 消息的协议。  | 
|   `PublishRetained.AuthError`   |  消息代理无法授权的 `RETAIN` 标签集发布请求的数量。`Protocol` 维度包含用于发送 `PUBLISH` 消息的协议。  | 
|  PublishRetained.ServerError  |  因出现内部错误而导致消息代理无法处理的保留发布请求的数量。`Protocol` 维度包含用于发送 `PUBLISH` 消息的协议。  | 
|   `PublishRetained.Success`   |  消息代理已成功处理的 `RETAIN` 标签集发布请求的数量。`Protocol` 维度包含用于发送 `PUBLISH` 消息的协议。  | 
|   `PublishRetained.Throttle`   |  因客户端超出允许的入站消息速率而受限制的 `RETAIN` 标签集发布请求的数量。`Protocol` 维度包含用于发送 `PUBLISH` 消息的协议。  | 
|   `Queued.Success`   |  消息代理为与持久会话断开连接的客户端成功处理的存储消息的数量。QoS 为 1 的消息是在具有持久性会话的客户端断开连接时存储的。  | 
|   `Queued.Throttle`   |  在具有持久会话的客户端断开连接时无法存储和受限制的消息的数量。当客户端超过[每个账户每秒的排队消息数](https://docs.aws.amazon.com//general/latest/gr/iot-core.html#genref_queued_messages_per_second_per_account)限制时，就会发生这种情况。QoS 为 1 的消息是在具有持久性会话的客户端断开连接时存储的。  | 
|   `Queued.ServerError`   |  由于内部错误而未为持久会话存储的消息数量。当具有持久会话的客户端断开连接时，将存储服务质量（QoS）为 1 的消息。  | 
|   `Subscribe.AuthError`   |  无法授权的由客户端发出的订阅请求的数量。`Protocol` 维度包含用于发送 `SUBSCRIBE` 消息的协议。  | 
|   `Subscribe.ClientError`   |  由于`SUBSCRIBE`邮件不符合中定义的要求而被拒绝的订阅请求的数量[AWS IoT 限额](limits-iot.md)。`Protocol` 维度包含用于发送 `SUBSCRIBE` 消息的协议。  | 
|   `Subscribe.ServerError`   |  因出现内部错误而被拒绝的订阅请求的数量。`Protocol` 维度包含用于发送 `SUBSCRIBE` 消息的协议。  | 
|   `Subscribe.Success`   |  消息代理已成功处理的订阅请求的数量。`Protocol` 维度包含用于发送 `SUBSCRIBE` 消息的协议。  | 
|   `Subscribe.Throttle`   |  因您的 AWS 账户超过所允许的订阅请求速率限制而受限的订阅请求的数量。这些限制包括 [AWS IoT Core 消息代理和协议限制和配额](https://docs.aws.amazon.com//general/latest/gr/iot-core.html#message-broker-limits)中描述的每账户每秒订阅数、每账户订阅数以及每个连接的订阅数。`Protocol` 维度包含用于发送 `SUBSCRIBE` 消息的协议。  | 
|  Throttle.Exceeded  | 此指标将显示在 MQTT 客户端根据每个[连接级别限制的每秒数据包数](https://docs.aws.amazon.com//general/latest/gr/iot-core.html#message-broker-limits)进行限制 CloudWatch 时。此指标不适用于 HTTP 连接。 | 
|   `Unsubscribe.ClientError`   |  由于`UNSUBSCRIBE`邮件不符合中定义的要求而被拒绝的取消订阅请求的数量。[AWS IoT 限额](limits-iot.md)`Protocol` 维度包含用于发送 `UNSUBSCRIBE` 消息的协议。  | 
|   `Unsubscribe.ServerError`   |  因出现内部错误而被拒绝的取消订阅请求的数量。`Protocol` 维度包含用于发送 `UNSUBSCRIBE` 消息的协议。  | 
|   `Unsubscribe.Success`   |  消息代理已成功处理的取消订阅请求的数量。`Protocol` 维度包含用于发送 `UNSUBSCRIBE` 消息的协议。  | 
|   `Unsubscribe.Throttle`   |  因客户端超出允许的取消订阅请求速率而被拒绝的取消订阅请求的数量。`Protocol` 维度包含用于发送 `UNSUBSCRIBE` 消息的协议。  | 

## 设备影子指标
<a name="shadow-metrics"></a>

**注意**  
设备影子指标显示在 CloudWatch 控制台的**协议指标**下。


| 指标 | 说明 | 
| --- | --- | 
|   `DeleteThingShadow.Accepted`   |  已成功处理的 `DeleteThingShadow` 请求的数量。`Protocol` 维度包含用于发出请求的协议。  | 
|   `GetThingShadow.Accepted`   |  已成功处理的 `GetThingShadow` 请求的数量。`Protocol` 维度包含用于发出请求的协议。  | 
|   `ListThingShadow.Accepted`   |  已成功处理的 `ListThingShadow` 请求的数量。`Protocol` 维度包含用于发出请求的协议。  | 
|   `UpdateThingShadow.Accepted`   |  已成功处理的 `UpdateThingShadow` 请求的数量。`Protocol` 维度包含用于发出请求的协议。  | 

## 记录指标
<a name="logging-metrics"></a>


| 指标 | 说明 | 
| --- | --- | 
|  `CloudwatchLogs:LogGroupCreationFailed`  |  `CreateLogGroup`请求失败的次数。如果 CloudWatch 日志组不存在，AWS IoT Logging 会创建日志组。该`LogGroup`维度包含用于发出请求的日志组。  | 
|  `CloudwatchLogs:LogStreamCreationFailed`  |  `CreateLogStream`请求失败的次数。AWS IoT Loggin CloudWatch g 创建日志流来推送日志事件。该`LogGroup`维度包含用于发出请求的日志组。  | 
|  `CloudwatchLogs:PutRetentionPolicyFailed`  |  `PutRetentionPolicy`请求失败的次数。如果 CloudWatch 日志组不存在，AWS IoT Logging 会创建该日志组，并将保留策略设置为 30 天。该`LogGroup`维度包含用于发出请求的日志组。  | 
|  `CloudwatchLogs:PutLogEventsFailed`  |  `PutLogEvents`请求失败的次数。该`LogGroup`维度包含用于发出请求的 CloudWatch 日志组。  | 

## 任务指标
<a name="jobs-metrics"></a>


| 指标 | 说明 | 
| --- | --- | 
|  `CanceledJobExecutionCount`  |  在由确定的时间段`CANCELED`内状态更改为的任务执行次数 CloudWatch。（有关 CloudWatch 指标的更多信息，请参阅 [Amazon CloudWatch 指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)。） `JobId` 维度包含任务的 ID。  | 
|   `CanceledJobExecutionTotalCount`   |  给定任务的状态为 `CANCELED` 的任务执行总数。`JobId` 维度包含任务的 ID。  | 
|   `ClientErrorCount`   |  执行任务时生成的客户端错误数。`JobId` 维度包含任务的 ID。  | 
|   `FailedJobExecutionCount`   |  在由确定的时间段`FAILED`内状态更改为的任务执行次数 CloudWatch。（有关 CloudWatch 指标的更多信息，请参阅 [Amazon CloudWatch 指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)。） `JobId` 维度包含任务的 ID。  | 
|   `FailedJobExecutionTotalCount`   |  给定任务的状态为 `FAILED` 的任务执行总数。`JobId` 维度包含任务的 ID。  | 
|   `InProgressJobExecutionCount`   |  在由确定的时间段`IN_PROGRESS`内状态更改为的任务执行次数 CloudWatch。（有关 CloudWatch 指标的更多信息，请参阅 [Amazon CloudWatch 指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)。） `JobId` 维度包含任务的 ID。  | 
|   `InProgressJobExecutionTotalCount`   |  给定任务的状态为 `IN_PROGRESS` 的任务执行总数。`JobId` 维度包含任务的 ID。  | 
|   `RejectedJobExecutionTotalCount`   |  给定任务的状态为 `REJECTED` 的任务执行总数。`JobId` 维度包含任务的 ID。  | 
|   `RemovedJobExecutionTotalCount`   |  给定任务的状态为 `REMOVED` 的任务执行总数。`JobId` 维度包含任务的 ID。  | 
|   `QueuedJobExecutionCount`   |  在由确定的时间段`QUEUED`内状态更改为的任务执行次数 CloudWatch。（有关 CloudWatch 指标的更多信息，请参阅 [Amazon CloudWatch 指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)。） `JobId` 维度包含任务的 ID。  | 
|   `QueuedJobExecutionTotalCount`   |  给定任务的状态为 `QUEUED` 的任务执行总数。`JobId` 维度包含任务的 ID。  | 
|   `RejectedJobExecutionCount`   |  在由确定的时间段`REJECTED`内状态更改为的任务执行次数 CloudWatch。（有关 CloudWatch 指标的更多信息，请参阅 [Amazon CloudWatch 指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)。） `JobId` 维度包含任务的 ID。  | 
|   `RemovedJobExecutionCount`   |  在由确定的时间段`REMOVED`内状态更改为的任务执行次数 CloudWatch。（有关 CloudWatch 指标的更多信息，请参阅 [Amazon CloudWatch 指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)。） `JobId` 维度包含任务的 ID。  | 
|   `ServerErrorCount`   |  执行任务时生成的服务器错误数。`JobId` 维度包含任务的 ID。  | 
|   `SuccededJobExecutionCount`   |  在由确定的时间段`SUCCESS`内状态更改为的任务执行次数 CloudWatch。（有关 CloudWatch 指标的更多信息，请参阅 [Amazon CloudWatch 指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Metric)。） `JobId` 维度包含任务的 ID。  | 
|   `SuccededJobExecutionTotalCount`   |  给定任务的状态为 `SUCCESS` 的任务执行总数。`JobId` 维度包含任务的 ID。  | 

## Device Defender audit 指标
<a name="device-defender-audit-metrics"></a>


| 指标 | 说明 | 
| --- | --- | 
|   `NonCompliantResources`   |  在检查中发现的不合规资源数。系统报告执行的每次审核中，对于每次检查发现的不合规资源数。  | 
|   `ResourcesEvaluated`   |  执行合规性评估的资源数。系统报告执行的每次审核中，对于每次检查所评估的资源数。  | 
|   `MisconfiguredDeviceDefenderNotification`   |  当你的 SNS 配置配置错误时会通知你。 AWS IoT Device Defender   [Dimensions](#aws-iot-metricdimensions)   | 

## Device Defender Detect 指标
<a name="device-defender-detect-metrics"></a>


| 指标 | 说明 | 
| --- | --- | 
|   `NumOfMetricsExported`    |  云端、设备端或自定义指标导出的指标数量。系统会报告该账户就某项特定指标导出的指标数量。此指标仅对使用指标导出功能的客户提供。  | 
|   `NumOfMetricsSkipped`   |  云端、设备端或自定义指标跳过的指标数量。由于为发布到 mqtt 主题而向 Device Defender Detect 提供的权限不足，系统会报告该账户就某项特定指标跳过的指标数量。此指标仅对使用指标导出功能的客户提供。  | 
|   `NumOfMetricsExceedingSizeLimit`   |  由于大小超过 MQTT 消息大小限制，云端、设备端或自定义指标跳过导出的指标数量。系统会报告该账户因大小超过 MQTT 消息大小限制而跳过导出的指标数量。此指标仅对使用指标导出功能的客户提供。  | 
|   `Violations`   |  自上次执行评估以来，所发现的安全配置文件行为的新违规数。系统针对特定安全配置文件，以及针对某个特定安全配置文件的特定行为，报告账户的新违规数。  | 
|   `ViolationsCleared`   |  自上次执行评估以来，已解决的安全配置文件行为的违规数。系统针对特定安全配置文件，以及针对某个特定安全配置文件的特定行为，报告账户的已解决违规数。  | 
|   `ViolationsInvalidated`   |  自上次执行评估以来，其信息不再可用（由于报告设备已停止报告，或者由于某个原因不再监控）的安全配置文件行为的违规数。系统针对特定安全配置文件，以及针对某个特定安全配置文件的特定行为，报告整个账户的已失效违规数。  | 
|   `MisconfiguredDeviceDefenderNotification`   |  当你的 SNS 配置配置错误时会通知你。 AWS IoT Device Defender   [Dimensions](#aws-iot-metricdimensions)   | 

## 设备预调配指标
<a name="provisioning-metrics"></a>


**AWS IoT 舰队配置指标**  

| 指标 | 说明 | 
| --- | --- | 
|   `ApproximateNumberOfThingsRegistered`   |  Fleet Provisioning 注册的事物的计数。 虽然计数通常是准确的，但 AWS IoT Core 的分布式架构使得很难让已注册事物保持精确计数。 此指标将使用的统计数据是： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/metrics_dimensions.html)  维度：[ClaimCertificateId](#aws-iot-metricdimensions)  | 
|   `CreateKeysAndCertificateFailed`   |  调用 `CreateKeysAndCertificate` MQTT API 时故障的次数。 在“成功”（值 = 0）和“故障”（值 = 1）情况下均发出该指标。此指标可用于跟踪在 CloudWatch支持的聚合时段（例如 5 分钟或 1 小时）内创建和注册的证书数量。 此指标的可用统计数据包括： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/metrics_dimensions.html)  | 
|   `CreateCertificateFromCsrFailed`   |  调用 `CreateCertificateFromCsr` MQTT API 时故障的次数。 在“成功”（值 = 0）和“故障”（值 = 1）情况下均发出该指标。此指标可用于跟踪在 CloudWatch支持的聚合时段（例如 5 分钟或 1 小时）内注册的事物的数量。 此指标的可用统计数据包括： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/metrics_dimensions.html)  | 
|   `RegisterThingFailed`   |  调用 `RegisterThing` MQTT API 时故障的次数。 在“成功”（值 = 0）和“故障”（值 = 1）情况下均发出该指标。此指标可用于跟踪在 CloudWatch支持的聚合时段（例如 5 分钟或 1 小时）内注册的事物的数量。有关注册的事物总数，请参阅 `ApproximateNumberOfThingsRegistered` 指标。 此指标的可用统计数据包括： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/metrics_dimensions.html) 维度：[TemplateName](#aws-iot-metricdimensions)  | 


**Just-in-time 配置指标**  

| 指标 | 说明 | 
| --- | --- | 
|   `ProvisionThing.ClientError`   |  由于客户端错误无法预置设备的次数。例如，模板中指定的策略不存在。  | 
|  ProvisionThing.ServerError  |  由于服务器错误而无法预置设备的次数。客户可以在等待后重新尝试预置设备，如果问题仍然存在，则可以尝试联系 AWS IoT 。  | 
|  ProvisionThing.Success  |  成功预置设备的次数。  | 

## LoRa广域网指标
<a name="lorawan-metrics"></a>

下表显示了的指标 适用于 LoRaWAN 的 AWS IoT Core。有关更多信息，请参阅 [适用于 LoRaWAN 的 AWS IoT Core 指标](https://docs.aws.amazon.com/iot-wireless/latest/developerguide/iot-lorawan-metrics.html)。


**适用于 LoRaWAN 的 AWS IoT Core 指标**  

| 指标 | 说明 | 
| --- | --- | 
|  活动设备/网关  |  您账户中活跃的 LoRa WAN 设备和网关的数量。  | 
|  上行链路消息数  |  在指定时间段内为您 AWS 账户中的所有活动网关和设备发送的上行链路消息的数量。上行链路消息是从您的设备发送到的 适用于 LoRaWAN 的 AWS IoT Core消息。  | 
|  下行链路消息数  |  在指定时间段内为您 AWS 账户中的所有活动网关和设备发送的下行链路消息的数量。下行链路消息是从您的设备发送 适用于 LoRaWAN 的 AWS IoT Core 的消息。  | 
|  消息丢失率  |  添加设备并连接到后 适用于 LoRaWAN 的 AWS IoT Core，您的设备可以启动上行链路消息，开始与云端交换消息。然后，您可以使用此指标来跟踪上行链路消息的丢失率。  | 
|  加入指标  |  添加设备和网关后，您可以执行加入程序，以便您的设备可以发送上行链路数据并与 适用于 LoRaWAN 的 AWS IoT Core之通信。您可以使用此指标来获取有关您 AWS 账户中所有活跃设备的加入指标的信息。  | 
|  平均收到的信号强度指标（RSSI）  |  您可以使用此指标来监控指定时间段内的平均 RSSI（收到的信号强度指标）。RSSI 是一种衡量标准，用于指示信号强度是否足以实现良好的无线连接。此值为负值，且必须接近零才能实现可靠的连接。  | 
|  平均信噪比（SNR）  |  您可以使用此指标来监控指定时间段内的平均 SNR（Signal-to-noise 比率）。SNR 是一种衡量标准，用于指示收到的信号与噪声水平相比，强度是否足以实现良好的无线连接。SNR 值为正值，且必须大于零才能表示信号强度大于噪声强度。  | 
|  网关可用性  |  您可以使用此指标来获取有关该网关在指定时间段内的可用性的信息。此指标显示该网关在指定时间段内的 WebSocket 连接时间。  | 


**Just-in-time 配置指标**  

| 指标 | 说明 | 
| --- | --- | 
|   `ProvisionThing.ClientError`   |  由于客户端错误无法预置设备的次数。例如，模板中指定的策略不存在。  | 
|  ProvisionThing.ServerError  |  由于服务器错误而无法预置设备的次数。客户可以在等待后重新尝试预置设备，如果问题仍然存在，则可以尝试联系 AWS IoT 。  | 
|  ProvisionThing.Success  |  成功预置设备的次数。  | 

## 实例集索引指标
<a name="fleet-indexing-metrics"></a>


**AWS IoT 舰队索引指标**  

| 指标 | 说明 | 
| --- | --- | 
|   `NamedShadowCountForDynamicGroupQueryLimitExceeded`   |  对于不是动态事物组中特定于数据来源的查询术语，每件事物最多处理 25 个命名影子。由于事件而违反该限制时，将发出 `NamedShadowCountForDynamicGroupQueryLimitExceeded` 事件类型。  | 

## 指标的维度
<a name="aws-iot-metricdimensions"></a>


**指标使用命名空间并为以下维度提供指标**  

| 维度 | 说明 | 
| --- | --- | 
|  ActionType  |  触发请求的规则所指定的[操作类型](iot-rule-actions.md)。  | 
|   `BehaviorName`   |  正受监控的 Device Defender Detect 安全配置文件行为的名称。  | 
|   `ClaimCertificateId`   |  用于预调配设备的申请的 `certificateId`。  | 
|   `CheckName`   |  正在监控其结果的 Device Defender Audit 检查的名称。  | 
|   `JobId`   |  正在监控其进度或消息连接的任务 success/failure 的 ID。  | 
|   `Protocol`   |  用于提出请求的协议。有效值为：MQTT 或 HTTP  | 
|   `RuleName`   |  由请求触发的规则的名称。  | 
|   `ScheduledAuditName`   |  正在监控其检查结果的 Device Defender 计划审核的名称。如果报告的结果适用于按需执行的审计，此项具有值 `OnDemand`。  | 
|   `SecurityProfileName`   |  正在监控其行为的 Device Defender Detect 安全配置文件的名称。  | 
|   `TemplateName`   |  预配置模板的名称。  | 
|  SourceArn  | 指用于检测的安全配置文件或用于审计的账户 ARN。 | 
|   `RoleArn`   |  指 Device Defender 尝试代入的角色。  | 
|   `TopicArn`   |  请参阅 Device Defender 尝试发布到的 SNS 主题。  | 
|   `Error`   | 简要描述在尝试发布到 SNS 主题时收到的错误。可能的值有：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/metrics_dimensions.html)  | 

# AWS IoT 使用 CloudWatch 日志进行监控
<a name="cloud-watch-logs"></a>

[启用AWS IoT 日志记录后，](configure-logging.md)当每条消息通过消息代理和规则引擎从您的设备传递时， AWS IoT 发送有关每条消息的进度事件。在[CloudWatch 控制台](https://console.aws.amazon.com/cloudwatch)中， CloudWatch 日志显示在名为 Logs 的**AWSIot日志**组中。

有关 CloudWatch 日志的更多信息，请参阅[CloudWatch 日志](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html)。有关支持的 AWS IoT CloudWatch 日志的信息，请参阅[CloudWatch 记录 AWS IoT 日志条目](cwl-format.md)。

## 在 CloudWatch 控制台中查看 AWS IoT 日志
<a name="viewing-logs"></a>

**注意**  
该`AWSIotLogsV2`日志组在 CloudWatch 控制台中不可见，直到：  
您已启用登录功能 AWS IoT。有关如何启用登录功能的更多信息 AWS IoT，请参阅 [配置 AWS IoT 日志](configure-logging.md) 
一些日志条目是由 AWS IoT 操作写入的。

**在 CloudWatch 控制台中查看您的 AWS IoT 日志**

1.  浏览到 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。在导航窗格中，选择**日志组**。

1. 在**筛选条件**文本框中，输入 **AWSIotLogsV2**，然后按 Enter。

1. 双击 `AWSIotLogsV2` 日志组。

1. 选择 **Search All**（搜索全部）。将显示为您的账户生成的 AWS IoT 日志的完整列表。

1. 选择展开图标可查看单个流。

您也可以在**筛选事件**文本框中输入查询。可以尝试以下受到较多关注的查询：
+  `{ $.logLevel = "INFO" }` 

   查找所有日志级别为 `INFO` 的日志。
+  `{ $.status = "Success" }` 

   查找所有状态为 `Success` 的日志。
+  `{ $.status = "Success" && $.eventType = "GetThingShadow" }` 

   查找所有状态为 `Success` 且事件类型为 `GetThingShadow` 的日志。

有关创建筛选表达式的更多信息，请参阅[CloudWatch 日志查询](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html)。

# CloudWatch 记录 AWS IoT 日志条目
<a name="cwl-format"></a>

的每个组件 AWS IoT 都会生成自己的日志条目。每个日志条目都有一个 `eventType` 指定导致生成日志条目的操作。本部分介绍以下 AWS IoT 组件所生成的日志条目。

**Topics**
+ [消息代理日志条目](#message-broker-logs)
+ [服务器证书 OCSP 日志条目](#server-ocsp-logs)
+ [设备影子日志条目](#device-shadow-logs)
+ [规则引擎日志条目](#rule-engine-logs)
+ [任务日志条目](#job-logs)
+ [设备预调配日志条目](#provision-logs)
+ [动态事物组日志条目](#dynamic-group-logs)
+ [实例集索引日志条目](#fleet-indexing-logs)
+ [常见 CloudWatch 日志属性](#cwl-common-attributes)

## 消息代理日志条目
<a name="message-broker-logs"></a>

 AWS IoT 消息代理生成以下事件的日志条目：

**Topics**
+ [Connect 日志条目](#log-mb-connect)
+ [Disconnect 日志条目](#log-mb-disconnect)
+ [DeleteConnection 日志条目](#log-mb-delete-connection)
+ [GetRetainedMessage 日志条目](#log-mb-get-retain)
+ [ListRetainedMessage 日志条目](#log-mb-list-retain)
+ [Publish-In 日志条目](#log-mb-publish-in)
+ [Publish-Out 日志条目](#log-mb-publish-out)
+ [排队的日志条目](#log-mb-queued)
+ [Subscribe 日志条目](#log-mb-subscribe)
+ [取消订阅日志条目](#log-mb-unsubscribe)

### Connect 日志条目
<a name="log-mb-connect"></a>

当 MQTT 客户端连接`Connect`时， AWS IoT 消息代理会生成一个带有`eventType`的日志条目。

#### Connect 日志条目示例
<a name="log-mb-connect.example"></a>

```
{
    "timestamp": "2017-08-10 15:37:23.476",
    "logLevel": "INFO",
    "traceId": "20b23f3f-d7f1-feae-169f-82263394fbdb",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "Connect",
    "protocol": "MQTT",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "sourceIp": "205.251.233.181",
    "sourcePort": 13490
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`Connect`日志条目还包含以下属性：

clientId  
发出请求的客户端的 ID。

principalId  
发出请求的委托人的 ID。

protocol  
用于提出请求的协议。有效值为 `MQTT` 或 `HTTP`。

sourceIp  
请求的源 IP 地址。

sourcePort  
请求的源端口。

### Disconnect 日志条目
<a name="log-mb-disconnect"></a>

当 MQTT 客户端断开连接`Disconnect`时， AWS IoT 消息代理会生成一个带有`eventType`的日志条目。

#### Disconnect 日志条目示例
<a name="log-mb-disconnect.example"></a>

```
{
    "timestamp": "2017-08-10 15:37:23.476",
    "logLevel": "INFO",
    "traceId": "20b23f3f-d7f1-feae-169f-82263394fbdb",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "Disconnect",
    "protocol": "MQTT",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "sourceIp": "205.251.233.181",
    "sourcePort": 13490,
    "reason": "DUPLICATE_CLIENT_ID",
    "details": "A new connection was established with the same client ID",
    "disconnectReason": "CLIENT_INITIATED_DISCONNECT"
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`Disconnect`日志条目还包含以下属性：

clientId  
发出请求的客户端的 ID。

principalId  
发出请求的委托人的 ID。

protocol  
用于提出请求的协议。有效值为 `MQTT` 或 `HTTP`。

sourceIp  
请求的源 IP 地址。

sourcePort  
请求的源端口。

reason  
客户端断开连接的原因。

details  
错误的简要说明。

disconnectReason  
客户端断开连接的原因。

### DeleteConnection 日志条目
<a name="log-mb-delete-connection"></a>

删除 MQTT 客户端连接`DeleteConnection`时， AWS IoT 消息代理会生成一个带有`eventType`的日志条目。

#### DeleteConnection 日志条目示例
<a name="log-mb-delete-connection.example"></a>

```
{
    "timestamp": "2025-08-09 15:37:23.476",
    "logLevel": "INFO",
    "traceId": "20b23f3f-d7f1-feae-169f-82263394fbdb",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "DeleteConnection",
    "protocol": "HTTP",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "sourceIp": "205.251.233.181",
    "sourcePort": 13490
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`DeleteConnection`日志条目还包含以下属性：

clientId  
将被断开连接的客户端的 ID。

principalId  
发出请求的委托人的 ID。有关如何使用主体 ID 识别主体的信息，请参阅*《IAM 用户指南》*中的[比较 IAM 身份和凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_identity-management.html)。

protocol  
用于提出请求的协议。有效值为 `HTTP`。

sourceIp  
请求的源 IP 地址。

sourcePort  
请求的源端口。

### GetRetainedMessage 日志条目
<a name="log-mb-get-retain"></a>

 AWS IoT 消息代理生成一个日志条目，`eventType`其中包含`GetRetainedMessage`何时[https://docs.aws.amazon.com//iot/latest/developerguide/API_iotdata_GetRetainedMessage.html](https://docs.aws.amazon.com//iot/latest/developerguide/API_iotdata_GetRetainedMessage.html)被调用。

#### GetRetainedMessage 日志条目示例
<a name="log-mb-get-retain-example"></a>

```
{
    "timestamp": "2017-08-07 18:47:56.664", 
    "logLevel": "INFO", 
    "traceId": "1a60d02e-15b9-605b-7096-a9f584a6ad3f", 
    "accountId": "123456789012", 
    "status": "Success", 
    "eventType": "GetRetainedMessage", 
    "protocol": "HTTP",
    "topicName": "a/b/c",
    "qos": "1",
    "lastModifiedDate": "2017-08-07 18:47:56.664"
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`GetRetainedMessage`日志条目还包含以下属性：

lastModifiedDate  
存储保留消息的 Epoch 日期和时间（以毫秒为单位）。 AWS IoT

protocol  
用于提出请求的协议。有效值：`HTTP`。

qos  
发布请求中使用的服务质量（QoS）级别。有效值为 `0` 或 `1`。

topicName  
已订阅主题的名称。

### ListRetainedMessage 日志条目
<a name="log-mb-list-retain"></a>

 AWS IoT 消息代理生成一个日志条目，`eventType`其中包含`ListRetainedMessage`何时[/iot/latest/developerguide/API_iotdata_ListRetainedMessages.html](/iot/latest/developerguide/API_iotdata_ListRetainedMessages.html)被调用。

#### ListRetainedMessage 日志条目示例
<a name="log-mb-list-retain-example"></a>

```
{
    "timestamp": "2017-08-07 18:47:56.664", 
    "logLevel": "INFO", 
    "traceId": "1a60d02e-15b9-605b-7096-a9f584a6ad3f", 
    "accountId": "123456789012", 
    "status": "Success", 
    "eventType": "ListRetainedMessage", 
    "protocol": "HTTP"
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`ListRetainedMessage`日志条目还包含以下属性：

protocol  
用于提出请求的协议。有效值：`HTTP`。

### Publish-In 日志条目
<a name="log-mb-publish-in"></a>

当 AWS IoT 消息代理收到 MQTT 消息时，它会生成一个带有为`eventType`的`Publish-In`日志条目。

#### Publish-In 日志条目示例
<a name="log-mb-publish-in.example"></a>

```
{
        "timestamp": "2017-08-10 15:39:30.961",
        "logLevel": "INFO",
        "traceId": "672ec480-31ce-fd8b-b5fb-22e3ac420699",
        "accountId": "123456789012",
        "status": "Success",
        "eventType": "Publish-In",
        "protocol": "MQTT",
        "topicName": "$aws/things/MyThing/shadow/get",
        "clientId": "abf27092886e49a8a5c1922749736453",
        "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
        "sourceIp": "205.251.233.181",
        "sourcePort": 13490,
        "retain": "True"
    }
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`Publish-In`日志条目还包含以下属性：

clientId  
发出请求的客户端的 ID。

principalId  
发出请求的委托人的 ID。

protocol  
用于提出请求的协议。有效值为 `MQTT` 或 `HTTP`。

保留  
当消息的 REATIN 标志的值设置为 `True` 时使用的属性。如果消息未设置 REATIN 标志，则该属性不会显示在日志条目中。有关更多信息，请参阅 [MQTT 保留消息](mqtt.md#mqtt-retain)。

sourceIp  
请求的源 IP 地址。

sourcePort  
请求的源端口。

topicName  
已订阅主题的名称。

### Publish-Out 日志条目
<a name="log-mb-publish-out"></a>

当消息代理发布 MQTT 消息时，它会生成一个 `eventType` 为 `Publish-Out` 的日志条目 

#### Publish-Out 日志条目示例
<a name="log-mb-publish-out.example"></a>

```
{
    "timestamp": "2017-08-10 15:39:30.961",
    "logLevel": "INFO",
    "traceId": "672ec480-31ce-fd8b-b5fb-22e3ac420699",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "Publish-Out",
    "protocol": "MQTT",
    "topicName": "$aws/things/MyThing/shadow/get",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "sourceIp": "205.251.233.181",
    "sourcePort": 13490
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`Publish-Out`日志条目还包含以下属性：

clientId  
接收有关该 MQTT 主题的消息的订阅客户端的 ID。

principalId  
发出请求的委托人的 ID。

protocol  
用于提出请求的协议。有效值为 `MQTT` 或 `HTTP`。

sourceIp  
请求的源 IP 地址。

sourcePort  
请求的源端口。

topicName  
已订阅主题的名称。

### 排队的日志条目
<a name="log-mb-queued"></a>

当具有持续会话的设备断开连接时，MQTT 消息代理会存储该设备的消息，并 AWS IoT 生成事件类型为 EventType 的日志条目。`Queued`有关 MQTT 持久会话的更多信息，请参阅[MQTT 持久会话](mqtt.md#mqtt-persistent-sessions)。

#### 排队的服务器错误日志条目示例
<a name="log-mb-queued.server-error.example"></a>

```
{
    "timestamp": "2022-08-10 15:39:30.961",
    "logLevel": "ERROR",
    "traceId": "672ec480-31ce-fd8b-b5fb-22e3ac420699",
    "accountId": "123456789012",
    "topicName": "$aws/things/MyThing/get",
    "clientId": "123123123",
    "qos": "1",
    "protocol": "MQTT",
    "eventType": "Queued",
    "status": "Failure",
    "details": "Server Error"
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`Queued`服务器错误日志条目还包含以下属性：

clientId  
消息排队的客户端的 ID。

details  
**`Server Error`**  
服务器错误导致无法存储消息。

protocol  
用于提出请求的协议。该值始终为 `MQTT`。

qos  
请求的服务质量（QoS）级别。该值将始终为 1，因为不存储 QoS 为 0 的消息。

topicName  
已订阅主题的名称。

#### 排队的成功日志条目示例
<a name="log-mb-queued.success.example"></a>

```
{
    "timestamp": "2022-08-10 15:39:30.961",
    "logLevel": "INFO",
    "traceId": "672ec480-31ce-fd8b-b5fb-22e3ac420699",
    "accountId": "123456789012",
    "topicName": "$aws/things/MyThing/get",
    "clientId": "123123123",
    "qos": "1",
    "protocol": "MQTT",
    "eventType": "Queued",
    "status": "Success"
}
```

除此之外[常见 CloudWatch 日志属性](#cwl-common-attributes)，`Queued`成功日志条目还包含以下属性：

clientId  
消息排队的客户端的 ID。

protocol  
用于提出请求的协议。该值始终为 `MQTT`。

qos  
请求的服务质量（QoS）级别。该值将始终为 1，因为不存储 QoS 为 0 的消息。

topicName  
已订阅主题的名称。

#### 排队的限制日志条目示例
<a name="log-mb-queued.throttled.example"></a>

```
{
    "timestamp": "2022-08-10 15:39:30.961",
    "logLevel": "ERROR",
    "traceId": "672ec480-31ce-fd8b-b5fb-22e3ac420699",
    "accountId": "123456789012",
    "topicName": "$aws/things/MyThing/get",
    "clientId": "123123123",
    "qos": "1",
    "protocol": "MQTT",
    "eventType": "Queued",
    "status": "Failure",
    "details": "Throttled while queueing offline message"
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，受`Queued`限制的日志条目还包含以下属性：

clientId  
消息排队的客户端的 ID。

details  
**`Throttled while queueing offline message`**  
客户端超出了 ` [Queued messages per second per account](https://docs.aws.amazon.com//general/latest/gr/iot-core.html#genref_queued_messages_per_second_per_account) ` 限制，因此未存储消息。

protocol  
用于提出请求的协议。该值始终为 `MQTT`。

qos  
请求的服务质量（QoS）级别。该值将始终为 1，因为不存储 QoS 为 0 的消息。

topicName  
已订阅主题的名称。

### Subscribe 日志条目
<a name="log-mb-subscribe"></a>

当 MQTT 客户端订阅主题`Subscribe`时， AWS IoT 消息代理会生成一个`eventType`带有的日志条目。

#### MQTT 3 订阅日志条目示例
<a name="log-mb-connect.example.subscribe"></a>

```
{
    "timestamp": "2017-08-10 15:39:04.413",
    "logLevel": "INFO",
    "traceId": "7aa5c38d-1b49-3753-15dc-513ce4ab9fa6",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "Subscribe",
    "protocol": "MQTT",
    "topicName": "$aws/things/MyThing/shadow/#",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "sourceIp": "205.251.233.181",
    "sourcePort": 13490
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`Subscribe`日志条目还包含以下属性：

clientId  
发出请求的客户端的 ID。

principalId  
发出请求的委托人的 ID。

protocol  
用于提出请求的协议。该值始终为 `MQTT`。

sourceIp  
请求的源 IP 地址。

sourcePort  
请求的源端口。

topicName  
已订阅主题的名称。

#### MQTT 5 订阅日志条目示例
<a name="log-mb-connect.example.subscribe.mqtt5"></a>

```
{
	"timestamp": "2022-11-30 16:24:15.628",
	"logLevel": "INFO",
	"traceId": "7aa5c38d-1b49-3753-15dc-513ce4ab9fa6",
	"accountId": "123456789012",
	"status": "Success",
	"eventType": "Subscribe",
	"protocol": "MQTT",
	"topicName": "test/topic1,$invalid/reserved/topic",
	"subscriptions": [
		{
			"topicName": "test/topic1",
			"reasonCode": 1
		},
		{
			"topicName": "$invalid/reserved/topic",
			"reasonCode": 143
		}
	],
	"clientId": "abf27092886e49a8a5c1922749736453",
	"principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
	"sourceIp": "205.251.233.181",
	"sourcePort": 13490
}
```

对于 MQTT 5 订阅操作，除了 [常见 CloudWatch 日志属性](#cwl-common-attributes) 和 [MQTT 3 订阅日志条目属性](#log-mb-connect.example.subscribe)外，MQTT 5 `Subscribe` 日志条目还包含以下属性：

订阅  
订阅请求中的已请求主题与各个 MQTT 5 原因代码之间的映射列表。有关更多信息，请参阅 [MQTT 原因代码](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html#mqtt5-reason-codes)。

### 取消订阅日志条目
<a name="log-mb-unsubscribe"></a>

当 MQTT 客户端取消订阅 MQTT `eventType` 主题`Unsubscribe`时， AWS IoT 消息代理会生成一个带有的日志条目。

#### MQTT 3 取消订阅日志条目示例
<a name="log-mb-connect.example.unsubscribe"></a>

```
{
    "timestamp": "2024-08-20 22:53:32.844",
    "logLevel": "INFO",
    "traceId": "db6bd09a-2c3f-1cd2-27cc-fd6b1ce03b58",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "Unsubscribe",
    "protocol": "MQTT",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "sourceIp": "205.251.233.181",
    "sourcePort": 13490
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`Unsubscribe`日志条目还包含以下属性：

protocol  
用于提出请求的协议。该值始终为 `MQTT`。

clientId  
发出请求的客户端的 ID。

principalId  
发出请求的委托人的 ID。

sourceIp  
请求的源 IP 地址。

sourcePort  
请求的源端口。

## 服务器证书 OCSP 日志条目
<a name="server-ocsp-logs"></a>

AWS IoT Core 为以下事件生成日志条目：

**Topics**
+ [检索OCSPStaple数据记录条目](#log-retrieve-ocsp-staple)
+ [检索私有端点OCSPStaple的数据日志条目](#log-retrieve-ocsp-staple-private-endpoint)

### 检索OCSPStaple数据记录条目
<a name="log-retrieve-ocsp-staple"></a>

AWS IoT Core 当服务器检索 OCSP 装订数据`RetrieveOCSPStapleData`时，会生成一个`eventType`带有的日志条目。

#### 检索OCSPStaple数据记录条目示例
<a name="log-retrieve-ocsp-staple.example"></a>

以下是 `Success` 示例日志条目。

```
{
	"timestamp": "2024-01-30 15:39:30.961",
	"logLevel": "INFO",
	"traceId": "180532b7-0cc7-057b-687a-5ca1824838f5",
	"accountId": "123456789012",
	"status": "Success",
	"eventType": "RetrieveOCSPStapleData",
	"domainConfigName": "test-domain-config-name",
	"connectionDetails": {
		"httpStatusCode": "200",
		"ocspResponderUri": "http://ocsp.example.com",
		"sourceIp": "205.251.233.181",
		"targetIp": "250.15.5.3"
	},
	"ocspRequestDetails": {
		"requesterName": "iot.amazonaws.com",
		"requestCertId": "30:3A:30:09:06:05:2B:0E:03:02:1A:05:00:04:14:9C:FF:90:A1:97:B0:4D:6C:01:B9:69:96:D8:3E:E7:A2:51:7F:30:C4:04:14:7C:84:78:AE:12:58:71:38:0C:65:FC:17:77:7D:14:DD:69:73:71:46:02:01:01"
	},
	"ocspResponseDetails": {
		"responseCertId": "30:3A:30:09:06:05:2B:0E:03:02:1A:05:00:04:14:9C:FF:90:A1:97:B0:4D:6C:01:B9:69:96:D8:3E:E7:A2:51:7F:30:C4:04:14:7C:84:78:AE:12:58:71:38:0C:65:FC:17:77:7D:14:DD:69:73:71:46:02:01:01",
		"ocspResponseStatus": "successful",
		"certStatus": "good",
		"signature": "4C:6F:63:61:6C:20:52:65:73:70:6F:6E:64:65:72:20:53:69:67:6E:61:74:75:72:65",
		"thisUpdateTime": "Jan 31 01:21:02 2024 UTC",
		"nextUpdateTime": "Feb 02 00:21:02 2024 UTC",
		"producedAtTime": "Jan 31 01:37:03 2024 UTC",
		"stapledDataPayloadSize": "XXX"
	}
}
```

以下是 `Failure` 示例日志条目。

```
{
	"timestamp": "2024-01-30 15:39:30.961",
	"logLevel": "ERROR",
	"traceId": "180532b7-0cc7-057b-687a-5ca1824838f5",
	"accountId": "123456789012",
	"status": "Failure",
	"reason": "A non 2xx HTTP response was received from the OCSP responder.",
	"eventType": "RetrieveOCSPStapleData",
	"domainConfigName": "test-domain-config-name",
	"connectionDetails": {
		"httpStatusCode": "444",
		"ocspResponderUri": "http://ocsp.example.com",
		"sourceIp": "205.251.233.181",
		"targetIp": "250.15.5.3"
	},
	"ocspRequestDetails": {
		"requesterName": "iot.amazonaws.com",
		"requestCertId": "30:3A:30:09:06:05:2B:0E:03:02:1A:05:00:04:14:9C:FF:90:A1:97:B0:4D:6C:01:B9:69:96:D8:3E:E7:A2:51:7F:30:C4:04:14:7C:84:78:AE:12:58:71:38:0C:65:FC:17:77:7D:14:DD:69:73:71:46:02:01:01"
	}
}
```

对于该`RetrieveOCSPStaple`操作，除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，日志条目还包含以下属性：

reason  
操作失败的原因。

domainConfigName  
域配置的名称。

connectionDetails  
连接详情的简要说明。  
+ httpStatusCode

  OCSP 响应程序为响应客户端向服务器发出的请求而返回的 HTTP 状态码。
+ ocspResponderUri

  从服务器证书中 AWS IoT Core 获取的 OCSP 响应器 URI。
+ sourceIp

   AWS IoT Core 服务器的源 IP 地址。
+ targetIp

  OCSP 响应程序的目标 IP 地址。

ocspRequestDetails  
OCSP 请求的详细信息。  
+ requesterName

  向 OCSP 响应者发送请求的 AWS IoT Core 服务器的标识符。
+ requestCertId

  请求的证书 ID。这是正在请求 OCSP 响应的证书的 ID。

ocspResponseDetails  
OCSP 响应的详细信息。  
+ responseCertId

  OCSP 响应的证书 ID。
+ ocspResponseStatus

  OCSP 响应的状态。
+ certStatus

  证书的状态。
+ signature

  可信实体应用于响应的签名。
+ thisUpdateTime

  已知所指示状态正确的时间。
+ nextUpdateTime

  在此时间或此时间之前，将提供有关证书状态的更新的信息。
+ producedAtTime

  OCSP 响应程序签署此响应的时间。
+ stapledDataPayload大小

  已绑定数据的有效载荷大小。

### 检索私有端点OCSPStaple的数据日志条目
<a name="log-retrieve-ocsp-staple-private-endpoint"></a>

AWS IoT Core 当服务器检索 OCSP 装订数据`RetrieveOCSPStapleData`时，会生成一个`eventType`带有的日志条目。

#### 检索私有端点OCSPStaple的数据日志条目示例
<a name="log-retrieve-ocsp-staple-private-endpoint.example"></a>

以下是 `Success` 示例日志条目。

```
{
	"timestamp": "2024-01-30 15:39:30.961",
	"logLevel": "INFO",
	"traceId": "180532b7-0cc7-057b-687a-5ca1824838f5",
	"accountId": "123456789012",
	"status": "Success",
	"eventType": "RetrieveOCSPStapleData",
	"domainConfigName": "test-domain-config-name",
        "lambdaDetails": {
        "lambdaArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function",
        "sourceArn": "arn:aws:iot:us-west-2:123456789012:domainconfiguration/testDomainConfigure/6bzfg"
      },
        "authorizedResponderArn": "arn:aws:acm:us-west-2:123456789012:certificate/certificate_ID",
	"ocspRequestDetails": {
		"requesterName": "iot.amazonaws.com",
		"requestCertId": "30:3A:30:09:06:05:2B:0E:03:02:1A:05:00:04:14:9C:FF:90:A1:97:B0:4D:6C:01:B9:69:96:D8:3E:E7:A2:51:7F:30:C4:04:14:7C:84:78:AE:12:58:71:38:0C:65:FC:17:77:7D:14:DD:69:73:71:46:02:01:01"
	},
	"ocspResponseDetails": {
		"responderId": "04:C1:3F:8F:27:D6:49:13:F8:DE:B2:36:9D:85:8E:F8:31:3B:A6:D0"
               "responseCertId": "30:3A:30:09:06:05:2B:0E:03:02:1A:05:00:04:14:9C:FF:90:A1:97:B0:4D:6C:01:B9:69:96:D8:3E:E7:A2:51:7F:30:C4:04:14:7C:84:78:AE:12:58:71:38:0C:65:FC:17:77:7D:14:DD:69:73:71:46:02:01:01",
		"ocspResponseStatus": "successful",
		"certStatus": "good",
		"signature": "4C:6F:63:61:6C:20:52:65:73:70:6F:6E:64:65:72:20:53:69:67:6E:61:74:75:72:65",
		"thisUpdateTime": "Jan 31 01:21:02 2024 UTC",
		"nextUpdateTime": "Feb 02 00:21:02 2024 UTC",
		"producedAtTime": "Jan 31 01:37:03 2024 UTC",
		"stapledDataPayloadSize": "XXX"
	}
}
```

以下是 `Failure` 示例日志条目。

```
{
	"timestamp": "2024-01-30 15:39:30.961",
	"logLevel": "ERROR",
	"traceId": "180532b7-0cc7-057b-687a-5ca1824838f5",
	"accountId": "123456789012",
	"status": "Failure",
	"reason": "The payload returned by the Lambda function exceeds the maximum response size of 7 kilobytes.",
	"eventType": "RetrieveOCSPStapleData",
	"domainConfigName": "test-domain-config-name",
        "lambdaDetails": {
        "lambdaArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function",
        "sourceArn": "arn:aws:iot:us-west-2:123456789012:domainconfiguration/testDomainConfigure/6bzfg"
      },
        "authorizedResponderArn": "arn:aws:acm:us-west-2:123456789012:certificate/certificate_ID",
	 "ocspRequestDetails": {
		"requesterName": "iot.amazonaws.com",
		"requestCertId": "30:3A:30:09:06:05:2B:0E:03:02:1A:05:00:04:14:9C:FF:90:A1:97:B0:4D:6C:01:B9:69:96:D8:3E:E7:A2:51:7F:30:C4:04:14:7C:84:78:AE:12:58:71:38:0C:65:FC:17:77:7D:14:DD:69:73:71:46:02:01:01"
	}
}
```

对于该`RetrieveOCSPStaple`操作，除了[检索OCSPStaple数据日志条目](https://docs.aws.amazon.com//iot/latest/developerguide/cwl-format.html#log-retrieve-ocsp-staple)中的[常见 CloudWatch 日志属性](#cwl-common-attributes)和属性外，私有终端节点的日志条目还包含以下属性：

lambdaDetails  
Lambda 函数的详细信息。  
+ lambdaArn

  Lambda 函数的 ARN。
+ sourceArn

  域配置的 ARN。

authorizedResponderArn  
如果在域配置中配置了授权响应者，则为其 ARN。

## 设备影子日志条目
<a name="device-shadow-logs"></a>

 AWS IoT Device Shadow 服务会为以下事件生成日志条目：

**Topics**
+ [DeleteThingShadow 日志条目](#log-shadow-delete-thing-shadow)
+ [GetThingShadow 日志条目](#log-shadow-get-thing-shadow)
+ [UpdateThingShadow 日志条目](#log-shadow-update-thing-shadow)

### DeleteThingShadow 日志条目
<a name="log-shadow-delete-thing-shadow"></a>

当收到删除设备影子的请求时，Device Shadow 服务会生成一个 `eventType` 为 `DeleteThingShadow` 的日志条目。

#### DeleteThingShadow 日志条目示例
<a name="log-shadow-delete-thing-shadow.example"></a>

```
{
    "timestamp": "2017-08-07 18:47:56.664",
    "logLevel": "INFO",
    "traceId": "1a60d02e-15b9-605b-7096-a9f584a6ad3f",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "DeleteThingShadow",
    "protocol": "MQTT",
    "deviceShadowName": "Jack",
    "topicName": "$aws/things/Jack/shadow/delete"
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`DeleteThingShadow`日志条目还包含以下属性：

deviceShadowName  
要更新的影子的名称。

protocol  
用于提出请求的协议。有效值为 `MQTT` 或 `HTTP`。

topicName  
发布请求时所基于的主题的名称。

### GetThingShadow 日志条目
<a name="log-shadow-get-thing-shadow"></a>

当收到影子的获取请求时，Device Shadow 服务会生成一个 `eventType` 为 `GetThingShadow` 的日志条目。

#### GetThingShadow 日志条目示例
<a name="log-shadow-get-thing-shadow.example"></a>

```
{
    "timestamp": "2017-08-09 17:56:30.941",
    "logLevel": "INFO",
    "traceId": "b575f19a-97a2-cf72-0ed0-c64a783a2504",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "GetThingShadow",
    "protocol": "MQTT",
    "deviceShadowName": "MyThing",
    "topicName": "$aws/things/MyThing/shadow/get"
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`GetThingShadow`日志条目还包含以下属性：

deviceShadowName  
所请求的影子的名称。

protocol  
用于提出请求的协议。有效值为 `MQTT` 或 `HTTP`。

topicName  
发布请求时所基于的主题的名称。

### UpdateThingShadow 日志条目
<a name="log-shadow-update-thing-shadow"></a>

当收到更新设备影子的请求时，Device Shadow 服务会生成一个 `eventType` 为 `UpdateThingShadow` 的日志条目。

#### UpdateThingShadow 日志条目示例
<a name="log-shadow-update-thing-shadow.example"></a>

```
{
    "timestamp": "2017-08-07 18:43:59.436",
    "logLevel": "INFO",
    "traceId": "d0074ba8-0c4b-a400-69df-76326d414c28",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "UpdateThingShadow",
    "protocol": "MQTT",
    "deviceShadowName": "Jack",
    "topicName": "$aws/things/Jack/shadow/update"
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`UpdateThingShadow`日志条目还包含以下属性：

deviceShadowName  
要更新的影子的名称。

protocol  
用于提出请求的协议。有效值为 `MQTT` 或 `HTTP`。

topicName  
发布请求时所基于的主题的名称。

## 规则引擎日志条目
<a name="rule-engine-logs"></a>

 AWS IoT 规则引擎为以下事件生成日志：

**Topics**
+ [FunctionExecution 日志条目](#log-rules-fn-exec)
+ [RuleExecution 日志条目](#log-rules-rule-ex)
+ [RuleMatch 日志条目](#log-rules-rule-match)
+ [RuleExecutionThrottled 日志条目](#log-rules-rule-msg-throttled)
+ [RuleNotFound 日志条目](#log-rules-rule-not-found)
+ [StartingRuleExecution 日志条目](#log-rules-start-rule-ex)

### FunctionExecution 日志条目
<a name="log-rules-fn-exec"></a>

当规则的 SQL 查询调用外部函数时，规则引擎会生成一个 `eventType` 为 `FunctionExecution` 的日志条目。当规则的操作向或其他 Web 服务发出 HTTP 请求（例如，调用 AWS IoT `get_thing_shadow`或`machinelearning_predict`）时，就会调用外部函数。

#### FunctionExecution 日志条目示例
<a name="log-rules-fn-exec.example"></a>

```
{
    "timestamp": "2017-07-13 18:33:51.903",
    "logLevel": "DEBUG",
    "traceId": "180532b7-0cc7-057b-687a-5ca1824838f5",
    "status": "Success",
    "eventType": "FunctionExecution",
    "clientId": "N/A",
    "topicName":"rules/test",
    "ruleName": "ruleTestPredict",
    "ruleAction": "MachinelearningPredict",
    "resources": {
        "ModelId": "predict-model"
    },
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167"
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`FunctionExecution`日志条目还包含以下属性：

clientId  
 `N/A`（针对 `FunctionExecution` 日志）。

principalId  
发出请求的委托人的 ID。

资源  
规则的操作所使用的资源的集合。

ruleName  
匹配规则的名称。

topicName  
已订阅主题的名称。

### RuleExecution 日志条目
<a name="log-rules-rule-ex"></a>

当 AWS IoT 规则引擎触发规则的操作时，它会生成一个`RuleExecution`日志条目。

#### RuleExecution 日志条目示例
<a name="log-rules-rule-ex.example"></a>

```
{
    "timestamp": "2017-08-10 16:32:46.070",
    "logLevel": "INFO",
    "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "RuleExecution",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "topicName": "rules/test",
    "ruleName": "JSONLogsRule",
    "ruleAction": "RepublishAction",
    "resources": {
        "RepublishTopic": "rules/republish"
    },
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167"
}
```

#### RuleExecution 带有批处理日志条目示例
<a name="log-rules-rule-ex-batching.example"></a>

```
{
    "logLevel": "INFO",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "RuleExecution",
    "ruleName": "rule_test",
    "ruleAction": "HttpAction",
    "resources": {
        "Url": "https://example.com",
        "ConfirmationUrl": "https://example.com"
    },
    "details": "HttpAction made a request to the specified endpoint",
    "batchDetails": {
        "timestamps": [
            "1234567890123",
            "1234567890123",
            "1234567890123"
        ],
        "traceIds": [
            "30aa7ccc-1d23-0b97-aa7b-76196d83537e",
            "30aa7ccc-1d23-0b97-aa7b-76196d83537c",
            "30aa7ccc-1d23-0b97-aa7b-76196d83537d"
        ],
        "clientIds": [
            "N/A",
            "N/A",
            "N/A"
        ],
        "topicNames": [
            "topic/ruletest",
            "topic/ruletest",
            "topic/ruletest"
        ],
        "principalIds": [
            "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
            "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
            "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167"
        ],
        "batchSize": 3,
        "batchSizeInBytes": 114
    }
}
```

除了 [常见 CloudWatch 日志属性](#cwl-common-attributes) 之外，`RuleExecution` 日志条目还包含以下属性：

clientId  
发出请求的客户端的 ID。

principalId  
发出请求的委托人的 ID。

资源  
规则的操作所使用的资源的集合。

ruleAction  
所触发的操作的名称。

ruleName  
匹配规则的名称。

topicName  
已订阅主题的名称。

### RuleMatch 日志条目
<a name="log-rules-rule-match"></a>

当消息代理收到与 AWS IoT 规则匹配`eventType`的消息`RuleMatch`时，规则引擎会生成一个带有的日志条目。

#### RuleMatch 日志条目示例
<a name="log-rules-rule-match.example"></a>

```
{
    "timestamp": "2017-08-10 16:32:46.002",
    "logLevel": "INFO",
    "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "RuleMatch",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "topicName": "rules/test",
    "ruleName": "JSONLogsRule",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167"
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`RuleMatch`日志条目还包含以下属性：

clientId  
发出请求的客户端的 ID。

principalId  
发出请求的委托人的 ID。

ruleName  
匹配规则的名称。

topicName  
已订阅主题的名称。

### RuleExecutionThrottled 日志条目
<a name="log-rules-rule-msg-throttled"></a>

当执行受到限制时， AWS IoT 规则引擎会生成一个`eventType`带有为的日志条目。`RuleExecutionThrottled`

#### RuleExecutionThrottled 日志条目示例
<a name="log-rules-rule-msg-throttled.example"></a>

```
{
    "timestamp": "2017-10-04 19:25:46.070",
    "logLevel": "ERROR",
    "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e",
    "accountId": "123456789012",
    "status": "Failure",
    "eventType": "RuleExecutionThrottled",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "topicName": "$aws/rules/example_rule",
    "ruleName": "example_rule",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "reason": "RuleExecutionThrottled",
    "details": "Exection of Rule example_rule throttled"
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`RuleExecutionThrottled`日志条目还包含以下属性：

clientId  
发出请求的客户端的 ID。

details  
错误的简要说明。

principalId  
发出请求的委托人的 ID。

reason  
字符串 “RuleExecutionThrottled”。

ruleName  
要触发的规则的名称。

topicName  
已发布的主题的名称。

### RuleNotFound 日志条目
<a name="log-rules-rule-not-found"></a>

当 AWS IoT 规则引擎找不到具有给定名称的规则时，它会生成一个带有 of `eventType` 的日志条目`RuleNotFound`。

#### RuleNotFound 日志条目示例
<a name="log-rules-rule-not-found.example"></a>

```
{
    "timestamp": "2017-10-04 19:25:46.070",
    "logLevel": "ERROR",
    "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e",
    "accountId": "123456789012",
    "status": "Failure",
    "eventType": "RuleNotFound",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "topicName": "$aws/rules/example_rule",
    "ruleName": "example_rule",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167",
    "reason": "RuleNotFound",
    "details": "Rule example_rule not found"
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`RuleNotFound`日志条目还包含以下属性：

clientId  
发出请求的客户端的 ID。

details  
错误的简要说明。

principalId  
发出请求的委托人的 ID。

reason  
字符串 “RuleNotFound”。

ruleName  
找不到的规则的名称。

topicName  
已发布的主题的名称。

### StartingRuleExecution 日志条目
<a name="log-rules-start-rule-ex"></a>

当 AWS IoT 规则引擎开始触发规则的操作时，它会生成一个带为`eventType`的日志条目`StartingRuleExecution`。

#### StartingRuleExecution 日志条目示例
<a name="log-rules-start-rule-ex.example"></a>

```
{
    "timestamp": "2017-08-10 16:32:46.002",
    "logLevel": "DEBUG",
    "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "StartingRuleExecution",
    "clientId": "abf27092886e49a8a5c1922749736453",
    "topicName": "rules/test",
    "ruleName": "JSONLogsRule",
    "ruleAction": "RepublishAction",
    "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167"
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`rule-`日志条目还包含以下属性：

clientId  
发出请求的客户端的 ID。

principalId  
发出请求的委托人的 ID。

ruleAction  
所触发的操作的名称。

ruleName  
匹配规则的名称。

topicName  
已订阅主题的名称。

## 任务日志条目
<a name="job-logs"></a>

 AWS IoT Job 服务为以下事件生成日志条目。当从设备收到 MQTT 或 HTTP 请求时，将生成日志条目。

**Topics**
+ [DescribeJobExecution 日志条目](#log-job-describe-job-ex)
+ [GetPendingJobExecution 日志条目](#log-job-get-pending-job-ex)
+ [ReportFinalJobExecutionCount 日志条目](#log-job-report-final-job-ex-count)
+ [StartNextPendingJobExecution 日志条目](#log-job-start-next-pending-job-ex)
+ [UpdateJobExecution 日志条目](#log-job-update-job-ex)

### DescribeJobExecution 日志条目
<a name="log-job-describe-job-ex"></a>

当服务收到描述 AWS IoT 任务执行`eventType`的请求`DescribeJobExecution`时，该服务会生成一个带有的日志条目。

#### DescribeJobExecution 日志条目示例
<a name="log-job-describe-job-ex.example"></a>

```
{
    "timestamp": "2017-08-10 19:13:22.841",
    "logLevel": "DEBUG",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "DescribeJobExecution",
    "protocol": "MQTT",
    "clientId": "thingOne",
    "jobId": "002",
    "topicName": "$aws/things/thingOne/jobs/002/get",
    "clientToken": "myToken",
    "details": "The request status is SUCCESS."
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`GetJobExecution`日志条目还包含以下属性：

clientId  
发出请求的客户端的 ID。

clientToken  
用于确保请求幂等性的唯一、区分大小写的标识符。有关更多信息，请参阅[如何确保幂等性](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)。

details  
来自 Jobs 服务的其它信息。

 jobId  
任务执行的任务 ID。

protocol  
用于提出请求的协议。有效值为 `MQTT` 或 `HTTP`。

topicName  
发出请求所使用的主题。

### GetPendingJobExecution 日志条目
<a name="log-job-get-pending-job-ex"></a>

当服务收到 AWS IoT 任务执行请求`GetPendingJobExecution`时，该服务会生成一个`eventType`带有的日志条目。

#### GetPendingJobExecution 日志条目示例
<a name="log-job-get-pending-job-ex.example"></a>

```
{
    "timestamp": "2018-06-13 17:45:17.197",
    "logLevel": "DEBUG",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "GetPendingJobExecution",
    "protocol": "MQTT",
    "clientId": "299966ad-54de-40b4-99d3-4fc8b52da0c5",
    "topicName": "$aws/things/299966ad-54de-40b4-99d3-4fc8b52da0c5/jobs/get",
    "clientToken": "24b9a741-15a7-44fc-bd3c-1ff2e34e5e82",
    "details": "The request status is SUCCESS."
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`GetPendingJobExecution`日志条目还包含以下属性：

clientId  
发出请求的客户端的 ID。

clientToken  
用于确保请求幂等性的唯一、区分大小写的标识符。有关更多信息，请参阅[如何确保幂等性](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)。

details  
来自 Jobs 服务的其它信息。

protocol  
用于提出请求的协议。有效值为 `MQTT` 或 `HTTP`。

topicName  
已订阅主题的名称。

### ReportFinalJobExecutionCount 日志条目
<a name="log-job-report-final-job-ex-count"></a>

 AWS IoT 作业完成`ReportFinalJobExecutionCount`后，作业服务会生成一个带有 “” `entryType` 的日志条目。

#### ReportFinalJobExecutionCount 日志条目示例
<a name="log-job-report-final-job-ex-count.example"></a>

```
{
    "timestamp": "2017-08-10 19:44:16.776",
    "logLevel": "INFO",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "ReportFinalJobExecutionCount",
    "jobId": "002",
    "details": "Job 002 completed. QUEUED job execution count: 0 IN_PROGRESS job execution count: 0 FAILED job execution count: 0 SUCCEEDED job execution count: 1 CANCELED job execution count: 0 REJECTED job execution count: 0 REMOVED job execution count: 0"
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`ReportFinalJobExecutionCount`日志条目还包含以下属性：

details  
来自 Jobs 服务的其它信息。

 jobId  
任务执行的任务 ID。

### StartNextPendingJobExecution 日志条目
<a name="log-job-start-next-pending-job-ex"></a>

当它收到开始下一个待处理的任务执行的请求时， AWS IoT 作业服务会生成一个带有为`eventType`的日志条目`StartNextPendingJobExecution`。

#### StartNextPendingJobExecution 日志条目示例
<a name="log-job-start-next-pending-job-ex.example"></a>

```
{
    "timestamp": "2018-06-13 17:49:51.036",
    "logLevel": "DEBUG",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "StartNextPendingJobExecution",
    "protocol": "MQTT",
    "clientId": "95c47808-b1ca-4794-bc68-a588d6d9216c",
    "topicName": "$aws/things/95c47808-b1ca-4794-bc68-a588d6d9216c/jobs/start-next",
    "clientToken": "bd7447c4-3a05-49f4-8517-dd89b2c68d94",
    "details": "The request status is SUCCESS."
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`StartNextPendingJobExecution`日志条目还包含以下属性：

clientId  
发出请求的客户端的 ID。

clientToken  
用于确保请求幂等性的唯一、区分大小写的标识符。有关更多信息，请参阅[如何确保幂等性](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)。

details  
来自 Jobs 服务的其它信息。

protocol  
用于提出请求的协议。有效值为 `MQTT` 或 `HTTP`。

topicName  
发出请求所使用的主题。

### UpdateJobExecution 日志条目
<a name="log-job-update-job-ex"></a>

当服务收到更新 AWS IoT 任务执行`eventType`的请求`UpdateJobExecution`时，该服务会生成一个带有的日志条目。

#### UpdateJobExecution 日志条目示例
<a name="log-job-update-job-ex.example"></a>

```
{
    "timestamp": "2017-08-10 19:25:14.758",
    "logLevel": "DEBUG",
    "accountId": "123456789012",
    "status": "Success",
    "eventType": "UpdateJobExecution",
    "protocol": "MQTT",
    "clientId": "thingOne",
    "jobId": "002",
    "topicName": "$aws/things/thingOne/jobs/002/update",
    "clientToken": "myClientToken",
    "versionNumber": "1",
    "details": "The destination status is IN_PROGRESS. The request status is SUCCESS."
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`UpdateJobExecution`日志条目还包含以下属性：

clientId  
发出请求的客户端的 ID。

clientToken  
用于确保请求幂等性的唯一、区分大小写的标识符。有关更多信息，请参阅[如何确保幂等性](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html)。

details  
来自 Jobs 服务的其它信息。

 jobId  
任务执行的任务 ID。

protocol  
用于提出请求的协议。有效值为 `MQTT` 或 `HTTP`。

topicName  
发出请求所使用的主题。

versionNumber  
任务执行的版本。

## 设备预调配日志条目
<a name="provision-logs"></a>

 AWS IoT 设备配置服务会生成以下事件的日志。

**Topics**
+ [GetDeviceCredentials 日志条目](#log-provision-get-device-credentials)
+ [ProvisionDevice 日志条目](#log-provision-provision-device)

### GetDeviceCredentials 日志条目
<a name="log-provision-get-device-credentials"></a>

当客户端呼叫`GetDeviceCredential`时， AWS IoT 设备配置服务会生成一个带有 “” `eventType` 的日志条目`GetDeviceCredential`。



#### GetDeviceCredentials 日志条目示例
<a name="log-provision-get-device-credentials.example"></a>

```
{
  "timestamp" : "2019-02-20 20:31:22.932",
  "logLevel" : "INFO",
  "traceId" : "8d9c016f-6cc7-441e-8909-7ee3d5563405",
  "accountId" : "123456789101",
  "status" : "Success",
  "eventType" : "GetDeviceCredentials",
  "deviceCertificateId" : "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  "details" : "Additional details about this log."
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`GetDeviceCredentials`日志条目还包含以下属性：

details  
错误的简要说明。

deviceCertificateId  
设备证书的 ID。

### ProvisionDevice 日志条目
<a name="log-provision-provision-device"></a>

当客户端呼叫`ProvisionDevice`时， AWS IoT 设备配置服务会生成一个带有 “” `eventType` 的日志条目`ProvisionDevice`。

#### ProvisionDevice 日志条目示例
<a name="log-provision-provision-device.example"></a>

```
{
  "timestamp" : "2019-02-20 20:31:22.932",
  "logLevel" : "INFO",
  "traceId" : "8d9c016f-6cc7-441e-8909-7ee3d5563405",
  "accountId" : "123456789101",
  "status" : "Success",
  "eventType" : "ProvisionDevice",
  "provisioningTemplateName" : "myTemplate",
  "deviceCertificateId" : "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  "details" : "Additional details about this log."
 }
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`ProvisionDevice`日志条目还包含以下属性：

details  
错误的简要说明。

deviceCertificateId  
设备证书的 ID。

provisioningTemplateName  
预配置模板的名称。

## 动态事物组日志条目
<a name="dynamic-group-logs"></a>

AWS IoT 动态事物组生成以下事件的日志。

**Topics**
+ [AddThingToDynamicThingGroupsFailed 日志条目](#log-dynthing-add-thing-to-dynamic-thing-groups-failed)

### AddThingToDynamicThingGroupsFailed 日志条目
<a name="log-dynthing-add-thing-to-dynamic-thing-groups-failed"></a>

 AWS IoT 当无法将事物添加到指定的动态组时，它会生成一个带有为`eventType`的日志条目`AddThingToDynamicThingGroupsFailed`。当事物满足要处于动态事物组中的条件时，就会发生此情况；但是，无法将其添加到动态组中，或者无法将其从动态组中删除。这可能是因为：
+ 事物已经属于最大数量的组数。
+ **--override-dynamic-groups** 选项用于将事物添加到静态事物组中。它已被从一个动态事物组中删除，以便可以再添加。

有关更多信息，请参阅[动态事物组限制和冲突](dynamic-thing-groups.md#dynamic-thing-group-limitations)。

#### AddThingToDynamicThingGroupsFailed 日志条目示例
<a name="log-dynthing-add-thing-to-dynamic-thing-groups-failed.example"></a>

此示例显示 `AddThingToDynamicThingGroupsFailed` 错误的日志条目。在此示例中，*TestThing*符合中列出的动态事物组的条件`dynamicThingGroupNames`，但无法添加到这些动态组中，如中所述`reason`。

```
{
 "timestamp": "2020-03-16 22:24:43.804",
 "logLevel": "ERROR",
 "traceId": "70b1f2f5-d95e-f897-9dcc-31e68c3e1a30",
 "accountId": "57EXAMPLE833",
 "status": "Failure",
 "eventType": "AddThingToDynamicThingGroupsFailed",
 "thingName": "TestThing",
 "dynamicThingGroupNames": [
  "DynamicThingGroup11",
  "DynamicThingGroup12",
  "DynamicThingGroup13",
  "DynamicThingGroup14"
 ],
 "reason": "The thing failed to be added to the given dynamic thing group(s) because the thing already belongs to the maximum allowed number of groups."
}
```

除了[常见 CloudWatch 日志属性](#cwl-common-attributes)，`AddThingToDynamicThingGroupsFailed`日志条目还包含以下属性：

dynamicThingGroup名字  
无法向其中添加该事物的动态事物组的数组。

reason  
事物无法添加到动态事物组的原因。

thingName  
无法添加到动态事物组的事物的名称。

## 实例集索引日志条目
<a name="fleet-indexing-logs"></a>

AWS IoT 舰队索引生成以下事件的日志条目。

**Topics**
+ [NamedShadowCountForDynamicGroupQueryLimitExceeded 日志条目](#log-named-shadow-dynamic-group)

### NamedShadowCountForDynamicGroupQueryLimitExceeded 日志条目
<a name="log-named-shadow-dynamic-group"></a>

对于动态组中不特定于数据来源的查询术语，每个对象最多处理 25 个命名影子。由于事件而违反该限制时，将发出 `NamedShadowCountForDynamicGroupQueryLimitExceeded` 事件类型。

#### NamedShadowCountForDynamicGroupQueryLimitExceeded 日志条目示例
<a name="log-named-shadow-dynamic-group.example"></a>

此示例显示 `NamedShadowCountForDynamicGroupQueryLimitExceeded` 错误的日志条目。在此示例中，所有基于值的 `DynamicGroup` 结果都可能不准确，如 `reason` 字段中所述。

```
{
"timestamp": "2020-03-16 22:24:43.804",
"logLevel": "ERROR",
"traceId": "70b1f2f5-d95e-f897-9dcc-31e68c3e1a30",
"accountId": "571032923833",
"status": "Failure",
"eventType": "NamedShadowCountForDynamicGroupQueryLimitExceeded",
"thingName": "TestThing",
"reason": "A maximum of 25 named shadows per thing are processed for non-data source specific query terms in dynamic groups."
}
```

## 常见 CloudWatch 日志属性
<a name="cwl-common-attributes"></a>

所有 Log CloudWatch s 日志条目都包含以下属性：

accountId  
你的 AWS 账户 身份证。

eventType  
已为其生成日志的事件类型。事件类型的值取决于生成日志条目的事件。每个日志条目描述都包括该日志条目的 `eventType` 的值。

logLevel  
所使用的日志级别。有关更多信息，请参阅 [日志级别](configure-logging.md#log-level)。

status  
请求的状态。

timestamp  
客户端连接到 AWS IoT 消息代理的时间的便于阅读的 UNIX 时间戳。

traceId  
一个随机生成的标识符，可用于将特定请求的所有日志关联起来。

# 将设备端日志上传到 Amazon CloudWatch
<a name="upload-device-logs-to-cloudwatch"></a>

您可以将设备端的历史日志上传到 Amazon CloudWatch ，以监控和分析设备在现场的活动。设备端日志可以包括系统、应用程序和设备日志文件。[此过程使用 CloudWatch Logs rules 操作参数将设备端日志发布到客户定义的日志组中。](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)

## 工作原理
<a name="upload-process-overview"></a>

当 AWS IoT 设备向 AWS IoT 主题发送包含格式化日志文件的 MQTT 消息时，该过程就开始了。 AWS IoT 规则监控消息主题并将日志文件发送到您定义的 CloudWatch 日志组。然后，您可以查看和分析信息。

**Topics**
+ [MQTT 主题](#upload-mqtt-topics-overview)
+ [规则操作](#upload-rule-action-overview)

### MQTT 主题
<a name="upload-mqtt-topics-overview"></a>

选择要用于发布日志的 MQTT 主题命名空间。我们建议将此格式用于公共主题空间 `$aws/rules/things/thing_name/logs`，并将此格式用于错误主题 `$aws/rules/things/thing_name/logs/errors`。建议使用日志和错误主题的命名结构，但不是必需要求。有关更多信息，请参阅[为 AWS IoT Core设计 MQTT 主题](https://docs.aws.amazon.com/whitepapers/latest/designing-mqtt-topics-aws-iot-core/designing-mqtt-topics-aws-iot-core.html)。

通过使用推荐的公共主题空间，您可以使用 B AWS IoT asic Ingest 保留主题。 AWS IoT Basic Ingest 可以安全地将设备数据发送到 AWS IoT 规则操作支持的 AWS 服务。它会将 publish/subscribe 消息代理从摄取路径中移除，从而使其更具成本效益。有关更多信息，请参阅[借助基本摄取功能降低消息收发成本](https://docs.aws.amazon.com/iot/latest/developerguide/iot-basic-ingest.html)。

如果您使用 batchMode 上载日志文件，则您的消息必须遵循包括 UNIX 时间戳和消息的特定格式。有关更多信息，请参阅[CloudWatch 日志](https://docs.aws.amazon.com/iot/latest/developerguide/cloudwatch-logs-rule-action.html)规则操作中的 [BatchMode 的 MQTT 消息格式要求](https://docs.aws.amazon.com/iot/latest/developerguide/cloudwatch-logs-rule-action.html#cloudwatch-logs-rule-action-message-format)主题。

### 规则操作
<a name="upload-rule-action-overview"></a>

当 AWS IoT 收到来自客户端设备的 MQTT 消息时， AWS IoT 规则会监控客户定义的主题并将内容发布到您定义的 CloudWatch 日志组中。此过程使用 CloudWatch 日志规则操作来监控 MQTT 中是否有批量日志文件。有关更多信息，请参阅[CloudWatch 日志](https://docs.aws.amazon.com/iot/latest/developerguide/cloudwatch-logs-rule-action.html) AWS IoT 规则操作。

#### 批量模式
<a name="upload-batch-mode-overview"></a>

 `batchMode`是 “ AWS IoT CloudWatch 日志” 规则操作中的一个布尔参数。此参数是可选的，默认情况下处于关闭状态 (`false`)。要批量上传设备端日志文件，必须在创建规则时启用此参数 (`true`)。 AWS IoT 有关更多信息，请参阅[AWS IoT 规则操作](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rule-actions.html)部分中的[CloudWatch 日志](https://docs.aws.amazon.com/iot/latest/developerguide/cloudwatch-logs-rule-action.html)。

# 使用规则上传设备端日志 AWS IoT
<a name="uploading-logs-rules-action-procedure"></a>

您可以使用 AWS IoT 规则引擎将现有设备端日志文件（系统、应用程序和设备客户端日志）中的日志记录上传到 Amazon。 CloudWatch将设备端日志发布到 MQTT 主题时， CloudWatch 日志规则操作会将消息传输到日志。 CloudWatch 此过程概述了如何使用开启（设置为 `true`）的规则操作 `batchMode` 参数批量上载设备日志。

要开始将设备端日志上传到 CloudWatch，请完成以下先决条件。

## 先决条件
<a name="uploading-logs-rules-prerequisites"></a>

开始之前，请执行以下操作：
+ 创建至少一台注册 AWS IoT Core 为 AWS IoT 事物的目标物联网设备。有关更多信息，请参阅[创建事物对象](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-aws-thing)。
+ 确定用于摄取和错误的 MQTT 主题空间。有关 MQTT 主题和推荐命名约定的更多信息，请参阅将[设备端日志上传](https://docs.aws.amazon.com/iot/latest/developerguide/upload-device-logs-to-cloudwatch.html)到 Amazon 中的 [MQTT 主题](upload-device-logs-to-cloudwatch.md#upload-mqtt-topics-overview) [MQTT 主题](https://docs.aws.amazon.com/iot/latest/developerguide/upload-device-logs-to-cloudwatch.html#upload-mqtt-topics-overview)部分。 CloudWatch

有关这些先决条件的更多信息，请参阅[将设备端日志上传](https://docs.aws.amazon.com/iot/latest/developerguide/upload-device-logs-to-cloudwatch)到。 CloudWatch

## 创建 CloudWatch 日志组
<a name="uploading-logs-rules-setup-log-group"></a>

要创建 CloudWatch 日志组，请完成以下步骤。根据您更喜欢执行的步骤还是 AWS Command Line Interface (AWS CLI)， AWS 管理控制台 选择相应的选项卡。

------
#### [ AWS 管理控制台 ]

**要创建 CloudWatch 日志组，请使用 AWS 管理控制台**

1. 打开 AWS 管理控制台 并导航至[CloudWatch](https://console.aws.amazon.com//cloudwatch)。

1. 在导航栏上，选择 **Logs**（日志），然后选择 **Log groups**（日志组）。

1. 选择**创建日志组**。

1. 更新 **Log group name**（日志组名称），并可选择更新 **Retention setting**（保留设置）字段。

1. 选择**创建**。

------
#### [ AWS CLI ]

**要创建 CloudWatch 日志组，请使用 AWS CLI**

1. 要创建日志组，请运行以下命令。有关更多信息，请参阅 AWS CLI v2 命令参考` [create-log-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/logs/create-log-group.html) `中的。

   将示例中的日志组名称 (`uploadLogsGroup`) 替换为您首选的名称。

   ```
   aws logs create-log-group --log-group-name uploadLogsGroup
   ```

1. 要确认已正确创建日志组，请运行以下命令。

   ```
   aws logs describe-log-groups --log-group-name-prefix uploadLogsGroup
   ```

   示例输出：

   ```
   {
       "logGroups": [
           {
               "logGroupName": "uploadLogsGroup",
               "creationTime": 1674521804657,
               "metricFilterCount": 0,
               "arn": "arn:aws:logs:us-east-1:111122223333:log-group:uploadLogsGroup:*",
               "storedBytes": 0
           }
       ]
   }
   ```

------

## 创建主题规则
<a name="uploading-logs-rules-setup-topic-rule"></a>

要创建 AWS IoT 规则，请完成以下步骤。根据您更喜欢执行的步骤还是 AWS Command Line Interface (AWS CLI)， AWS 管理控制台 选择相应的选项卡。

------
#### [ AWS 管理控制台 ]

**要创建主题规则，请使用 AWS 管理控制台**

1. 打开规则中心。

   1. 打开 AWS 管理控制台 并导航到 [AWS IoT](https://console.aws.amazon.com/iot)。

   1. 在导航栏上，选择 **Message routing**（消息路由），然后选择 **Rules**（规则）。

   1. 选择 **Create rule**（创建规则）。

1. 输入规则属性。

   1. 输入由字母数字组成的 **Rule name**（规则名称）。

   1. （可选）输入 **Rule description**（规则描述）和 **Tags**（标签）。

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

1. 输入 SQL 语句。

   1. 使用您为摄取定义的 MQTT 主题输入 SQL 语句。

      例如，`SELECT * FROM '$aws/rules/things/thing_name/logs' `

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

1. 输入规则操作。

   1. 在 “**操作 1**” 菜单上，选择**CloudWatch日志**。

   1. 选择 **Log group name**（日志组名称），然后选择您创建的日志组。

   1. 选择 **Use batch mode**（使用批量模式）。

   1. 为规则指定 IAM 角色。

      如果规则具有 IAM 角色，请执行以下操作。

      1. 在 **IAM role**（IAM 角色）菜单上，选择您的 IAM 角色。

      如果规则没有 IAM 角色，请执行以下操作。

      1. 选择 **Create new role**（创建新角色）。

      1. 对于 **Role name**（角色名称），输入唯一名称并选择 **Create**（创建）。

      1. 确认 **IAM role**（IAM 角色）字段中的 IAM 角色名称是否正确。

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

1. 查看模板配置。

   1. 查看任务模板的设置以验证它们正确无误。

   1. 完成后，选择**创建**。

------
#### [ AWS CLI ]

**要创建 IAM 角色和主题规则，请使用 AWS CLI**

1. 创建授予 AWS IoT 规则权限的 IAM 角色。

   1. 创建一个 IAM 策略。

      要创建 IAM policy，请运行以下命令。确保更新 `policy-name` 参数值。有关更多信息，请参阅 AWS CLI v2 命令参考[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-policy.html)中的。
**注意**  
如果您使用的是 Microsoft Windows 操作系统，则可能需要将行尾标记 (\$1) 替换为勾号 (`) 或其他字符。

      ```
      aws iam create-policy \
          --policy-name uploadLogsPolicy \
          --policy-document \
      '{
          "Version": "2012-10-17",		 	 	 
          "Statement": {
              "Effect": "Allow",
              "Action": [
                  "iot:CreateTopicRule",
                  "iot:Publish",
                  "logs:CreateLogGroup",
                  "logs:CreateLogStream",
                  "logs:PutLogEvents",
                  "logs:GetLogEvents"
              ],
              "Resource": "*"
          }
      }'
      ```

   1. 将输出中的策略 ARN 复制到文本编辑器中。

      示例输出：

      ```
      {
          "Policy": {
              "PolicyName": "uploadLogsPolicy",
              "PermissionsBoundaryUsageCount": 0,
              "CreateDate": "2023-01-23T18:30:10Z",
              "AttachmentCount": 0,
              "IsAttachable": true,
              "PolicyId": "AAABBBCCCDDDEEEFFFGGG",
              "DefaultVersionId": "v1",
              "Path": "/",
              "Arn": "arn:aws:iam::111122223333:policy/uploadLogsPolicy",
              "UpdateDate": "2023-01-23T18:30:10Z"
          }
      }
      ```

   1. 创建 IAM 角色和信任策略。

      要创建 IAM policy，请运行以下命令。确保更新 `role-name` 参数值。有关更多信息，请参阅 AWS CLI v2 命令参考[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-role.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-role.html)中的。

      ```
      aws iam create-role \
      --role-name uploadLogsRole \
      --assume-role-policy-document \
      '{
          "Version": "2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "iot.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }'
      ```

   1. 向角色附加 IAM 策略。

      要创建 IAM policy，请运行以下命令。确保更新 `role-name` 和 `policy-arn` 参数值。有关更多信息，请参阅 AWS CLI v2 命令参考[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-role-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-role-policy.html)中的。

      ```
      aws iam attach-role-policy \
      --role-name uploadLogsRole \
      --policy-arn arn:aws:iam::111122223333:policy/uploadLogsPolicy
      ```

   1. 查看角色。

      要确认已正确创建 IAM 角色，请运行以下命令。确保更新 `role-name` 参数值。有关更多信息，请参阅 AWS CLI v2 命令参考[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-role.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-role.html)中的。

      ```
      aws iam get-role --role-name uploadLogsRole
      ```

      示例输出：

      ```
      {
          "Role": {
              "Path": "/",
              "RoleName": "uploadLogsRole",
              "RoleId": "AAABBBCCCDDDEEEFFFGGG",
              "Arn": "arn:aws:iam::111122223333:role/uploadLogsRole",
              "CreateDate": "2023-01-23T19:17:15+00:00",
              "AssumeRolePolicyDocument": {
                  "Version": "2012-10-17",		 	 	 
                  "Statement": [
                      {
                          "Sid": "Statement1",
                          "Effect": "Allow",
                          "Principal": {
                              "Service": "iot.amazonaws.com"
                          },
                          "Action": "sts:AssumeRole"
                      }
                  ]
              },
              "Description": "",
              "MaxSessionDuration": 3600,
              "RoleLastUsed": {}
          }
      }
      ```

1. 在中创建 AWS IoT 主题规则 AWS CLI。

   1. 要创建 AWS IoT 主题规则，请运行以下命令。请务必更新`--rule-name`、`sql`语句`description`、`roleARN `、和`logGroupName`参数值。有关更多信息，请参阅 AWS CLI v2 命令参考[create-topic-rule](https://awscli.amazonaws.com/v2/documentation/api/2.0.34/reference/iot/create-topic-rule.html)中的。

      ```
      aws iot create-topic-rule \
      --rule-name uploadLogsRule \
      --topic-rule-payload \
      	'{
      		"sql":"SELECT * FROM 'rules/things/thing_name/logs'",
      		"description":"Upload logs test rule",
      		"ruleDisabled":false,
      		"awsIotSqlVersion":"2016-03-23",
      		"actions":[
      			{"cloudwatchLogs":
      				{"roleArn":"arn:aws:iam::111122223333:role/uploadLogsRole",
      				"logGroupName":"uploadLogsGroup",
      				"batchMode":true}
      				}
      			]
      }'
      ```

   1. 要确认已正确创建规则，请运行以下命令。确保更新 `role-name` 参数值。有关更多信息，请参阅 AWS CLI v2 命令参考[get-topic-rule](https://awscli.amazonaws.com/v2/documentation/api/2.0.34/reference/iot/get-topic-rule.html)中的。

      ```
      aws iot get-topic-rule --rule-name uploadLogsRule
      ```

      示例输出：

      ```
      {
          "ruleArn": "arn:aws:iot:us-east-1:111122223333:rule/uploadLogsRule",
          "rule": {
              "ruleName": "uploadLogsRule",
              "sql": "SELECT * FROM rules/things/thing_name/logs",
              "description": "Upload logs test rule",
              "createdAt": "2023-01-24T16:28:15+00:00",
              "actions": [
                  {
                      "cloudwatchLogs": {
                          "roleArn": "arn:aws:iam::111122223333:role/uploadLogsRole",
                          "logGroupName": "uploadLogsGroup",
                          "batchMode": true
                      }
                  }
              ],
              "ruleDisabled": false,
              "awsIotSqlVersion": "2016-03-23"
          }
      }
      ```

------

## 将设备端日志发送到 AWS IoT
<a name="uploading-logs-rules-start-messages"></a>

**将设备端日志发送到 AWS IoT**

1. 要向发送历史日志 AWS IoT，请与您的设备通信以确保满足以下要求。
   + 日志信息将发送到在本过程的*先决条件*部分中指定的正确主题命名空间。

     例如，`$aws/rules/things/thing_name/logs`
   + MQTT 消息有效载荷的格式正确无误。有关 MQTT 主题和推荐命名约定的更多信息，请参阅中的[MQTT 主题](upload-device-logs-to-cloudwatch.md#upload-mqtt-topics-overview)[将设备端日志上传到 Amazon CloudWatch](upload-device-logs-to-cloudwatch.md)部分。

1. 确认 MQTT 消息已在 M AWS IoT QTT 客户端中收到。

   1. 打开 AWS 管理控制台 并导航至[AWS IoT](https://console.aws.amazon.com/iot/home)。

   1. 要查看 **MQTT 测试客户端**，请在导航栏上选择**测试，**MQTT 测试****客户端。

   1. 对于 **“订阅主题**”，“**主题筛选器**”，输入*主题命名空间*。

   1. 选择**订阅**。

      MQTT 消息显示在 **Subscriptions**（订阅）和 **Topic**（主题）表中，如下所示。这些消息可能需要长达五分钟才会显示。  
![\[MQTT 消息显示在订阅和主题表中。\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/uploading-logs-rules-start-messages-sample-mqtt.png)

## 查看日志数据
<a name="uploading-logs-rules-review-cloudwatch"></a>

**在 “日志” 中查看您的 CloudWatch 日志记录**

1. 打开 AWS 管理控制台，然后导航至[CloudWatch](https://console.aws.amazon.com/cloudwatch)。

1. 在导航栏上，选择**日志、日****志、见解**。

1. 在**选择日志组**菜单上，选择您在 AWS IoT 规则中指定的日志组。

1. 在 **Logs insights**（日志见解）页面上，选择 **Run query**（运行查询）。

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

AWS IoT 与 AWS CloudTrail一项服务集成，该服务提供用户、角色或 AWS 服务在中执行的操作的记录 AWS IoT。 CloudTrail 将所有 API 调用捕获 AWS IoT 为事件，包括来自 AWS IoT 控制台的调用和对的代码调用 AWS IoT APIs。如果您创建了跟踪，则可以允许将 CloudTrail事件持续传输到 Amazon S3 存储桶，包括的事件 AWS IoT。如果您未配置跟踪，您仍然可以在 CloudTrail 控制台的 “事件**历史记录” 中查看最新的事件**。使用收集的信息 CloudTrail，您可以确定向哪个请求发出 AWS IoT、发出请求的 IP 地址、谁发出了请求、何时发出请求以及其他详细信息。

要了解更多信息 CloudTrail，请参阅《[AWS CloudTrail 用户指南》](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。

## AWS IoT 信息在 CloudTrail
<a name="aws-iot-info-in-cloudtrail"></a>

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

对于 AWS 账户中的事件的持续记录（包括 AWS IoT的事件），请创建跟踪记录。跟踪允许 CloudTrail 将日志文件传输到 Amazon S3 存储桶。默认情况下，当您在控制台中创建跟踪时，该跟踪将应用于所有 AWS 区域跟踪。跟踪记录 AWS 分区中所有 AWS 区域事件并将日志文件传送到您指定的 Amazon 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#cloudtrail-aws-service-specific-topics-integrations) 
+  [配置 Amazon SNS 通知 CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.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 不记录数据平面操作（设备端） CloudTrail。 CloudWatch 用于监视这些操作。

一般而言，进行更改的 AWS IoT 控制平面操作由记录 CloudTrail。诸如**CreateThing**CreateKeysAndCertificate****、和之类的呼叫**UpdateCertificate**留下 CloudTrail 条目，而诸如**ListThings**和之类的呼叫则**ListTopicRules**不是。

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

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

AWS IoT 操作记录在《[AWS IoT API 参考](https://docs.aws.amazon.com/iot/latest/apireference/)》中。 AWS IoT Wireless 操作记录在《[AWS IoT Wireless API 参考](https://docs.aws.amazon.com/iot-wireless/latest/apireference/welcome.html)》中。

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

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

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

```
{
    "timestamp":"1460159496",
    "AdditionalEventData":"",
    "Annotation":"",
    "ApiVersion":"",
    "ErrorCode":"",
    "ErrorMessage":"",
    "EventID":"8bff4fed-c229-4d2d-8264-4ab28a487505",
    "EventName":"AttachPolicy",
    "EventTime":"2016-04-08T23:51:36Z",
    "EventType":"AwsApiCall",
    "ReadOnly":"",
    "RecipientAccountList":"",
    "RequestID":"d4875df2-fde4-11e5-b829-23bf9b56cbcd",
    "RequestParamters":{
        "principal":"arn:aws:iot:us-east-1:123456789012:cert/528ce36e8047f6a75ee51ab7beddb4eb268ad41d2ea881a10b67e8e76924d894",
        "policyName":"ExamplePolicyForIoT"
    },
    "Resources":"",
    "ResponseElements":"",
    "SourceIpAddress":"52.90.213.26",
    "UserAgent":"aws-internal/3",
    "UserIdentity":{
        "type":"AssumedRole",
        "principalId":"AKIAI44QH8DHBEXAMPLE",
        "arn":"arn:aws:sts::12345678912:assumed-role/iotmonitor-us-east-1-beta-InstanceRole-1C5T1YCYMHPYT/i-35d0a4b6",
        "accountId":"222222222222",
        "accessKeyId":"access-key-id",
        "sessionContext":{
            "attributes":{
                "mfaAuthenticated":"false",
                "creationDate":"Fri Apr 08 23:51:10 UTC 2016"
            },
            "sessionIssuer":{
                "type":"Role",
                "principalId":"AKIAI44QH8DHBEXAMPLE",
                "arn":"arn:aws:iam::123456789012:role/executionServiceEC2Role/iotmonitor-us-east-1-beta-InstanceRole-1C5T1YCYMHPYT",
                "accountId":"222222222222",
                "userName":"iotmonitor-us-east-1-InstanceRole-1C5T1YCYMHPYT"
            }
        },
        "invokedBy":{
            "serviceAccountId":"111111111111"
        }
    },
    "VpcEndpointId":""
}
```