CloudWatch AWS IoT 日志条目 - AWS IoT
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

CloudWatch AWS IoT 日志条目

AWS IoT 的每个组件均会生成自己的日志条目。每个日志条目都有一个 eventType 指定导致生成日志条目的操作。本节介绍以下 AWS IoT 组件所生成的日志条目:

消息代理日志条目

AWS IoT 消息代理会生成以下事件的日志条目:

Connect 日志条目

当 MQTT 客户端连接时,AWS IoT 消息代理会生成一个 eventTypeConnect 的日志条目。

Connect 日志条目示例

{ "timestamp": "2017-08-10 15:37:23.476", "logLevel": "INFO", "traceId": "20b23f3f-d7f1-feae-169f-82263394fbdb", "accountId": "123456789012", "status": "Success", "eventType": "Connect", "protocol": "MQTT", "clientId": "abf27092886e49a8a5c1922749736453", "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167", "sourceIp": "205.251.233.181", "sourcePort": 13490 }

除了通用 CloudWatch Logs 属性之外,Connect 日志条目还包含以下属性:

clientId

发出请求的客户端的 ID。

principalId

发出请求的委托人的 ID。

协议

发出请求时使用的协议。有效值为 MQTTHTTP

sourceIp

请求的源 IP 地址。

sourcePort

请求的源端口。

Disconnect 日志条目

当 MQTT 客户端断开连接时,AWS IoT 消息代理会生成一个 eventTypeDisconnect 的日志条目。

Disconnect 日志条目示例

{ "timestamp": "2017-08-10 15:37:23.476", "logLevel": "INFO", "traceId": "20b23f3f-d7f1-feae-169f-82263394fbdb", "accountId": "123456789012", "status": "Success", "eventType": "Disconnect", "protocol": "MQTT", "clientId": "abf27092886e49a8a5c1922749736453", "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167", "sourceIp": "205.251.233.181", "sourcePort": 13490 }

除了通用 CloudWatch Logs 属性之外,Disconnect 日志条目还包含以下属性:

clientId

发出请求的客户端的 ID。

principalId

发出请求的委托人的 ID。

协议

发出请求时使用的协议。有效值为 MQTTHTTP

sourceIp

请求的源 IP 地址。

sourcePort

请求的源端口。

Publish-In 日志条目

当 AWS IoT 消息代理收到 MQTT 消息时,它会生成一个 eventTypePublish-In 的日志条目。

Publish-In 日志条目示例

{ "timestamp": "2017-08-10 15:39:30.961", "logLevel": "INFO", "traceId": "672ec480-31ce-fd8b-b5fb-22e3ac420699", "accountId": "123456789012", "status": "Success", "eventType": "Publish-In", "protocol": "MQTT", "topicName": "$aws/things/MyThing/shadow/get", "clientId": "abf27092886e49a8a5c1922749736453", "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167", "sourceIp": "205.251.233.181", "sourcePort": 13490 }

除了通用 CloudWatch Logs 属性之外,Publish-In 日志条目还包含以下属性:

clientId

发出请求的客户端的 ID。

principalId

发出请求的委托人的 ID。

协议

发出请求时使用的协议。有效值为 MQTTHTTP

sourceIp

请求的源 IP 地址。

sourcePort

请求的源端口。

topicName

已订阅主题的名称。

Publish-Out 日志条目

当消息代理发布 MQTT 消息时,它会生成一个 eventTypePublish-Out 的日志条目

Publish-Out 日志条目示例

{ "timestamp": "2017-08-10 15:39:30.961", "logLevel": "INFO", "traceId": "672ec480-31ce-fd8b-b5fb-22e3ac420699", "accountId": "123456789012", "status": "Success", "eventType": "Publish-Out", "protocol": "MQTT", "topicName": "$aws/things/MyThing/shadow/get", "clientId": "abf27092886e49a8a5c1922749736453", "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167", "sourceIp": "205.251.233.181", "sourcePort": 13490 }

除了通用 CloudWatch Logs 属性之外,Publish-Out 日志条目还包含以下属性:

clientId

发出请求的客户端的 ID。

principalId

发出请求的委托人的 ID。

协议

发出请求时使用的协议。有效值为 MQTTHTTP

sourceIp

请求的源 IP 地址。

sourcePort

请求的源端口。

topicName

已订阅主题的名称。

Subscribe 日志条目

当 MQTT 客户端订阅主题时,AWS IoT 消息代理会生成一个 eventTypeSubscribe 的日志条目。

Subscribe 日志条目示例

{ "timestamp": "2017-08-10 15:39:04.413", "logLevel": "INFO", "traceId": "7aa5c38d-1b49-3753-15dc-513ce4ab9fa6", "accountId": "123456789012", "status": "Success", "eventType": "Subscribe", "protocol": "MQTT", "topicName": "$aws/things/MyThing/shadow/#", "clientId": "abf27092886e49a8a5c1922749736453", "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167", "sourceIp": "205.251.233.181", "sourcePort": 13490 }

除了通用 CloudWatch Logs 属性之外,Subscribe 日志条目还包含以下属性:

clientId

发出请求的客户端的 ID。

principalId

发出请求的委托人的 ID。

协议

发出请求时使用的协议。有效值为 MQTTHTTP

sourceIp

请求的源 IP 地址。

sourcePort

请求的源端口。

topicName

已订阅主题的名称。

设备影子日志条目

AWS IoT Device Shadow 服务会生成以下事件的日志条目:

DeleteThingShadow 日志条目

当收到删除设备影子的请求时,Device Shadow 服务会生成一个 eventTypeDeleteThingShadow 的日志条目。

DeleteThingShadow 日志条目示例

{ "timestamp": "2017-08-07 18:47:56.664", "logLevel": "INFO", "traceId": "1a60d02e-15b9-605b-7096-a9f584a6ad3f", "accountId": "123456789012", "status": "Success", "eventType": "DeleteThingShadow", "protocol": "MQTT", "deviceShadowName": "Jack", "topicName": "$aws/things/Jack/shadow/delete" }

除了通用 CloudWatch Logs 属性之外,DeleteThingShadow 日志条目还包含以下属性:

deviceShadowName

要更新的影子的名称。

协议

发出请求时使用的协议。有效值为 MQTTHTTP

topicName

发布请求时所基于的主题的名称。

GetThingShadow 日志条目

当收到影子的获取请求时,Device Shadow 服务会生成一个 eventTypeGetThingShadow 的日志条目。

GetThingShadow 日志条目示例

{ "timestamp": "2017-08-09 17:56:30.941", "logLevel": "INFO", "traceId": "b575f19a-97a2-cf72-0ed0-c64a783a2504", "accountId": "123456789012", "status": "Success", "eventType": "GetThingShadow", "protocol": "MQTT", "deviceShadowName": "MyThing", "topicName": "$aws/things/MyThing/shadow/get" }

除了通用 CloudWatch Logs 属性之外,GetThingShadow 日志条目还包含以下属性:

deviceShadowName

所请求的影子的名称。

协议

发出请求时使用的协议。有效值为 MQTTHTTP

topicName

发布请求时所基于的主题的名称。

UpdateThingShadow 日志条目

当收到更新设备影子的请求时,Device Shadow 服务会生成一个 eventTypeUpdateThingShadow 的日志条目。

UpdateThingShadow 日志条目示例

{ "timestamp": "2017-08-07 18:43:59.436", "logLevel": "INFO", "traceId": "d0074ba8-0c4b-a400-69df-76326d414c28", "accountId": "123456789012", "status": "Success", "eventType": "UpdateThingShadow", "protocol": "MQTT", "deviceShadowName": "Jack", "topicName": "$aws/things/Jack/shadow/update" }

除了通用 CloudWatch Logs 属性之外,UpdateThingShadow 日志条目还包含以下属性:

deviceShadowName

要更新的影子的名称。

协议

发出请求时使用的协议。有效值为 MQTTHTTP

topicName

发布请求时所基于的主题的名称。

规则引擎日志条目

AWS IoT 规则引擎会生成以下事件的日志:

FunctionExecution 日志条目

当规则的 SQL 查询调用外部函数时,规则引擎会生成一个 eventTypeFunctionExecution 的日志条目。在规则的操作向 AWS IoT 或其他 Web 服务发出 HTTP 请求(例如,调用 get_thing_shadowmachinelearning_predict)时,将调用外部函数。

FunctionExecution 日志条目示例

{ "timestamp": "2017-07-13 18:33:51.903", "logLevel": "DEBUG", "traceId": "180532b7-0cc7-057b-687a-5ca1824838f5", "status": "Success", "eventType": "FunctionExecution", "clientId": "N/A", "topicName":"rules/test", "ruleName": "ruleTestPredict", "ruleAction": "MachinelearningPredict", "resources": { "ModelId": "predict-model" }, "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167" }

除了通用 CloudWatch Logs 属性之外,FunctionExecution 日志条目还包含以下属性:

clientId

N/A (针对 FunctionExecution 日志)。

principalId

发出请求的委托人的 ID。

resources

规则的操作所使用的资源的集合。

ruleName

匹配规则的名称。

topicName

已订阅主题的名称。

RuleExecution 日志条目

当 AWS IoT 规则引擎触发规则的操作时,它会生成一个 RuleExecution 日志条目。

RuleExecution 日志条目示例

{ "timestamp": "2017-08-10 16:32:46.070", "logLevel": "INFO", "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e", "accountId": "123456789012", "status": "Success", "eventType": "RuleExecution", "clientId": "abf27092886e49a8a5c1922749736453", "topicName": "rules/test", "ruleName": "JSONLogsRule", "ruleAction": "RepublishAction", "resources": { "RepublishTopic": "rules/republish" }, "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167" }

除了通用 CloudWatch Logs 属性之外,RuleExecution 日志条目还包含以下属性:

clientId

发出请求的客户端的 ID。

principalId

发出请求的委托人的 ID。

resources

规则的操作所使用的资源的集合。

ruleAction

所触发的操作的名称。

ruleName

匹配规则的名称。

topicName

已订阅主题的名称。

RuleMatch 日志条目

当消息代理收到与规则匹配的消息时,AWS IoT 规则引擎会生成一个 eventTypeRuleMatch 的日志条目。

RuleMatch 日志条目示例

{ "timestamp": "2017-08-10 16:32:46.002", "logLevel": "INFO", "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e", "accountId": "123456789012", "status": "Success", "eventType": "RuleMatch", "clientId": "abf27092886e49a8a5c1922749736453", "topicName": "rules/test", "ruleName": "JSONLogsRule", "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167" }

除了通用 CloudWatch Logs 属性之外,RuleMatch 日志条目还包含以下属性:

clientId

发出请求的客户端的 ID。

principalId

发出请求的委托人的 ID。

ruleName

匹配规则的名称。

topicName

已订阅主题的名称。

RuleMessageThrottled 日志条目

当消息受到限制时,AWS IoT 规则引擎会生成一个 eventTypeRuleMessageThrottled 的日志条目。

RuleMessageThrottled 日志条目示例

{ "timestamp": "2017-10-04 19:25:46.070", "logLevel": "ERROR", "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e", "accountId": "123456789012", "status": "Failure", "eventType": "RuleMessageThrottled", "clientId": "abf27092886e49a8a5c1922749736453", "topicName": "$aws/rules/example_rule", "ruleName": "example_rule", "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167", "reason": "RuleExecutionThrottled", "details": "Message for Rule example_rule throttled" }

除了通用 CloudWatch Logs 属性之外,RuleMessageThrottled 日志条目还包含以下属性:

clientId

发出请求的客户端的 ID。

details

错误的简要说明。

principalId

发出请求的委托人的 ID。

reason

字符串“RuleMessageThrottled”。

ruleName

要触发的规则的名称。

topicName

已发布的主题的名称。

RuleNotFound 日志条目

当 AWS IoT 规则引擎找不到具有给定名称的规则时,它会生成一个 eventTypeRuleNotFound 的日志条目。

RuleNotFound 日志条目示例

{ "timestamp": "2017-10-04 19:25:46.070", "logLevel": "ERROR", "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e", "accountId": "123456789012", "status": "Failure", "eventType": "RuleNotFound", "clientId": "abf27092886e49a8a5c1922749736453", "topicName": "$aws/rules/example_rule", "ruleName": "example_rule", "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167", "reason": "RuleNotFound", "details": "Rule example_rule not found" }

除了通用 CloudWatch Logs 属性之外,RuleNotFound 日志条目还包含以下属性:

clientId

发出请求的客户端的 ID。

details

错误的简要说明。

principalId

发出请求的委托人的 ID。

reason

字符串“RuleNotFound”。

ruleName

找不到的规则的名称。

topicName

已发布的主题的名称。

StartingRuleExecution 日志条目

当 AWS IoT 规则引擎开始触发规则的操作时,它会生成一个 eventTypeStartingRuleExecution 的日志条目。

StartingRuleExecution 日志条目示例

{ "timestamp": "2017-08-10 16:32:46.002", "logLevel": "DEBUG", "traceId": "30aa7ccc-1d23-0b97-aa7b-76196d83537e", "accountId": "123456789012", "status": "Success", "eventType": "StartingRuleExecution", "clientId": "abf27092886e49a8a5c1922749736453", "topicName": "rules/test", "ruleName": "JSONLogsRule", "ruleAction": "RepublishAction", "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a932167" }

除了通用 CloudWatch Logs 属性之外,rule- 日志条目还包含以下属性:

clientId

发出请求的客户端的 ID。

principalId

发出请求的委托人的 ID。

ruleAction

所触发的操作的名称。

ruleName

匹配规则的名称。

topicName

已订阅主题的名称。

作业日志条目

AWS IoT 作业服务会生成以下事件的日志条目。当从设备收到 MQTT 或 HTTP 请求时,将生成日志条目。

DescribeJobExecution 日志条目

当服务收到描述作业执行的请求时,AWS IoT 作业服务会生成一个 eventTypeDescribeJobExecution 的日志条目。

DescribeJobExecution 日志条目示例

{ "timestamp": "2017-08-10 19:13:22.841", "logLevel": "DEBUG", "accountId": "123456789012", "status": "Success", "eventType": "DescribeJobExecution", "protocol": "MQTT", "clientId": "thingOne", "jobId": "002", "topicName": "$aws/things/thingOne/jobs/002/get", "clientToken": "myToken", "details": "The request status is SUCCESS." }

除了通用 CloudWatch Logs 属性之外,GetJobExecution 日志条目还包含以下属性:

clientId

发出请求的客户端的 ID。

clientToken

用于确保请求幂等性的唯一、区分大小写的标识符。有关更多信息,请参阅如何确保幂等性

details

来自 Jobs 服务的其他信息。

jobId

作业执行的作业 ID。

协议

发出请求时使用的协议。有效值为 MQTTHTTP

topicName

发出请求所使用的主题。

GetPendingJobExecution 日志条目

当服务收到作业执行请求时,AWS IoT 作业服务会生成一个 eventTypeGetPendingJobExecution 的日志条目。

GetPendingJobExecution 日志条目示例

{ "timestamp": "2018-06-13 17:45:17.197", "logLevel": "DEBUG", "accountId": "123456789012", "status": "Success", "eventType": "GetPendingJobExecution", "protocol": "MQTT", "clientId": "299966ad-54de-40b4-99d3-4fc8b52da0c5", "topicName": "$aws/things/299966ad-54de-40b4-99d3-4fc8b52da0c5/jobs/get", "clientToken": "24b9a741-15a7-44fc-bd3c-1ff2e34e5e82", "details": "The request status is SUCCESS." }

除了通用 CloudWatch Logs 属性之外,GetPendingJobExecution 日志条目还包含以下属性:

clientId

发出请求的客户端的 ID。

clientToken

用于确保请求幂等性的唯一、区分大小写的标识符。有关更多信息,请参阅如何确保幂等性

details

来自 Jobs 服务的其他信息。

协议

发出请求时使用的协议。有效值为 MQTTHTTP

topicName

已订阅主题的名称。

ReportFinalJobExecutionCount 日志条目

当作业完成时,AWS IoT 作业服务会生成一个 entryTypeReportFinalJobExecutionCount 的日志条目。

ReportFinalJobExecutionCount 日志条目示例

{ "timestamp": "2017-08-10 19:44:16.776", "logLevel": "INFO", "accountId": "123456789012", "status": "Success", "eventType": "ReportFinalJobExecutionCount", "jobId": "002", "details": "Job 002 completed. QUEUED job execution count: 0 IN_PROGRESS job execution count: 0 FAILED job execution count: 0 SUCCEEDED job execution count: 1 CANCELED job execution count: 0 REJECTED job execution count: 0 REMOVED job execution count: 0" }

除了通用 CloudWatch Logs 属性之外,ReportFinalJobExecutionCount 日志条目还包含以下属性:

details

来自 Jobs 服务的其他信息。

jobId

作业执行的作业 ID。

StartNextPendingJobExecution 日志条目

当服务收到开始执行下一个待处理作业的请求时,AWS IoT 作业服务会生成一个 eventTypeStartNextPendingJobExecution 的日志条目。

StartNextPendingJobExecution 日志条目示例

{ "timestamp": "2018-06-13 17:49:51.036", "logLevel": "DEBUG", "accountId": "123456789012", "status": "Success", "eventType": "StartNextPendingJobExecution", "protocol": "MQTT", "clientId": "95c47808-b1ca-4794-bc68-a588d6d9216c", "topicName": "$aws/things/95c47808-b1ca-4794-bc68-a588d6d9216c/jobs/start-next", "clientToken": "bd7447c4-3a05-49f4-8517-dd89b2c68d94", "details": "The request status is SUCCESS." }

除了通用 CloudWatch Logs 属性之外,StartNextPendingJobExecution 日志条目还包含以下属性:

clientId

发出请求的客户端的 ID。

clientToken

用于确保请求幂等性的唯一、区分大小写的标识符。有关更多信息,请参阅如何确保幂等性

details

来自 Jobs 服务的其他信息。

协议

发出请求时使用的协议。有效值为 MQTTHTTP

topicName

发出请求所使用的主题。

UpdateJobExecution 日志条目

当服务收到更新作业执行的请求时,AWS IoT 作业服务会生成一个 eventTypeUpdateJobExecution 的日志条目。

UpdateJobExecution 日志条目示例

{ "timestamp": "2017-08-10 19:25:14.758", "logLevel": "DEBUG", "accountId": "123456789012", "status": "Success", "eventType": "UpdateJobExecution", "protocol": "MQTT", "clientId": "thingOne", "jobId": "002", "topicName": "$aws/things/thingOne/jobs/002/update", "clientToken": "myClientToken", "versionNumber": "1", "details": "The destination status is IN_PROGRESS. The request status is SUCCESS." }

除了通用 CloudWatch Logs 属性之外,UpdateJobExecution 日志条目还包含以下属性:

clientId

发出请求的客户端的 ID。

clientToken

用于确保请求幂等性的唯一、区分大小写的标识符。有关更多信息,请参阅如何确保幂等性

details

来自 Jobs 服务的其他信息。

jobId

作业执行的作业 ID。

协议

发出请求时使用的协议。有效值为 MQTTHTTP

topicName

发出请求所使用的主题。

versionNumber

作业执行的版本。

设备预配置日志条目

AWS IoT 设备预配置服务会生成以下事件的日志。

GetDeviceCredentials 日志条目

当客户端调用 GetDeviceCredential 时,AWS IoT 设备预配置服务会生成一个 eventTypeGetDeviceCredential 的日志条目。

GetDeviceCredentials 日志条目示例

{ "timestamp" : "2019-02-20 20:31:22.932", "logLevel" : "INFO", "traceId" : "8d9c016f-6cc7-441e-8909-7ee3d5563405", "accountId" : "123456789101", "status" : "Success", "eventType" : "GetDeviceCredentials", "deviceCertificateId" : "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "details" : "Additional details about this log." }

除了通用 CloudWatch Logs 属性之外,GetDeviceCredentials 日志条目还包含以下属性:

details

错误的简要说明。

deviceCertificateId

设备证书的 ID。

ProvisionDevice 日志条目

当客户端调用 ProvisionDevice 时,AWS IoT 设备预配置服务会生成一个 eventTypeProvisionDevice 的日志条目。

ProvisionDevice 日志条目示例

{ "timestamp" : "2019-02-20 20:31:22.932", "logLevel" : "INFO", "traceId" : "8d9c016f-6cc7-441e-8909-7ee3d5563405", "accountId" : "123456789101", "status" : "Success", "eventType" : "ProvisionDevice", "provisioningTemplateName" : "myTemplate", "deviceCertificateId" : "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "details" : "Additional details about this log." }

除了通用 CloudWatch Logs 属性之外,ProvisionDevice 日志条目还包含以下属性:

details

错误的简要说明。

deviceCertificateId

设备证书的 ID。

provisioningTemplateName

预配置模板的名称。

动态事物组日志条目

AWS IoT 动态事物组为以下事件生成日志。

AddThingToDynamicThingGroupsFailed 日志条目

当 AWS IoT 无法将事物添加到指定的动态组时,它会生成一个 eventTypeAddThingToDynamicThingGroupsFailed 的日志条目。当事物满足要处于动态事物组中的条件时,就会发生此情况;但是,无法将其添加到动态组中,或者无法将其从动态组中删除。这可能是因为:

  • 事物已经属于最大数量的组数。

  • --override-dynamic-groups 选项用于将事物添加到静态事物组中。它已被从一个动态事物组中删除,以便可以再添加。

有关更多信息,请参阅动态事物组限制和冲突

AddThingToDynamicThingGroupsFailed 日志条目示例

此示例显示 AddThingToDynamicThingGroupsFailed 错误的日志条目。在此示例中,TestThing 符合 dynamicThingGroupNames 中列出的要处于动态事物组中的条件,但无法添加到这些动态组中,如 reason 中所述。

{ "timestamp": "2020-03-16 22:24:43.804", "logLevel": "ERROR", "traceId": "70b1f2f5-d95e-f897-9dcc-31e68c3e1a30", "accountId": "571032923833", "status": "Failure", "eventType": "AddThingToDynamicThingGroupsFailed", "thingName": "TestThing", "dynamicThingGroupNames": [ "DynamicThingGroup11", "DynamicThingGroup12", "DynamicThingGroup13", "DynamicThingGroup14" ], "reason": "The thing failed to be added to the given dynamic thing group(s) because the thing already belongs to the maximum allowed number of groups." }

除了通用 CloudWatch Logs 属性之外,AddThingToDynamicThingGroupsFailed 日志条目还包含以下属性:

dynamicThingGroupNames

无法向其中添加该事物的动态事物组的数组。

reason

事物无法添加到动态事物组的原因。

thingName

无法添加到动态事物组的事物的名称。

通用 CloudWatch Logs 属性

所有 CloudWatch Logs 日志条目都包含这些属性:

accountId

您的 AWS 账户 ID。

eventType

已为其生成日志的事件类型。事件类型的值取决于生成日志条目的事件。每个日志条目描述都包括该日志条目的 eventType 的值。

logLevel

所使用的日志级别。有关更多信息,请参阅 日志级别

status

请求的状态。

timestamp

客户端连接到 AWS IoT 消息代理的时间的 UNIX 时间戳。

traceId

一个随机生成的标识符,可用于将特定请求的所有日志关联起来。