Azure IoT 中心监视数据参考

本文包含此服务的所有监视参考信息。

有关可以为 IoT 中心收集的数据以及如何使用这些数据的详细信息,请参阅“监视 Azure IoT”。

指标

本部分列出了为此服务自动收集的所有平台指标。 这些指标也是 Azure Monitor 中支持的所有平台指标的全局列表的一部分。

有关指标保留的信息,请参阅 Azure Monitor 指标概述

Microsoft.Devices/IoTHubs 支持的指标

下表列出了可用于 Microsoft.Devices/IoTHubs 资源类型的指标。

  • 并非所有列都显示在每个表中。
  • 某些列可能超出了页面的查看区域。 选择“展开表”以查看所有可用列。

表标题

  • 类别 - 指标组或分类。
  • 指标 - 在 Azure 门户中显示的指标显示名称。
  • REST API 中的名称 - 在 REST API 中引用的指标名称。
  • 单位 - 度量单位。
  • 聚合 - 默认的聚合类型。 有效值:平均值(平均)、最小值(最小值)、最大值(最大值)、总计(总和)、计数。
  • 维度 - 适用于指标的维度
  • 时间粒度 - 对指标采样的间隔。 例如,PT1M 表示该指标每分钟采样一次,PT30M 表示每 30 分钟一次,PT1H 表示每小时一次,以此类推。
  • DS 导出 - 是否可通过诊断设置将指标导出到 Azure Monitor 日志。 要了解如何导出指标的信息,请参阅在 Azure Monitor 中创建诊断设置

支持的聚合

表中的“聚合类型”列对应于为图表或警报选择指标时使用的默认聚合

显示指标聚合的屏幕截图。

对于大多数指标,所有聚合类型都有效。 对于“单位”列值为“计数”的计数指标,只有某些聚合有效。 计数指标可以是以下两种类型之一:

  • 对于单点计数指标,IoT 中心每次执行测量操作时都会注册一个数据点(实质上为 1)。 然后 Azure Monitor 在指定的粒度上对这些数据点进行求和。 单点指标的示例有发送的遥测消息数和已完成的 C2D 消息传递次数 。 对于这些指标,唯一相关的聚合类型为总计(总和)。 通过门户可选择最小值、最大值和平均值。 这些值始终为 1。

  • 对于快照计数指标,当进行测量操作时,IoT 中心将登记总计数。 当前,IoT 中心发布了三种快照指标:已使用的消息总数、设备总数和已连接设备数。 因为这些指标每次都显示一个“总数”,所以在指定的粒度上对它们进行求和没有任何意义。 Azure Monitor 仅限为这些指标的聚合类型选择平均值、最小值和最大值。

指标维度

有关指标维度定义的信息,请参阅多维指标

此服务具有以下与其指标关联的维度。

维度名称 说明
EndpointName 终结点名称
EndpointType eventHubsserviceBusQueuescosmosDBserviceBusTopicsbuiltinblobStorage
EventType Microsoft.Devices.DeviceCreatedMicrosoft.Devices.DeviceDeletedMicrosoft.Devices.DeviceConnectedMicrosoft.Devices.DeviceDisconnectedMicrosoft.Devices.DeviceTelemetry
有关详细信息,请参阅事件类型
FailureReasonCategory 以下值之一:invaliddroppedorphanednull
结果 successfailure
RoutingSource Device Messages, Twin Change Events, Device Lifecycle Events

指标显示名称和聚合

下表提供了有关上表中所述指标的更多信息。 这些表格按常规类别显示 IoT 中心平台指标,并按指标在 Azure 门户中获配的显示名称予以列出。

云到设备命令指标:

指标显示名称 指标 计价单位 说明
过期的 C2D 消息数 C2DMessagesExpired 计数 过期的云到设备消息数
已完成的 C2D 消息传递次数 c2d.commands.egress.complete.success 计数 设备成功完成的云到设备消息传递次数
丢弃的 C2D 消息数 c2d.commands.egress.abandon.success 计数 设备丢弃的云到设备消息数
拒绝的 C2D 消息数 c2d.commands.egress.reject.success 计数 设备拒绝的云到设备消息数

对于“计价单位”值为“计数”的指标,只有总计(总和)聚合有效 。 最小值、最大值和平均值聚合始终返回 1。 有关详细信息,请参阅支持的聚合

云到设备直接方法指标:

指标显示名称 指标 计价单位 说明
失败的直接方法调用数 c2d.methods.failure 计数 所有失败直接方法调用的计数。
直接方法调用的请求大小 c2d.methods.requestSize 字节 所有成功的直接方法请求计数。
直接方法调用的响应大小 c2d.methods.responseSize 字节 所有成功的直接方法响应计数。
成功的直接方法调用数 c2d.methods.success 计数 所有成功的直接方法调用的计数。

对于“计价单位”值为“计数”的指标,只有总计(总和)聚合有效 。 最小值、最大值和平均值聚合始终返回 1。 有关详细信息,请参阅支持的聚合

云到设备孪生操作指标:

指标显示名称 指标 计价单位 说明
后端的失败孪生读取数 c2d.twin.read.failure 计数 由后端发起的所有失败孪生读取的计数。
后端的失败孪生更新数 c2d.twin.update.failure 计数 由后端发起的所有失败孪生更新的计数。
后端的孪生读取的响应大小 c2d.twin.read.size 字节 由后端发起的所有成功孪生读取的计数。
后端的失败孪生更新大小 c2d.twin.update.size 字节 由后端发起的所有成功孪生更新的总大小。
后端的成功孪生读取数 c2d.twin.read.success 计数 由后端发起的所有成功孪生读取的计数。
后端的成功孪生更新数 c2d.twin.update.success 计数 由后端发起的所有成功孪生更新的计数。

对于“计价单位”值为“计数”的指标,只有总计(总和)聚合有效 。 最小值、最大值和平均值聚合始终返回 1。 有关详细信息,请参阅支持的聚合

配置指标:

指标显示名称 指标 计价单位 说明
配置指标 配置 计数 在一组目标设备上为设备配置和 IoT Edge 部署执行的 CRUD 操作总数。 包括由于这些配置而修改设备孪生或模块孪生的操作的数量。

对于“计价单位”值为“计数”的指标,只有总计(总和)聚合有效 。 最小值、最大值和平均值聚合始终返回 1。 有关详细信息,请参阅支持的聚合

每日配额指标:

指标显示名称 指标 计价单位 说明
设备数据用量总计 deviceDataUsage 字节 从与 IotHub 相连的任意设备传出的字节,以及传入到与 IotHub 相连的任意设备的字节
设备数据用量总计(预览) deviceDataUsageV2 总计 从与 IotHub 相连的任意设备传出的字节,以及传入到与 IotHub 相连的任意设备的字节
已使用的消息总数 dailyMessageQuotaUsed 计数 今天使用的消息总数。 累积值,每日 00:00 UTC 重置为零。

对于“已使用的消息总数”,只支持最小值、最大值和平均值聚合。 有关详细信息,请参阅支持的聚合

设备指标:

指标显示名称 指标 计价单位 说明
设备总数(已弃用) devices.totalDevices 计数 已注册到 IoT 中心的设备数目
连接的设备数(已弃用) devices.connectedDevices.allProtocol 计数 已连接到 IoT 中心的设备数目
设备总数 totalDeviceCount 计数 已注册到 IoT 中心的设备数目
已连接的设备数 connectedDeviceCount 计数 已连接到 IoT 中心的设备数目

对于设备总数(已弃用)和连接的设备数(已弃用),只有总计(总和)聚合有效 。 最小值、最大值和平均值聚合始终返回 1。 有关详细信息,请参阅支持的聚合

对于设备总数和已连接设备数,只有最小值、最大值和平均值聚合有效。 有关详细信息,请参阅支持的聚合

无法通过诊断设置导出“设备总数”和“连接的设备”。

设备遥测指标:

指标显示名称 指标 计价单位 说明
限制错误数 d2c.telemetry.ingress.sendThrottle 计数 由于设备吞吐量限制而导致的限制错误数
遥测消息发送尝试次数 d2c.telemetry.ingress.allProtocol 计数 尝试发送到 IoT 中心的、设备到云的遥测消息数
发送的遥测消息数 d2c.telemetry.ingress.success 计数 成功发送到 IoT 中心的、设备到云的遥测消息数

对于“计价单位”值为“计数”的指标,只有总计(总和)聚合有效 。 最小值、最大值和平均值聚合始终返回 1。 有关详细信息,请参阅支持的聚合

设备到云孪生操作指标:

指标显示名称 指标 计价单位 说明
设备的失败孪生读取数 d2c.twin.read.failure 计数 由设备发起的所有失败孪生读取的计数。
设备的失败孪生更新数 d2c.twin.update.failure 计数 由设备发起的所有失败的孪生更新的计数。
设备的孪生读取的响应大小 d2c.twin.read.size 字节 由设备发起的所有成功的孪生读取的数量。
设备的孪生更新的大小 d2c.twin.update.size 字节 由设备发起的所有成功的孪生更新的总大小。
设备的成功孪生读取数 d2c.twin.read.success 计数 由设备发起的所有成功孪生读取的计数。
设备的成功孪生更新数 d2c.twin.update.success 计数 由设备发起的所有成功的孪生更新的计数。

对于“计价单位”值为“计数”的指标,只有总计(总和)聚合有效 。 最小值、最大值和平均值聚合始终返回 1。 有关详细信息,请参阅支持的聚合

事件网格指标:

指标显示名称 指标 计价单位 说明
事件网格传递次数 EventGridDeliveries 计数 发布到事件网格的 IoT 中心事件的数量。 使用 Result 维度表示成功和失败请求的数量。 EventType 维度显示事件的类型 (https://aka.ms/ioteventgrid)。
事件网格延迟 EventGridLatency 毫秒 从生成 IoT 中心事件到将事件发布到事件网格的平均延迟(毫秒)。 此数值是所有事件类型的平均。 若要查看特定事件类型的延迟,请使用 EventType 维度。

对于“计价单位”值为“计数”的指标,只有总计(总和)聚合有效 。 最小值、最大值和平均值聚合始终返回 1。 有关详细信息,请参阅支持的聚合

作业指标:

指标显示名称 指标 计价单位 说明
已完成的作业 jobs.completed 计数 所有已完成的作业的计数。
对列出作业的失败调用数 jobs.listJobs.failure 计数 对列出作业的所有失败调用的计数。
方法调用作业的创建失败数 jobs.createDirectMethodJob.failure 计数 直接方法调用作业创建失败的所有次数。
孪生更新作业创建失败数 jobs.createTwinUpdateJob.failure 计数 孪生更新作业创建失败的所有次数。
失败的作业取消数 jobs.cancelJob.failure 计数 用来取消作业的调用失败的次数。
失败的作业查询数 jobs.queryJobs.failure 计数 对查询作业的所有失败调用的计数。
失败的作业数 jobs.failed 计数 所有失败的作业的计数。
对列出作业的成功调用数 jobs.listJobs.success 计数 对列出作业的所有成功调用的计数。
方法调用作业的创建成功数 jobs.createDirectMethodJob.success 计数 直接方法调用作业创建成功的所有次数。
孪生更新作业创建成功数 jobs.createTwinUpdateJob.
success
计数 孪生更新作业创建成功的所有次数。
成功的作业取消数 jobs.cancelJob.success 计数 用来取消作业的调用成功的次数。
成功的作业查询数 jobs.queryJobs.success 计数 对查询作业的所有成功调用的计数。

对于“计价单位”值为“计数”的指标,只有总计(总和)聚合有效 。 最小值、最大值和平均值聚合始终返回 1。 有关详细信息,请参阅支持的聚合

路由指标:

指标显示名称 指标 计价单位 说明
路由传递(预览版) RoutingDeliveries 计数 路由传递指标。 使用维度标识特定终结点或特定路由源的传递状态。
路由传递消息大小(以字节为单位)(预览) RoutingDataSizeInBytesDelivered 字节 IoT 中心路由到自定义终结点和内置终结点的总字节数。 使用维度标识路由到特定终结点或特定路由源的数据大小。
路由传递延迟(预览版) RoutingDeliveryLatency 毫秒 路由传递延迟指标。 使用维度标识特定终结点或特定路由源的延迟。
路由:将 Blob 传送到存储的次数 d2c.endpoints.egress.storage.blobs 计数 IoT 中心路由将 Blob 传送到存储终结点的次数。
路由:传送到存储的数据量 d2c.endpoints.egress.storage.bytes 字节 IoT 中心路由传送到存储终结点的数据量(字节)。
路由:事件中心的消息延迟 d2c.endpoints.latency.eventHubs 毫秒 消息进入 IoT 中心与进入事件中心类型的自定义终结点之间的平均延迟(毫秒)。 不包括到内置终结点(事件)的消息路由。
路由:服务总线队列的消息延迟 d2c.endpoints.latency.serviceBusQueues 毫秒 消息进入 IoT 中心与消息进入服务总线队列终结点之间的平均延迟(毫秒)。
路由:服务总线主题的消息延迟 d2c.endpoints.latency.serviceBusTopics 毫秒 消息进入 IoT 中心与消息进入服务总线主题终结点之间的平均延迟(毫秒)。
路由:消息/事件的消息延迟 d2c.endpoints.latency.builtIn.events 毫秒 消息进入 IoT 中心与遥测消息进入内置终结点(消息/事件)以及回退路由之间的平均延迟(毫秒)。
路由:存储的消息延迟 d2c.endpoints.latency.storage 毫秒 消息进入 IoT 中心与消息进入存储终结点之间的平均延迟(毫秒)。
路由:传递到事件中心的消息 d2c.endpoints.egress.eventHubs 计数 IoT 中心路由成功将消息传送到事件中心类型的自定义终结点的次数。 不包括到内置终结点(事件)的消息路由。
路由:消息传送到服务总线队列的次数 d2c.endpoints.egress.serviceBusQueues 计数 IoT 中心路由成功将消息传送到服务总线队列终结点的次数。
路由:消息传送到服务总线主题的次数 d2c.endpoints.egress.serviceBusTopics 计数 IoT 中心路由成功将消息传送到服务总线主题终结点的次数。
路由:消息传送到回退路由的次数 d2c.telemetry.egress.fallback 计数 IoT 中心路由将消息传送到与回退路由关联的终结点的次数。
路由:消息传送到消息/事件的次数 d2c.endpoints.egress.builtIn.events 计数 IoT 中心路由成功将消息传送到内置终结点(消息/事件)以及回退路由的次数。
路由:消息传送到存储的次数 d2c.endpoints.egress.storage 计数 IoT 中心路由成功将消息传送到存储终结点的次数。
路由:遥测消息传送次数 d2c.telemetry.egress.success 计数 使用 IoT 中心路由将消息成功传送到所有终结点的次数。 如果某条消息已路由到多个终结点,则每成功传送一次,此值就会加 1。 如果某条消息多次路由到同一终结点,则每成功传送一次,此值就会加 1。
路由:遥测消息删除次数 d2c.telemetry.egress.dropped 计数 由于终结点不活动,IoT 中心路由删除消息的次数。 此值不会计算已发送到回退路由的消息,因为已删除的消息未发送到该位置。
路由:遥测消息不兼容 d2c.telemetry.egress.invalid 计数 消息由于与终结点不兼容而无法由 IoT 中心路由传送的次数。 当 IoT 中心尝试将消息传递到终结点时,消息与终结点不兼容,传递失败并收到非暂时性错误。 不会重试无效的消息。 此值不包括重试次数。
路由:遥测消息孤立次数 d2c.telemetry.egress.orphaned 计数 禁用回退路由时,IoT 中心路由孤立消息的次数,因为这些消息与任何路由查询都不匹配。

对于“计价单位”值为“计数”的指标,只有总计(总和)聚合有效 。 最小值、最大值和平均值聚合始终返回 1。 有关详细信息,请参阅支持的聚合

孪生查询指标:

指标显示名称 指标 计价单位 说明
失败的孪生查询数 twinQueries.failure 计数 所有失败孪生查询的计数。
成功的孪生查询数 twinQueries.success 计数 所有成功孪生查询的计数。
孪生查询结果大小 twinQueries.resultSize 字节 所有成功的孪生查询结果的总大小。

对于“计价单位”值为“计数”的指标,只有总计(总和)聚合有效 。 最小值、最大值和平均值聚合始终返回 1。 有关详细信息,请参阅支持的聚合

资源日志

本部分列出了可为此服务收集的资源日志类型。 本部分拉取自 Azure Monitor 支持的所有资源日志类别类型列表。

Microsoft.Devices/IotHubs 支持的资源日志

以下部分列出了为 Azure IoT 中心收集的资源日志类别类型和架构。 仅针对某些类别的错误发出事件。

云到设备命令类别

云到设备的命令类别跟踪在 IoT 中心发生且与云到设备的消息管道相关的错误。 此类别包括在以下情况下发生的错误:

  • 发送云到设备消息时(例如“未经授权的发件人”错误),
  • 接收云到设备消息时(例如“超出传递计数”错误),以及
  • 接收云到设备消息反馈时(例如“反馈已过期”错误)。

此类别不捕捉当云到设备消息已成功传递但设备未正确进行处理时出现的错误。

{
    "records":
    [
        {
            "time": " UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "messageExpired",
            "category": "C2DCommands",
            "level": "Error",
            "resultType": "Event status",
            "resultDescription": "MessageDescription",
            "properties": "{\"deviceId\":\"<deviceId>\",\"messageId\":\"<messageId>\",\"messageSizeInBytes\":\"<messageSize>\",\"protocol\":\"Amqp\",\"deliveryAcknowledgement\":\"<None, NegativeOnly, PositiveOnly, Full>\",\"deliveryCount\":\"0\",\"expiryTime\":\"<timestamp>\",\"timeInSystem\":\"<timeInSystem>\",\"ttl\":<ttl>, \"EventProcessedUtcTime\":\"<UTC timestamp>\",\"EventEnqueuedUtcTime\":\"<UTC timestamp>\", \"maskedIpAddress\": \"<maskedIpAddress>\", \"statusCode\": \"4XX\"}",
            "location": "Resource location"
        }
    ]
}

云到设备孪生操作指标

云到设备孪生操作类别跟踪设备孪生上服务发起的事件。 这些操作可能获取孪生、更新或替换标记,以及更新或替换所需属性。

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "read",
            "category": "C2DTwinOperations",
            "level": "Information",
            "durationMs": "1",
            "properties": "{\"deviceId\":\"<deviceId>\",\"sdkVersion\":\"<sdkVersion>\",\"messageSize\":\"<messageSize>\"}",
            "location": "Resource location"
        }
    ]
}

设备到云孪生操作指标

设备到云孪生操作类别跟踪设备孪生上设备发起的事件。 这些操作可能包括“获取孪生”、“更新报告属性”和“订阅所需属性”。

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "update",
            "category": "D2CTwinOperations",
            "level": "Information",
            "durationMs": "1",
            "properties": "{\"deviceId\":\"<deviceId>\",\"protocol\":\"<protocol>\",\"authenticationType\":\"{\\\"scope\\\":\\\"device\\\",\\\"type\\\":\\\"sas\\\",\\\"issuer\\\":\\\"iothub\\\",\\\"acceptingIpFilterRule\\\":null}\"}",
            "location": "Resource location"
        }
    ]
}

配置类别

IoT 中心配置日志跟踪有关自动设备管理功能集的事件和错误。

{
    "records":
    [
         {
             "time": "2019-09-24T17:21:52Z",
             "resourceId": "Resource Id",
             "operationName": "ReadManyConfigurations",
             "category": "Configurations",
             "resultType": "",
             "resultDescription": "",
             "level": "Information",
             "durationMs": "17",
             "properties": "{\"configurationId\":\"\",\"sdkVersion\":\"2018-06-30\",\"messageSize\":\"0\",\"statusCode\":null}",
             "location": "southcentralus"
         }
    ]
}

连接类别

连接类别跟踪来自 IoT 中心的设备连接和断开连接事件和错误。 此类别用于识别未经授权的连接尝试或者在失去与设备的连接时发出警报。

有关设备的可靠连接状态,请参阅监视设备连接状态

{
   "records":
   [
        {
            "time": " UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "deviceConnect",
            "category": "Connections",
            "level": "Information",
            "properties": "{\"deviceId\":\"<deviceId>\",\"sdkVersion\":\"<sdkVersion>\",\"protocol\":\"<protocol>\",\"authType\":\"{\\\"scope\\\":\\\"device\\\",\\\"type\\\":\\\"sas\\\",\\\"issuer\\\":\\\"iothub\\\",\\\"acceptingIpFilterRule\\\":null}\",\"maskedIpAddress\":\"<maskedIpAddress>\"}",
            "location": "Resource location"
        }
    ]
}

有关使用连接日志监视设备连接的详细信息,请参阅监视、诊断和排查设备与 Azure IoT 中心的连接问题

设备标识操作类别

设备标识操作类别跟踪你尝试在 IoT 中心的标识注册表中创建、更新或删除条目时所发生的错误。 预配方案就很适合跟踪此类别。

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "get",
            "category": "DeviceIdentityOperations",
            "level": "Error",
            "resultType": "Event status",
            "resultDescription": "MessageDescription",
            "properties": "{\"maskedIpAddress\":\"<maskedIpAddress>\",\"deviceId\":\"<deviceId>\", \"statusCode\":\"4XX\"}",
            "location": "Resource location"
        }
    ]
}

设备流类别(预览版)

设备流类别跟踪发送到单个设备的请求-响应交互。

{
    "records":
    [
         {
             "time": "2019-09-19T11:12:04Z",
             "resourceId": "Resource Id",
             "operationName": "invoke",
             "category": "DeviceStreams",
             "resultType": "",
             "resultDescription": "",    
             "level": "Information",
             "durationMs": "74",
             "properties": "{\"deviceId\":\"myDevice\",\"moduleId\":\"myModule\",\"sdkVersion\":\"2019-05-01-preview\",\"requestSize\":\"3\",\"responseSize\":\"5\",\"statusCode\":null,\"requestName\":\"myRequest\",\"direction\":\"c2d\"}",
             "location": "Central US"
         }
    ]
}

设备遥测类别

设备遥测类别跟踪在 IoT 中心发生的、与遥测管道相关的错误。 此类别包括发送遥测事件(例如限制)和接收遥测事件(例如未经授权的读取者)时发生的错误。 此类别无法捕捉设备本身运行的代码所造成的错误。

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "ingress",
            "category": "DeviceTelemetry",
            "level": "Error",
            "resultType": "Event status",
            "resultDescription": "MessageDescription",
            "properties": "{\"deviceId\":\"<deviceId>\",\"batching\":\"0\",\"messageSizeInBytes\":\"<messageSizeInBytes>\",\"EventProcessedUtcTime\":\"<UTC timestamp>\",\"EventEnqueuedUtcTime\":\"<UTC timestamp>\",\"partitionId\":\"1\"}", 
            "location": "Resource location"
        }
    ]
}

直接方法类别

直接方法类别跟踪发送到单个设备的请求-响应交互。 这些请求在云中发起。

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "send",
            "category": "DirectMethods",
            "level": "Information",
            "durationMs": "1",
            "properties": "{\"deviceId\":<messageSize>, \"RequestSize\": 1, \"ResponseSize\": 1, \"sdkVersion\": \"2017-07-11\"}",
            "location": "Resource location"
        }
    ]
}

分布式跟踪类别(预览版)

分布式跟踪类别跟踪执行跟踪上下文标头的消息的相关 ID。

correlationId 符合 W3C 跟踪上下文方案,其中包含 trace-idspan-id

IoT 中心 D2C(设备到云)日志

当包含有效跟踪属性的消息到达 IoT 中心时,IoT 中心会记录此日志。

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "DiagnosticIoTHubD2C",
            "category": "DistributedTracing",
            "correlationId": "00-8cd869a412459a25f5b4f31311223344-0144d2590aacd909-01",
            "level": "Information",
            "resultType": "Success",
            "resultDescription":"Receive message success",
            "durationMs": "",
            "properties": "{\"messageSize\": 1, \"deviceId\":\"<deviceId>\", \"callerLocalTimeUtc\": : \"2017-02-22T03:27:28.633Z\", \"calleeLocalTimeUtc\": \"2017-02-22T03:27:28.687Z\"}",
            "location": "Resource location"
        }
    ]
}

此时不会计算 durationMs,因为 IoT 中心的时钟可能不会与设备时钟同步,所以持续时间计算可能产生误导。 我们建议使用 properties 部分中的时间戳编写逻辑,以捕获设备到云延迟的峰值。

属性 类型​​ 说明
messageSize Integer 以字节为单位的设备到云消息的大小
deviceId ASCII 7 位字母数字字符字符串 设备的标识
callerLocalTimeUtc UTC 时间戳 设备本地时钟报告的消息创建时间
calleeLocalTimeUtc UTC 时间戳 IoT 中心服务端时钟报告的消息到达 IoT 中心网关的时间

IoT 中心流入日志

当包含有效跟踪属性的消息写入内部或内置事件中心时,IoT 中心会记录此日志。

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "DiagnosticIoTHubIngress",
            "category": "DistributedTracing",
            "correlationId": "00-8cd869a412459a25f5b4f31311223344-349810a9bbd28730-01",
            "level": "Information",
            "resultType": "Success",
            "resultDescription":"Ingress message success",
            "durationMs": "10",
            "properties": "{\"isRoutingEnabled\": \"true\", \"parentSpanId\":\"0144d2590aacd909\"}",
            "location": "Resource location"
        }
    ]
}

properties 部分中,此日志包含有关消息流入的其他信息。

属性 类型​​ 说明
isRoutingEnabled 字符串 True 或 false,指示 IoT 中心是否启用了消息路由
parentSpanId 字符串 父消息的 span-id,在这种情况下为 D2C 消息跟踪

IoT 中心流出日志

路由已启用且消息写入到终结点时,IoT 中心会记录此日志。 如果未启用路由,IoT 中心不会记录此日志。

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "DiagnosticIoTHubEgress",
            "category": "DistributedTracing",
            "correlationId": "00-8cd869a412459a25f5b4f31311223344-98ac3578922acd26-01",
            "level": "Information",
            "resultType": "Success",
            "resultDescription":"Egress message success",
            "durationMs": "10",
            "properties": "{\"endpointType\": \"EventHub\", \"endpointName\": \"myEventHub\", \"parentSpanId\":\"349810a9bbd28730\"}",
            "location": "Resource location"
        }
    ]
}

properties 部分中,此日志包含有关消息流入的其他信息。

属性 类型​​ 说明
endpointName 字符串 路由终结点的名称
endpointType 字符串 路由终结点的类型
parentSpanId 字符串 父消息的 span-id,在这种情况下为 IoT 中心流入消息跟踪

文件上传操作类别

文件上传类别跟踪在 IoT 中心发生的、与文件上传功能相关的错误。 此类别包括:

  • SAS URI 发生的错误,例如,它在设备向中心通知某个完成的上传前失效。
  • 由设备报告的失败上传。
  • 创建 IoT 中心通知消息期间在存储中找不到文件时发生的错误。

此类别不能捕获在设备将文件上传到存储时直接发生的错误。

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "ingress",
            "category": "FileUploadOperations",
            "level": "Error",
            "resultType": "Event status",
            "resultDescription": "MessageDescription",
            "durationMs": "1",
            "properties": "{\"deviceId\":\"<deviceId>\",\"protocol\":\"<protocol>\",\"authType\":\"{\\\"scope\\\":\\\"device\\\",\\\"type\\\":\\\"sas\\\",\\\"issuer\\\":\\\"iothub\\\",\\\"acceptingIpFilterRule\\\":null}\",\"blobUri\":\"http//bloburi.com\"}",
            "location": "Resource location"
        }
    ]
}

作业操作类别

作业操作类别报告在多个设备上更新设备孪生或调用直接方法的作业请求。 这些请求在云中发起。

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "jobCompleted",
            "category": "JobsOperations",
            "level": "Information",
            "durationMs": "1",
            "properties": "{\"jobId\":\"<jobId>\", \"sdkVersion\": \"<sdkVersion>\",\"messageSize\": <messageSize>,\"filter\":\"DeviceId IN ['1414ded9-b445-414d-89b9-e48e8c6285d5']\",\"startTimeUtc\":\"Wednesday, September 13, 2017\",\"duration\":\"0\"}",
            "location": "Resource location"
        }
    ]
}

路由类别

消息路由类别跟踪消息路由评估期间发生的错误以及 IoT 中心感知到的终结点运行状况。 此类别包括诸如下列项的事件:

  • 规则评估结果为“未定义”
  • IoT 中心将某个终结点标记为不活动终结点
  • 从终结点收到的任何错误

此类别不包含有关消息本身的特定错误(例如设备限制错误),这些错误在“设备遥测”类别下报告。

{
    "records":
    [
        {
            "time":"2019-12-12T03:25:14Z",
            "resourceId":"/SUBSCRIPTIONS/91R34780-3DEC-123A-BE2A-213B5500DFF0/RESOURCEGROUPS/ANON-TEST/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/ANONHUB1",
            "operationName":"endpointUnhealthy",
            "category":"Routes",
            "level":"Error",
            "resultType":"403004",
            "resultDescription":"DeviceMaximumQueueDepthExceeded",
            "properties":"{\"deviceId\":null,\"endpointName\":\"anon-sb-1\",\"messageId\":null,\"details\":\"DeviceMaximumQueueDepthExceeded\",\"routeName\":null,\"statusCode\":\"403\"}",
            "location":"chinanorth"
        }
    ]
}

以下是有关路由资源日志的更多详细信息:

孪生查询类别

孪生查询类别报告在云中针对设备孪生发起的查询请求。

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "query",
            "category": "TwinQueries",
            "level": "Information",
            "durationMs": "1",
            "properties": "{\"query\":\"<twin query>\",\"sdkVersion\":\"<sdkVersion>\",\"messageSize\":\"<messageSize>\",\"pageSize\":\"<pageSize>\", \"continuation\":\"<true, false>\", \"resultSize\":\"<resultSize>\"}",
            "location": "Resource location"
        }
    ]
}