如何在 AWS IoT Core 中以最佳方式管理 AWS IoT 日志的日志记录级别?

2 分钟阅读
0

在 AWS IoT Core 中配置我的 AWS IoT 日志时,我想遵循最佳实践,以降低成本和数据流量。

简短描述

**注意:**本文仅涉及 AWS IoT Core V2 日志。

最佳实践是了解必须监控哪些 AWS IoT Core 资源以及监控级别。您可以对您的 AWS IoT Core 资源进行分段,并为每个分段指定适合您的监控需求的日志记录级别。AWS IoT Core 日志允许您为资源设置默认日志记录级别和特定日志记录级别。

最佳实践是配置:

  • 默认日志记录,以便获得详细程度较低的日志记录级别,例如 ERROR 或 WARN 级别。如果配置了默认日志记录,则它将应用于所有资源,除非资源配置了特定于资源的日志记录。
  • 特定于资源的日志记录(手动或动态),以获得更详细的级别,例如 INFO 或 DEBUG。可以为不同的目标类型进行此配置,例如 THING_GROUP、CLIENT_ID、SOURCE_IP 或 PRINCIPAL_ID。

可以同时使用默认日志记录和特定于资源的日志记录。详细程度级别包括 DISABLED(最低)、ERROR、WARN、INFO 和 DEBUG(最高)。

**重要事项:**根据您的 AWS IoT Core 实例集大小,启用更详细的日志级别可能会产生高昂的成本,并使错误排除变得更加困难。更详细的日志记录级别还会产生更高的数据流量。最佳实践是在进行故障排除时仅将 INFO 或 DEBUG 作为一种临时手段来使用。故障排除完成后,最佳实践是将日志记录级别重置为详细程度较低的设置。

解决方法

先决条件

确保使用 IoT 管理员权限凭证在本地安装了 AWS 命令行界面(AWS CLI)。AWS CLI 的默认 AWS 区域必须指向目标 AWS 区域。您必须让客户端作为已注册或未注册的 IoT 事物连接到您的 AWS IoT Core。

**注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI

默认日志记录

通过将 AWS IoT 日志的默认日志记录级别设置为 ERROR 或 WARN,您可以查看日志错误或警告。将默认级别设置为详细程度较低的级别会减少您的成本和数据流量。有关详细信息,请参阅如何配置 AWS IoT Core 的默认日志记录设置?

**注意:**创建案例时,您必须向 AWS Support 提供 AWS IoT Core 日志。AWS Support 无权访问这些信息,因为这些信息被视为客户数据。

手动记录特定资源

AWS IoT Core 日志允许您为以下项设置特定于资源的日志记录级别:

  • 已注册为事物的客户端
  • 未注册为事物的客户端

有关详细信息,请参阅如何为 AWS IoT Core 中的特定资源手动配置日志记录级别?

对于注册为事物的客户端,您可以在定义的日志记录级别为多个事物管理特定于资源的日志记录。您也可以手动在事物组中添加或删除事物。您的客户端必须在 AWS IoT Core 中注册为 IoT 事物,并且必须使用与其事物名称关联的相同客户端 ID 进行连接。然后,您就可以使用目标类型为 THING_GROUP 的静态事物组来管理该事物组。

**注意:**使用静态事物组时必须考虑限额限制。有关详细信息,请参阅 AWS IoT Core 事物组资源限制和限额

对于未注册为事物的客户端,您可以使用客户端属性作为目标类型来管理资源。这些属性包括 CLIENT_ID、SOURCE_IP 或 PRINCIPAL_ID。

自动记录特定资源

您可以使用动态事物组自动为您的事物设置特定于资源的日志记录级别。您的客户端必须注册为 IoT 事物,并使用与其事物名称相同的客户端 ID 进行连接。动态事物组使用实例集索引查询,该查询会持续查找符合查询条件的事物并将其自动添加到组中。有关详细信息,请参阅如何为 AWS IoT Core 中的特定资源动态配置日志记录级别?

**注意:**创建或更新动态事物组时,事物可能符合加入动态事物组的条件,但未自动添加到动态事物组中。有关详细信息,请参阅成功的命令可记录错误

监控日志条目

您可以使用 Amazon CloudWatch 控制台或 AWS CLI 监控您的 AWS IoT 日志条目:

CloudWatch 控制台

1.    打开 CloudWatch 控制台

2.    在导航窗格中的日志下,选择日志组

3.    在筛选器文本框中,输入 AWSIoTLogsV2,然后按 Enter 键。
**注意:**在您成功启用 AWS IoT Core 中的日志记录之前,AWSIoTLogsV2 日志组在 CloudWatch 控制台中不可见。日志条目还必须由 AWS IoT 操作写入,日志组才可见。

4.    选择 AWSIoTLogsV2

5.    选择全部搜索。此时将显示为您的账户生成的 AWS IoT 日志的完整列表。

AWS CLI

运行以下命令在 AWS CLI 中获取您的 AWS IoT 日志:

aws logs filter-log-events --log-group-name AWSIotLogsV2 \
 --start-time YourStartTimeInMilliseconds

**注意:**您可以使用 --filter-pattern 搜索特定的日志属性。有关详细信息,请参阅筛选器和模式语法

“logLevel”字段的值反映了为目标配置的日志记录级别。在以下示例中,目标的日志记录级别配置为 INFO:

{
 "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": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a123456",
 "sourceIp": "123.123.123.123",
 "sourcePort": 13490
}

**注意:**只有通过 WSS 协议使用 MQTT 或 MQTT 连接到 AWS IoT Core 时,CLIENT_ID 才可用。HTTPS 协议不支持客户端 ID。改用 SOURCE_IP 或 PRINCIPAL_ID 目标类型。

编辑或删除日志记录级别

您可以随时更改默认级别和特定资源的日志记录级别。更改最多可能需要十分钟才能反映出来。

在 AWS CLI 中,运行 delete-v2-logging-level 命令,并对 --target-type--target-name 字段进行以下编辑:

aws iot delete-v2-logging-level \
 --target-type "THING_GROUP | CLIENT_ID | SOURCE_IP | PRINCIPAL_ID" \
 --target-name YourTargetName

相关信息

AWS IoT Device Management 端点和限额

监控 AWS IoT

AWS IoT Device Management 定价

AWS 官方
AWS 官方已更新 1 年前