为 AWS IoT Wireless 资源配置日志记录 - AWS IoT Wireless

为 AWS IoT Wireless 资源配置日志记录

要为 AWS IoT Wireless 资源配置日志记录,您可以使用 API 或 CLI。开始监控 AWS IoT Wireless 资源时,您可以使用原定设置配置。若要执行该操作,您可以跳过此主题,然后继续执行 使用 CloudWatch Logs 监控 AWS IoT Wireless 来监控您的日志。

开始监控日志后,您可以使用 CLI 将日志级别更改为更详细的选项,例如提供 INFOERROR 信息并为更多资源启用日志记录。

AWS IoT Wireless 资源和日志级别

在使用 API 或 CLI 之前,请使用下表了解可以为其配置日志记录的不同日志级别和资源。该表显示了您在监控资源时能在 CloudWatch Logs 中看到的参数。如何为资源配置日志记录将决定您会在控制台中看到的日志。

有关 CloudWatch Logs 示例以及如何使用这些参数记录有关 AWS IoT Wireless 资源有关有用信息的内容,请参阅 查看 CloudWatch AWS IoT Wireless 日志条目

日志级别和资源
名称 可能的值 描述
logLevel

INFOERRORDISABLED

  • ERROR:显示导致操作失败的任何错误。日志中仅包含 ERROR 信息。

  • INFO:提供有关事物流的高级别信息。日志包括 INFOERROR 信息。

  • DISABLED:禁用所有日志记录。

resource

WirelessGatewayWirelessDevice

资源类型,可以是 WirelessGatewayWirelessDevice

wirelessGatewayType LoRaWAN 无线网关的类型,当 resourceWirelessGateway 时,始终为 LoRaWAN。
wirelessDeviceType LoRaWANSidewalk 无线设备的类型,当 resourceWirelessDevice 时,可以是 LoRaWAN 或者 Sidewalk
wirelessGatewayId - 无线网关的标识符,当 resourceWirelessGateway 时。
wirelessDeviceId - 无线设备的标识符,当 resourceWirelessDevice 时。
event JoinRejoinRegistrationUplink_dataDownlink_dataCUPS_RequestCertificate 记录的事件类型,取决于您记录的资源是无线设备还是无线网关。有关更多信息,请参阅查看 CloudWatch AWS IoT Wireless 日志条目

AWS IoT Wireless 日志记录 API

您可以通过以下 API 操作来配置资源日志记录。该表还显示了您必须为使用 API 操作创建的示例 IAM 策略。以下部分介绍如何使用 API 配置资源的日志级别。

对 API 操作进行日志记录
API 名称 描述 IAM 策略示例

GetLogLevelsByResourceTypes

返回当前默认日志级别,或按资源类型返回日志级别,其中可以包括无线设备或无线网关的日志选项。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iotwireless:GetLogLevelsByResourceTypes" ], "Resource": [ "*" ] } ] }

GetResourceLogLevel

返回给定资源标识符和资源类型的日志级别覆盖。资源可以是无线设备或无线网关。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iotwireless:GetResourceLogLevel" ], "Resource": [ "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/012bc537-ab12-cd3a-d00e-1f0e20c1204a", ] } ] }

PutResourceLogLevel

为给定资源标识符和资源类型设置日志级别覆盖。资源可以是无线网关或无线设备。

注意

此 API 每个账户限制 200 个日志级别覆盖。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iotwireless:PutResourceLogLevel" ], "Resource": [ "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/012bc537-ab12-cd3a-d00e-1f0e20c1204a", ] } ] }

ResetAllResourceLogLevels

删除所有资源(包括无线网关和无线设备)的日志级别覆盖。

注意

此 API 不会影响使用 UpdateLogLevelsByResourceTypes API 设置的日志级别。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iotwireless:ResetAllResourceLogLevels" ], "Resource": [ "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/*", "arn:aws:iotwireless:us-east-1:123456789012:WirelessGateway/* ] } ] }

ResetResourceLogLevel

删除给定资源标识符和资源类型的日志级别覆盖。资源可以是无线网关或无线设备。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iotwireless:ResetResourceLogLevel" ], "Resource": [ "arn:aws:iotwireless:us-east-1:123456789012:WirelessDevice/012bc537-ab12-cd3a-d00e-1f0e20c1204a", ] } ] }

UpdateLogLevelsByResourceTypes

设置默认日志级别,或按资源类型设置日志级别。您可以将此 API 用于无线设备或无线网关的日志选项,并控制将在 CloudWatch 中显示的日志消息。

注意

事件是可选的,事件类型与资源类型相关联。有关更多信息,请参阅事件和资源类型

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iotwireless:UpdateLogLevelsByResourceTypes" ], "Resource": [ "*" ] } ] }

使用 CLI 配置资源的日志级别

本节介绍了如何使用 API 或 AWS CLI 配置 AWS IoT Wireless 资源的日志级别。

使用 CLI 之前:

为什么要使用 AWS CLI

预设情况下,如果您如 为 AWS IoT Wireless 创建日志记录角色和策略 中所述创建 IAM 角色,IoTWirelessLogsRole,您将在默认日志级别为 ERROR 的 AWS Management Console 中看到 CloudWatch Logs。要更改所有资源或特定资源的原定设置日志级别,请使用 AWS IoT Wireless 无线日志记录 API 或 CLI。

如何使用 AWS CLI

API 操作可分为以下类型,具体取决于您是要为所有资源配置日志级别还是为特定资源配置日志级别:

  • API 操作GetLogLevelsByResourceTypesUpdateLogLevelsByResourceTypes 可以为您账户中特定类型的所有资源检索和更新日志级别,例如无线网关或 LoRaWAN 或 Sidewalk 设备。

  • API 操作 GetResourceLogLevelPutResourceLogLevelResetResourceLogLevel 可以检索、更新和重置您使用资源标识符指定的各个资源的日志级别。

  • 对于您使用 PutResourceLogLevel API 指定日志级别覆盖操作的所有资源, API 操作 ResetAllResourceLogLevels 会将日志级别覆盖重置为 null

使用 CLI 为 AWS IoT 配置资源特定的日志记录
注意

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

  1. 预设情况下,所有资源的日志级别都设置为 ERROR。要为账户中的所有资源设置默认日志级别或按资源类型设置日志级别,请使用 update-log-levels-by-resource-types 命令。以下示例显示如何创建 JSON 文件 Input.json,并将其作为 CLI 命令的输入提供。您可以使用此命令有选择地禁用特定类型的资源和时间的日志记录或覆盖默认日志级别。

    { "DefaultLogLevel": "INFO", "WirelessDeviceLogOptions": [ { "Type": "Sidewalk", "LogLevel": "INFO", "Events": [ { "Event": "Registration", "LogLevel": "DISABLED" } ] }, { "Type": "LoRaWAN", "LogLevel": "INFO", "Events": [ { "Event": "Join", "LogLevel": "DISABLED" }, { "Event": "Rejoin", "LogLevel": "ERROR" } ] } ] "WirelessGatewayLogOptions": [ { "Type": "LoRaWAN", "LogLevel": "INFO", "Events": [ { "Event": "CUPS_Request", "LogLevel": "DISABLED" }, { "Event": "Certificate", "LogLevel": "ERROR" } ] } ] }

    其中:

    WirelessDeviceLogOptions

    无线设备的日志选项列表。每个日志选项都包括无线设备类型(Sidewalk 或 LoRaWAN),以及无线设备事件日志选项列表。每个无线设备事件日志选项都可以选择是否包括事件类型及其日志级别。

    WirelessGatewayLogOptions

    无线网关的日志选项列表。每个日志选项都包括无线网关类型 (LoRaWAN) 和无线网关事件日志选项列表。每个无线网关事件日志选项都可以选择是否包括事件类型及其日志级别。

    DefaultLogLevel

    用于所有资源的日志级别。有效值包括 ERRORINFODISABLED。默认值为 INFO

    LogLevel

    要用于单个资源类型和事件的日志级别。这些日志级别会覆盖默认日志级别,例如适用于 LoRaWAN 的 INFO 网关日志级别,以及适用于两种事件类型的日志级别 DISABLEDERROR

    运行以下命令以向命令提供 Input.json 文件作为输入。此命令不会生成任何输出。

    aws iotwireless update-log-levels-by-resource-types \ --cli-input-json Input.json

    如果要删除无线设备和无线网关的日志选项,请运行以下命令。

    { "DefaultLogLevel":"DISABLED", "WirelessDeviceLogOptions": [], "WireslessGatewayLogOptions":[] }
  2. update-log-levels-by-resource-types 命令不返回任何输出。使用 get-log-levels-by-resource-types 命令检索资源特定的日志记录信息。该命令返回默认日志级别以及无线设备和无线网关日志选项。

    注意

    get-log-levels-by-resource-types 命令无法在 CloudWatch 控制台中直接检索日志级别。您可以使用 get-log-levels-by-resource-types 命令获取您使用 update-log-levels-by-resource-types 命令为资源指定的最新日志级别信息。

    aws iotwireless get-log-levels-by-resource-types

    当您运行以下命令时,它会返回您使用 update-log-levels-by-resource-types 指定的最新日志记录信息。例如,如果删除无线设备日志选项,则运行 get-log-levels-by-resource-types 将返回此值,为 null

    { "DefaultLogLevel": "INFO", "WirelessDeviceLogOptions": null, "WirelessGatewayLogOptions": [ { "Type": "LoRaWAN", "LogLevel": "INFO", "Events": [ { "Event": "CUPS_Request", "LogLevel": "DISABLED" }, { "Event": "Certificate", "LogLevel": "ERROR" } ] } ] }
  3. 要控制单个无线网关或无线设备资源的日志级别,请使用以下 CLI 命令:

    有关何时使用这些 CLI 的示例,假设您的账户中有大量正在记录的无线设备或网关。如果您只想排除某些无线设备的故障,可以通过将 DefaultLogLevel 设置为 DISABLED 禁用所有无线设备的日志记录,然后针对您账户中的设备,使用 put-resource-log-levelLogLevel 设置为 ERROR

    aws iotwireless put-resource-log-level \ --resource-identifier --resource-type WirelessDevice --log-level ERROR

    在本例中,命令仅将特定无线设备资源的日志级别设置为 ERROR,而所有其他资源的日志均已禁用。此命令不会生成任何输出。要检索此信息并验证是否已设置日志级别,请使用 get-resource-log-level 命令。

  4. 在上一步中,调试问题并解决错误后,您可以运行 reset-resource-log-level 命令将该资源的日志级别重置为 null。如果您使用 put-resource-log-level 命令为多个无线设备或网关资源设置日志级别覆盖(例如,为多个设备排除故障),您可以使用 reset-all-resource-log-levels 命令为所有这些资源将日志级别覆盖重置为 null

    aws iotwireless reset-all-resource-log-levels

    此命令不会生成任何输出。要检索资源的日志记录信息,请运行 get-resource-log-level 命令。

后续步骤

您已了解如何创建日志记录角色并使用 AWS IoT Wireless API 用于配置 适用于 LoRaWAN 的 AWS IoT Core 资源的日志记录。接下来,要了解有关监控日志条目的信息,请转到 使用 CloudWatch Logs 监控 AWS IoT Wireless