View a markdown version of this page

配置 Amazon IoT 日志记录 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置 Amazon IoT 日志记录

必须使用启用日志记录 Amazon IoT 控制台、CLI 或 API,然后才能监控和记录 Amazon IoT 活动。您可以为配置日志 Amazon IoT 分为三个级别:账户级别、事件级别或资源特定级别。 Event-level 而且特定资源的日志记录仅适用于 V2 日志记录。使用 V1 日志记录的客户必须迁移到 V2 才能访问这些功能。参见 详细信息。

在考虑如何配置你的 Amazon IoT 日志,账户级别的日志记录配置决定了如何 Amazon IoT 除非另有说明,否则将记录活动。首先,你可能需要获取默认的详细日志 日志级别 信息或调试。查看初始日志后,您可以将默认日志级别更改为不那么详细的级别,例如账户或事件级别的 WARN 或 ERROR,并对可能需要更多关注的资源设置更详细的特定资源日志级别。日志级别可随时更改。

本主题介绍云端登录 Amazon IoT。有关设备端日志记录和监控的信息,请参阅 将设备端日志上传到 CloudWatch。

有关记录和监控的信息 Amazon IoT Greengrass,参见 登录和监控 Amazon IoT Greengrass。

配置 V2 登录 Amazon IoT

确定您的日志版本

这个 GetV2LoggingOptions API 返回 a NotConfiguredException 如果未启用 V2 日志记录。当使用 V1 日志记录或未配置日志记录时,就会出现此错误。

了解 V2 日志记录功能

V2 日志记录提供两项关键功能:事件级日志记录和特定资源日志。 Event-level 日志记录允许使用可自定义的日志级别进行有针对性的日志记录配置,以及 CloudWatch 日志组目的地。 Resource-specific 日志记录允许您按事物组、来源 IP、客户端 ID 或主体 ID 筛选日志。这些功能共同提供了对物联网运营的精细控制和全面的可见性,通过消除不必要的日志记录活动来提高日志可搜索性并降低成本。

从 V1 迁移到 V2

您可以使用迁移到 V2 日志记录 SetV2LoggingOptions API 可通过任一方式实现 Amazon CLI 或 SDK。迁移后, Amazon IoT 自动将所有日志路由到 CloudWatch 日志组 'AWSIotLogsV2'。重要:如果您的下游应用程序或资源消耗了来自 “的信息AWSIotLogs',更新它们以使用相应的日志组路径。

配置日志记录角色和策略

在启用登录功能之前 Amazon IoT,您必须创建一个 IAM 角色和一个提供以下条件的策略 Amazon IoT 写作权限 Amazon IoT 将活动记录到 CloudWatch 代表你登录群组。您还可以使用所需的策略生成 IAM 角色 的 “日志” 部分 Amazon IoT 控制台。

注意

启用之前 Amazon IoT 登录,确保你理解 CloudWatch 记录访问权限。有权访问的用户 CloudWatch 日志可以查看来自您的设备的调试信息。有关更多信息,请参阅 亚马逊的身份验证和访问控制 CloudWatch 日志。

如果您预计会出现高流量模式 Amazon IoT Core 由于负载测试,请考虑禁用 IoT 日志记录以防止限制。如果检测到高流量,我们的服务可能会禁用您账户中的日志记录。

以下显示了如何为创建日志角色和策略 Amazon IoT Core 资源。

创建日志记录角色

要创建日志记录角色,请打开 IAM 控制台的角色中心并选择 Create role(创建角色)。

  1. 在选择受信任的实体下,选择 Amazon 服务。然后在使用案例下,选择 IoT。如果您看不到 IoT,请在其他 Amazon 服务的使用案例:下拉菜单中输入并搜索 IoT。选择下一步。

  2. 在 Add permissions(添加权限)页面上,您将看到自动附加到服务角色的策略。选择下一步。

  3. 在 Name, review, and create(命名、检查和创建)页面上,为此角色输入 Role name(角色名称)和 Role description(角色描述),然后选择 Create role(创建角色)。

日志记录角色策略

以下策略文档提供了允许的角色策略和信任策略 Amazon IoT 将日志条目提交到 CloudWatch 以你的名义。如果您使用自定义配置事件级日志记录 CloudWatch 日志组,必须更新角色策略以包含自定义资源 ARN。

如果你也允许 Amazon IoT Core for LoRaWAN 要提交日志条目,您将看到为您创建的记录这两项活动的策略文档。

注意

在您创建日志记录角色时已为您创建这些文档。这些文件有变量, ${partition}, ${region} ,以及 ${accountId} ,你必须将其替换为你的价值观。

  • 将分区替换为该区域的分区。

  • 将区域替换为 Amazon 您使用的区域。确保你使用相同的 Amazon 您用来配置的区域 Amazon 设备上的 CLI。

  • 用你的 account-id 替换 Amazon 账户 ID。

角色策略:

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:PutMetricFilter", "logs:PutRetentionPolicy" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:AWSIotLogsV2" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:AWSIotLogsV2:log-stream:*" ] } ] }

仅限登录的信任政策 Amazon IoT Core 活动:

{ "Version":"2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Amazon IoT 日志记录可能无法将日志发布到 CloudWatch 由于 IAM 角色权限不足而导致的日志。发生这种情况时,请检查 CloudWatch 记录指标 调查故障并排除故障。

在... 中配置登录 Amazon IoT (控制台)

本节介绍如何配置 Amazon IoT 使用 Amazon IoT 控制台。您可以设置账户级、事件级别和特定资源的日志记录。

进行配置 Amazon IoT 记录:
  1. 登录 Amazon IoT 控制台。有关更多信息,请参阅 打开 Amazon IoT 控制台。

  2. 在左侧导航窗格中,选择 日志 (以前是 “设置” 下的部分)。

  3. 配置账户级别日志:账户级别日志记录适用于您的所有 Amazon IoT 队列(设备或终端节点),除非被事件级别或资源特定设置所覆盖。

    1. 在下面 Account-level 登录,选择 管理账户级别的日志 进行更新。

    2. 选择 “启用日志记录” 复选框以开始将日志发送到 CloudWatch。当未选中 “启用日志记录” 时, Amazon IoT 不会将任何日志发送到 CloudWatch 日志组,无论事件级别或资源级别的日志配置如何。

    3. 在下面 IAM 日志角色,从下拉列表中选择现有角色。你可以 查看角色详情 检查角色权限。或者,选择 创建新角色 设置新的 IAM 角色。日志角色提供的策略允许 Amazon IoT 将日志条目提交到 CloudWatch 以你的名义。如果您使用自定义配置事件级日志记录 CloudWatch 日志组,必须更新角色策略以包括该日志组的 ARN。

    4. 选择 默认日志级别 它对应于 细节级别 您要显示的日志条目中的条目 CloudWatch 日志。注意:日志级别 “DEBUG” 提供了最多的细节,但会增加 CloudWatch 成本。 CloudWatch 无法在账户级别配置日志组目标。但是,您可以为单个事件类型指定自定义日志组,如下一节所述。

    5. 选择 更新日志 保存您的更改。

  4. Event-level 日志记录允许您有选择地捕获相关事件的日志,并将其定向到专用 CloudWatch 日志组。这使您可以灵活地按用例整理日志,以提高可发现性,与不同的受众共享并减少 CloudWatch 通过启用日志和根据事件严重程度设置日志级别来降低成本。

    配置 事件级日志: 事件级日志记录捕获特定信息 Amazon IoT 事件,例如客户端身份验证尝试。这些设置会覆盖 Account-Level 记录。

    1. 在下面 Event-level 记录 部分,选择 管理事件级日志 进行更新。

    2. 默认情况下,事件类型继承账户级别的日志配置。注意:配置特定资源的日志记录时,它会覆盖账户和事件级别的设置。

    3. 要修改单个事件的设置,请单击相应事件行中的值。您可以调整日志级别和 CloudWatch 日志组目标。指定自定义时 CloudWatch 日志组目标,您必须验证 IAM 角色策略是否包含新日志组的权限。未能更新角色策略将阻止 Amazon IoT 从写入日志到自定义日志组。做出选择后,点击复选标记以确认您的选择。这个 '已修改' 列将显示 “是” 以表示待处理的更改。

    4. 点击 更新日志 应用您的更改或选择 取消 丢弃。

  5. 配置 Resource-specific 覆盖: Resource-specific 覆盖将日志设置应用于所选资源。资源可以是事物组、来源 IP、客户端 ID 或主体 ID。 Resource-specific 日志配置会覆盖账户级别和事件级别的设置。启用后,它将在为指定资源配置的日志记录级别上为所有事件类型生成日志。例如,您可以为特定事物设置调试级别的日志记录,同时为所有其他事物保留信息级别的日志记录。

    1. 选择 添加特定资源的替代 在 Resource-specific 覆盖部分。

    2. 选择日志目标:事物组、源 IP、客户端 ID 或主体 ID。

    3. 为所选目标类型输入相应的日志目标值。

    4. 从的下拉菜单中选择所需的日志级别 Resource-specific 日志级别部分。

    5. 点击 提交 添加替代项或 取消 丢弃更改。

    6. 要修改现有的特定资源覆盖,请选中该资源旁边的复选框,然后单击 “移除” 以删除该替代或单击 “编辑” 进行修改。

启用日志记录后,请访问 查看 Amazon IoT 登录 CloudWatch 控制台 以了解有关查看日志条目的更多信息。

配置账户和 Event-level 登录 Amazon IoT (CLI)

本节介绍如何为配置全局日志 Amazon IoT 通过使用 CLI。

您可以选择配置 Event-level 记录。 Event-level 日志记录捕获事件级别的日志信息,例如身份验证和授权或证书创建事件。您可以自定义日志级别和 CloudWatch 事件级别的日志组目的地。 Event-level 与账户级别的日志记录相比,日志记录在更具针对性的级别上运行,因此会覆盖账户级别的日志记录设置。这种分层方法允许您根据操作重要性和成本考虑为不同类型的事件维护不同的日志记录策略。

注意

您需要提供要使用角色的 Amazon 资源名称(ARN)。如果需要创建用于日志记录的角色,请参阅 创建日志记录角色,然后继续操作。指定自定义时 CloudWatch 日志组对于任何事件类型,请确保您的日志角色具有目标日志组所需的权限。

用于调用 API 的委托人对于您的日志记录角色必须具有传递角色权限。

您也可以使用 API 中的方法来执行此过程 Amazon 与此处显示的 CLI 命令相对应的 API。

使用 CLI 为配置默认日志 Amazon IoT
  1. 使用 set-v2-logging-options 命令为您的账户设置日志记录选项。

    aws iot set-v2-logging-options \ --event-configurations event-configuration-list \ --role-arn logging-role-arn \ --default-log-level log-level

    其中:

    --role-arn

    授予的角色 ARN Amazon IoT 写入您的登录信息的权限 CloudWatch 日志。 Role-arn 初始设置需要配置。

    --default-log-level

    要使用的日志级别。有效值为: ERROR, WARN, INFO, DEBUG,或 DISABLED。 Default-log-level 初始设置需要配置。

    --no-disable-all-logs

    启用所有功能的可选参数 Amazon IoT 记录。使用此参数可在当前禁用日志记录时启用日志记录。

    --disable-all-logs

    禁用所有功能的可选参数 Amazon IoT 记录。使用此参数可在当前启用日志记录时禁用日志记录。

    --event-configurations

    此参数是可选的,允许您为单个事件类型自定义日志记录设置:

    • EventType:覆盖账户级别设置的事件类型

    • LogLevel:使用 DEBUG、INFO、ERROR、WARN 或 DISABLED 覆盖账户级别设置

    • 日志目标:指定自定义 CloudWatch 用于传输日志的日志组

    您可以为每种事件类型单独配置日志记录级别和日志目的地。如果未指定,则事件将继承账户级别的设置

    aws iot set-v2-logging-options \ --event-configurations "[{\"eventType\":\"Publish-In\",\"logLevel\":\"INFO\",\"logDestination\":\"examplePublishInLogGroup\"}]"
  2. 使用 get-v2-logging-options 命令获取当前日志记录选项。

    aws iot get-v2-logging-options \ --verbose

    其中:

    --verbose

    一个可选参数,使您能够检索所有事件类型及其配置。

启用日志记录后,请访问 查看 Amazon IoT 登录 CloudWatch 控制台 以了解有关查看日志条目的更多信息。

注意

Amazon IoT 继续支持较旧的命令 (set-logging-options 和 get-logging-options) 来设置并获取您的账户的全局登录信息。请注意,使用这些命令时,生成的日志将包含纯文本而不是 JSON 有效载荷,并且日志记录延迟通常会更高。将不会再对这些较早命令的实施进行更多改进。我们建议您使用 “v2” 版本 配置您的日志选项,并在可能的情况下更改使用旧版本的旧版应用程序。

配置 Resource-specific 覆盖 Amazon IoT (CLI)

本节介绍如何配置 Resource-specific 的覆盖 Amazon IoT 通过使用 CLI。 Resource-specific 覆盖允许您为由事物组、客户端 ID、来源 IP 或主体 ID 标识的特定资源指定日志记录级别。启用特定资源的日志记录后,它会覆盖账户级别和事件级别的设置。所有事件类型都将在配置的日志记录级别为指定资源生成日志,即使这些事件在事件级别配置中被禁用也是如此。

事物组可包含其它事物组以创建分层关系。此流程介绍如何配置单个事物组的日志记录。您可以将此流程应用于层次结构中的父事物组,以配置层次结构中所有事物组的日志记录。您也可以将此流程应用于子事情组,以覆盖其父级的日志记录配置。

一个事物可以是一个事物组的成员。这种成员资格允许该事物继承应用于该事物组的配置、策略和设置。事物组用于集体管理和应用设置到多个事物,而不是单独处理每个事物。当您的客户端 ID 与事物名称匹配时, Amazon IoT Core 会自动将客户端会话与相应的事物资源相关联。这允许客户端会话继承应用于该事物所属事物组的配置和设置,包括日志记录级别。如果您的客户端 ID 与事物名称不匹配,您可以启用独占事物附件来建立关联。有关更多信息,请参阅 关联一个 Amazon IoT 与 MQTT 客户端连接相关的东西。

除了事物组之外,您还可以录入目标,例如设备的客户端 ID、源 IP 和主体 ID。

注意

您需要提供要使用角色的 Amazon 资源名称(ARN)。如果需要创建用于日志记录的角色,请参阅 创建日志记录角色,然后继续操作。

用于调用 API 的委托人对于您的日志记录角色必须具有传递角色权限。

您也可以使用 API 中的方法来执行此过程 Amazon 与此处显示的 CLI 命令相对应的 API。

使用 CLI 进行配置 Resource-specific 的覆盖 Amazon IoT
  1. 在使用以下命令配置特定资源日志记录之前,启用账户级日志记录:aws iot set-v2-logging-options 命令

  2. 使用 set-v2-logging-level 要配置的命令 Resource-specific 覆盖。有关事物组配置的示例,请参见以下示例:

    aws iot set-v2-logging-level \ --log-target targetType=THING_GROUP,targetName=thing_group_name \ --log-level log_level
    --log-target

    您要配置日志记录的资源的类型和名称。targetType 值必须是下列项之一:THING_GROUP | CLIENT_ID | SOURCE_IP | PRINCIPAL_ID。log-target 参数值可以是文本(如前面的命令示例所示),也可以是 JSON 字符串,如以下示例所示。

    aws iot set-v2-logging-level \ --log-target '{"targetType": "THING_GROUP","targetName": "thing_group_name"}' \ --log-level log_level
    --log-level

    为指定资源生成日志时使用的日志记录级别。有效值为:DEBUG、INFO、ERROR、WARN 和 DISABLED。

  3. 使用 list-v2-logging-levels 命令列出当前配置的日志记录级别。

    aws iot list-v2-logging-levels
  4. 使用 delete-v2-logging-level 命令删除资源特定的日志记录级别,比如下面的例子。

    aws iot delete-v2-logging-level \ --target-type "THING_GROUP" \ --target-name "thing_group_name"
    aws iot delete-v2-logging-level \ --target-type=CLIENT_ID --target-name=ClientId1
    --target-type

    target-type 值必须是下列项之一:THING_GROUP | CLIENT_ID | SOURCE_IP | PRINCIPAL_ID。

    --target-name

    要删除日志记录级别的事物组的名称。

日志级别

这些日志级别确定记录的事件,并应用于默认日志级别和资源特定的日志级别。

ERROR

导致操作失败的任何错误。

示例:由于证书过期,无法对设备进行身份验证。

日志仅包含 ERROR 信息。

警告

可能导致系统中出现不一致问题,但不会导致操作失败的所有情况。

示例:接近消息速率限制。

日志包括 ERROR 和 WARN 信息。

INFO

High-level 有关事物流动的信息。

示例:客户端成功订阅了 MQTT 主题。

日志包括 INFO、ERROR 和 WARN 信息。

调试

可能有助于调试问题的信息。

示例:IoT 规则引擎检测到一条发布到规则主题的消息”rule/test” 并成功开始执行。该规则配置为 RepublishAction。

日志包括 DEBUG、INFO、ERROR 和 WARN 信息。

DISABLED

所有日志记录均处于禁用状态。