You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure IoT Hub诊断设置未记录Device Telemetry问题排查

问题原因及解决方案

Device Telemetry类别无日志的原因

  • Device Telemetry诊断日志仅记录路由失败、被丢弃或进入死信队列的遥测消息,成功路由并正常处理的遥测消息不会被该类别日志记录。这是IoT Hub诊断日志的默认设计,也是多数用户产生误解的核心点。
  • 次要排除项:虽其他类别日志正常,仍可确认Blob Storage的写入权限(如容器访问策略、防火墙规则),但该概率极低。

统计单设备遥测消息数量的方案(无需自定义订阅)

方案1:直接使用IoT Hub指标拆分维度

在IoT Hub门户的「指标」页面操作:

  1. 选择指标Telemetry messages sent
  2. 添加拆分维度Device ID
  3. 可自选时间范围、聚合方式(如总和),直接查看每个设备的遥测发送量,支持导出数据或配置仪表盘。

方案2:启用消息捕获(Message Capture)配合日志分析

  1. 在IoT Hub中开启「消息捕获」,将所有遥测消息保存到Blob Storage或ADLS Gen2,配置时确保包含deviceId字段。
  2. 将存储账户的诊断日志导入Log Analytics/Azure Data Explorer,通过查询语句统计设备消息数。例如Log Analytics中的Kusto查询:
StorageBlobLogs
| where OperationName == "PutBlob"
| where ContainerName == "<你的捕获容器名>"
| parse Name with deviceId "/" *
| summarize count() by deviceId

方案3:路由到Event Hub并利用其诊断日志

  1. 将IoT Hub遥测路由到指定Event Hub实例。
  2. 为该Event Hub开启诊断设置,启用MessageLogs类别并发送到Log Analytics。
  3. 在Log Analytics中通过deviceId字段统计消息数,示例查询:
EventHubMessageLogs
| where EntityName == "<你的Event Hub名称>"
| parse Properties with * "deviceId\":\"" deviceId "\"" *
| summarize count() by deviceId

内容的提问来源于stack exchange,提问作者killexe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 10:00:15