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

2 分钟阅读
0

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

简短描述

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

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

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

其做法是,为特定目标类型创建日志记录级别并配置其详细级别。目标类型包括 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 Core 中注册为 IoT 事物,并且必须使用相同客户端 ID 关联的事物名称进行连接。然后,您就可以使用目标类型为 THING_GROUP 的静态事物组来管理该事物组。如果您在层次结构中配置了父事物组,则该配置也适用于该层次结构的子事物组。

**注意:**如果您使用静态事物组作为目标类型,则必须考虑其限额限制。有关详细信息,请参阅 AWS IoT Core 事物组资源限制和限额

1.创建两个静态事物组。您可以使用 AWS IoT 控制台或使用 AWS CLI 中的 create-thing-group 命令来完成此操作。本示例使用了 AWS CLI。

aws iot create-thing-group --thing-group-name logging_level_info
aws iot create-thing-group --thing-group-name logging_level_debug

**注意:**如果您使用的是现有事物组,请将 logging_level_infologging_level_debug 替换为您的事物组的名称。

输出类似于以下消息:

{
 "thingGroupName": "logging_level_info",
 "thingGroupArn": "arn:aws:iot:eu-west1-1:123456789012:thinggroup/logging_level_info",
 "thingGroupId": "58dd497e-97fc-47d2-8745-422bb21234AA"
}
{
 "thingGroupName": "logging_level_debug",
 "thingGroupArn": "arn:aws:iot:eu-west-1:123456789012:thinggroup/logging_level_debug",
 "thingGroupId": "2a9dc698-9a40-4487-81ec-2cb4101234BB"
}

2.运行 SetV2LoggingLevel 命令,以为事物组设置日志记录级别: **注意:**日志级别配置更改最多可能需要 10 分钟才能反映出来。

aws iot set-v2-logging-level \
 --log-target targetType=THING_GROUP,targetName=logging_level_info \
 --log-level INFO

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

**注意:**请将 INFODEBUG 替换为要为每个事物组设置的日志级别。

3.运行以下命令,以确认日志记录级别配置正确:

aws iot list-v2-logging-levels

输出类似于以下消息:

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

4.运行 AddThingToThingGroup 命令,以将事物添加到相应的事物组:

aws iot add-thing-to-thing-group \
 --thing-name YourThingName1 \
 --thing-group-name logging_level_info

**注意:**请将 YourThingName1 替换为要添加到事物组的事物的名称。

为未注册为事物的客户端配置手动日志记录

如果您未在 AWS IoT Core 上注册您的事物,则仍然可以为多个目标类型添加特定资源的日志记录级别。这些目标类型是客户端属性,包括 CLIENT_ID、SOURCE_IP 或 PRINCIPAL_ID。如果您的设备已注册为 AWS IoT Core 事物,则仍然可以使用这些客户端属性来管理日志记录级别。

1.运行 SetV2LoggingLevel 命令,以为特定客户端设置日志记录级别:

aws iot set-v2-logging-level \
 --log-target targetType=CLIENT_ID,targetName=YourClientId \
 --log-level YourLogLevel

**注意:**要使用不同的目标类型,请将 CLIENT_ID 替换为目标客户端使用的支持的值,例如 SOURCE_IP 或 PRINCIPAL_ID。

2.运行以下命令,以确认日志记录级别配置正确:

aws iot list-v2-logging-levels

输出类似于以下消息:

...
 {
 "logTarget": {
 "targetType": "CLIENT_ID",
 "targetName": "YourClientId"
 },
 "logLevel": "YourLogLevel"
 }
...

监控生成的日志

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

相关信息

监控 AWS IoT

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

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

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