如何详细分析 IoTHub 计量消息指标

How to analyze IoTHub metered messages metrics in detail

在我当前的 Azure IoT 中心解决方案中,我使用 D2C/C2D 消息、设备孪生和文件上传。 我查看了我每天的计量消息总数 (dailyMessageQuotaUsed),有点惊讶,因为这个数字高于预期(每天约 10000 条)。

然后我查看了我的 d2c/c2d 条消息(每天约 100-350 条)

我的设备双胞胎 reads/writes 来自设备(每天约 500 个)

我的文件上传(每天约 4k)

使用的查询:

AzureDiagnostics
| where ResourceType == "IOTHUBS" and Category == "FileUploadOperations"
| where TimeGenerated > ago(30d)
| extend p=parse_json(properties_s) 
| where p.fileUploadStatusCode == 201
| summarize count() by bin(TimeGenerated, 1d)

我现在的假设是:

2 messages per file upload (initiate, finished)
+ 2 messages per twin operation (request/response)
+ d2c/c2d messages
=> 2*4500 + 2*500 + 300 = 10300
  1. 我的假设正确吗?
  2. 是否有内置功能允许我查看按消息类型(d2c/c2d/twin/file/...)拆分的总计量消息,或者我的方法是最好的方法吗?
  3. d2c.telemetry.ingress.successc2d.commands.egress.complete.success 指标是计量消息的数量(每 4k)还是发送的消息(每次发送)?我在阅读 documentation
  4. 时无法理解

Is my assumption correct?

部分正确。

2 messages per file upload (initiate, finished)

这是正确的并且与定价文档一致:

Only the messages which initiate a new upload and provide notification of a completed upload count against the daily allotment of messages... in a typical file upload scenario, there are only two messages...

参考:Azure IoT Hub pricing

+ 2 messages per twin operation (request/response)

视情况而定。并不总是将 2 条消息计数。孪生读取、写入和查询按 4 KB 块计量。

+ d2c/c2d messages

仅当它们是单独发送的并且您没有使用批处理将多条消息中的信息合并到单批消息中时。请参阅 Benefits of using the Azure IoT SDKs, and pitfalls to avoid if you don’t 以了解如何在使用 azure iot sdk 时使用开箱即用的批处理。

Is there a built-in feature that allows me to see the total metered messages split by their message type (d2c/c2d/twin/file/...) or is my approach the best one possible?

您的方法看起来是迄今为止最准确的方法。

Are the d2c.telemetry.ingress.success and c2d.commands.egress.complete.success metrics the number of metered messages (per 4k) or sent messages (per send)?

这些指标表示 4k 消息的数量 sent\received。