New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
如何为 AWS IoT Core 中的特定资源动态配置日志记录级别?
我想要为我的 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 官方已更新 3 个月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前