如何为 AWS IoT Core 中的特定资源动态配置日志记录级别?

2 分钟阅读
0

我想要为我的 AWS IoT Core 日志动态配置资源特定的日志记录。

简短描述

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

您可以使用 AWS IoT Core 日志动态设置特定资源的日志级别。您可以使用动态事物组来设置资源特有的日志记录级别。您必须将您的客户端注册为事物,并且它们必须使用与事物名称关联的相同客户端 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

为特定资源配置自动日志记录

1.    创建 AWS IoT 事物并为其添加事物属性

**注意:**您可以根据需要添加其他事物属性。然后,您可以更改动态事物组查询以搜索这些内容。

2.    启用事物索引

3.    运行 DescribeIndex 命令以验证您的事物索引的 indexStatus 属性是否为 ACTIVE 状态:

aws iot describe-index --index-name "AWS_Things"

4.    使用 AWS IoT 控制台或 AWS CLI 创建动态事物组。

AWS IoT 控制台

1.    如果您尚未启用实例集索引,请启用实例集索引

2.    登录 AWS IoT 控制台

3.    在导航窗格中,选择所有设备,然后选择事物组

4.    选择创建事物组

5.    对于事物组类型,选择创建动态事物组,然后选择下一步

6.    对于事物组名称,输入 logging_level_debug_dynamic。然后,选择创建事物组
**注意:**请将 logging_level_debug_dynamic 替换为您的事物组名称。

7.    在查询下,输入 attributes.firmware:1,然后按 Enter 应用搜索查询语句。
**注意:**请将 firmware:1 替换为要用于查询的事物属性和值。

8.    选择预览查询,查看所有符合查询条件的内容。

9.    选择创建事物组

AWS CLI

1.    运行 CreateDynamicThingGroup 命令创建动态事物组:

**注意:**动态事物组无法即时创建,可能需要一些时间才能完成。有关详细信息,请参阅创建动态事物组

aws iot create-dynamic-thing-group \
 --thing-group-name "logging_level_debug_dynamic" \
 --query-string "attributes.firmware:1"

**注意:**在上述示例中,请将 firmware:1 替换为要用于查询的属性和值。请将 logging_level_debug_dynamic 替换为您的事物组名称。

输出消息应类似于以下内容:

{
 "thingGroupName": "logging_level_debug_dynamic",
 "thingGroupArn": "arn:aws:iot:eu-west-1:123456789012:thinggroup/logging_level_debug_dynamic",
 "thingGroupId": "b8f96cc3-f36b-4da2-b0f8-e28f5a123456",
 "indexName": "AWS_Things",
 "queryString": "attributes.firmware:1",
 "queryVersion": "2017-09-30"
}

2.    运行 DescribeThingGroup 命令以验证您的动态事物组是否处于 ACTIVE 状态:

aws iot describe-thing-group --thing-group-name "logging_level_debug_dynamic"

**注意:**在上述示例中,请将 logging_level_debug_dynamic 替换为您的事物组名称。

输出消息应类似于以下内容:

{
 "thingGroupName": "logging_level_debug_dynamic",
 "thingGroupId": "b8f96cc3-f36b-4da2-b0f8-e28f5a123456",
 "thingGroupArn": "arn:aws:iot:eu-west-1:123456789012:thinggroup/logging_level_debug_dynamic",
 "version": 1,
 "thingGroupProperties": {},
 "thingGroupMetadata": {
 "creationDate": "2022-11-30T12:37:19.980000+00:00"
 },
 "indexName": "AWS_Things",
 "queryString": "attributes.firmware:1",
 "queryVersion": "2017-09-30",
 "status": "ACTIVE"
}

3.    运行 SetV2LoggingLevel 命令,为资源设置日志记录级别:设置日志级别最多可能需要十分钟。

aws iot set-v2-logging-level \
 --log-target targetType=THING_GROUP,targetName=logging_level_debug_dynamic \
 --log-level DEBUG

**注意:**在上述示例中,请将 logging_level_debug_dynamic 替换为您的动态事物组名称。

输出消息应类似于以下内容。默认日志记录包含在输出中,包括基于您的配置的详细信息。已配置的其他日志级别也会显示在其中。

{
"logTargetConfigurations": [{
"logTarget": {
"targetType": "DEFAULT"
},
"logLevel": "WARN"
},
{
"logTarget": {
"targetType": "THING_GROUP",
"targetName": "
logging_level_debug_dynamic "
},
"logLevel": "DEBUG"
}
]
}

监控生成的日志

最佳做法是监控 IoT 日志,以此了解是否存在问题。您可以使用 AWS CloudWatch Logs 控制台或 AWS CLI 来监控您的 AWS IoT Core 日志。有关详细信息,请参阅在 AWS IoT Core 中管理 AWS IoT 日志的日志记录级别时,最佳做法是什么?中的“监控日志条目”一节

相关信息

AWS IoT Device Management 定价

如何配置 AWS IoT Core 的默认日志记录设置?

如何为 AWS IoT Core 中的特定资源手动配置日志记录级别?

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