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

如何查询Azure IoT Hub中设备发送的数据总量(含非孪生D2C消息)

查询Azure IoT Hub非孪生D2C消息的数据总量

非孪生D2C消息的日志定位

非孪生的设备到云(D2C)消息,在Azure Diagnostics日志中对应的OperationName为SendD2CMessage,日志类别属于DeviceTelemetry,和你之前处理的D2CTwinOperations孪生操作日志是完全独立的两类记录。

消息大小属性说明

这类非孪生D2C消息默认不会在properties_s字段中自带messageSize属性,需要通过以下两种方式获取消息大小:

  • 自定义属性方式:如果设备发送消息时主动在消息属性中添加了大小字段,可通过extractjson提取对应自定义属性;
  • 日志内置字段方式:Azure IoT Hub诊断日志会自动记录body_size_s(消息体大小)和properties_size_s(消息属性大小)两个字段,将二者相加即可得到单条消息的总大小。部分环境下字段名可能为驼峰格式的BodySize和PropertiesSize,需根据实际日志结构调整。

完整统计查询语句

以下是按天统计指定设备非孪生D2C消息总数据量的KQL查询:

AzureDiagnostics
| where TimeGenerated between (datetime("2022-10-01") .. datetime('2022-11-08'))
| where OperationName == "SendD2CMessage"  // 筛选非孪生D2C消息
| extend DeviceId = extractjson("$.deviceId", properties_s)
| where DeviceId == "your-target-device-id"  // 替换为实际设备ID
// 计算单条消息总大小:消息体大小 + 属性大小,字段名需匹配实际日志
| extend TotalMessageSize = toint(body_size_s) + toint(properties_size_s)
| where TotalMessageSize > 0
| summarize totalSizeInBytes = sum(TotalMessageSize) by bin(TimeGenerated, 1d)
| extend totalSizeInKiloBytes = totalSizeInBytes/1024
| order by TimeGenerated asc

验证日志字段的方法

如果不确定日志中记录大小的字段名称,可先执行以下查询查看样本数据:

AzureDiagnostics
| where TimeGenerated between (datetime("2022-10-01") .. datetime('2022-11-08'))
| where OperationName == "SendD2CMessage"
| limit 10

从返回的结果中确认对应大小字段的准确名称,再调整主查询中的字段引用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:55:17