如何统计Azure指定容器每小时上传的Blob数量?
针对Azure单个Blob容器每小时上传量统计的可行方案
我来给你几个亲测有效的入手思路,完美解决单个容器的Blob上传数量统计问题:
方案一:利用Azure Monitor日志查询(最推荐)
Azure内置指标确实没法针对单个容器,但启用Blob服务日志+Log Analytics查询可以精准实现需求:
- 先给你的存储账户开启Blob服务的写入日志:在存储账户的「诊断设置」里新建规则,勾选Blob服务的「Write」日志类别,把日志发送到一个Log Analytics工作区。
- 等日志开始流入后,在Log Analytics里写Kusto查询语句,按小时统计目标容器的Blob上传量:
StorageBlobLogs | where AccountName == "你的存储账户名" | where ContainerName == "目标容器名" | where OperationName == "PutBlob" or OperationName == "PutBlockList" // 覆盖块Blob和普通Blob上传场景 | extend Hour = bin(TimeGenerated, 1h) | summarize UploadCount = count() by Hour | sort by Hour asc
- 可以把这个查询保存为可视化折线图/柱状图,添加到Azure Dashboard里,就能实时查看每小时的上传量趋势了。
方案二:用Azure Functions做实时计数+自定义指标
如果需要更灵活的统计逻辑(比如额外过滤特定命名规则的Blob),可以用Blob触发的Azure Functions来实现:
- 创建一个Blob触发的函数,触发路径设置为目标容器(比如
目标容器名/{name}),这样每次有Blob上传就会触发函数。 - 在函数代码里,截取当前时间的小时维度,然后把计数推送到Azure Monitor自定义指标(或者存储到Table Storage/Cosmos DB做持久化)。
- 之后可以在Azure Monitor里基于自定义指标创建图表,或者自己搭建简单的可视化页面展示数据。
方案三:Power BI进阶查询实现
你之前没找到Power BI的可行方案,可能是没用到正确的数据源处理方式:
- 在Power BI里连接你的Azure Blob存储,选择「获取数据」→「Azure」→「Azure Blob存储」,输入存储账户名和密钥。
- 加载目标容器的Blob列表后,添加自定义列提取Blob的创建时间(通过Blob元数据的
Created字段获取)。 - 用Power Query的「分组依据」功能,按小时截断的创建时间分组,聚合操作选择「计数行」;或者用DAX编写度量值实现小时维度的计数统计,最后生成可视化图表。
这些方案都能精准针对单个容器统计,你可以根据自己的技术栈和需求选最适合的~
内容的提问来源于stack exchange,提问作者rjrt28
相关产品推荐
相关产品推荐

