如何通过OMS Log Analytics每日统计Azure Data Lake Store各文件夹新增XML文件数?
嘿,针对你这个每日统计ADLS各源系统文件夹新增XML文件的需求,结合你已经启用诊断日志和OMS Log Analytics的现状,我整理了几个最实用的实现方案,都是直接基于现有工具链的,不用额外加组件:
核心思路说明
你的需求本质是从ADLS的诊断日志中筛选出当日新增的XML文件事件,按源系统对应的文件夹分组统计数量——Log Analytics的Kusto查询语言(KQL)完全可以搞定这个,而且能扩展成自动化报表。
具体实现方案
方案1:直接编写KQL查询生成实时统计
这是最快速的方式,你可以直接在Log Analytics工作区的查询编辑器里运行下面的语句,根据你的ADLS版本调整:
针对ADLS Gen1的KQL查询
// 筛选当日ADLS的文件写入事件,仅保留XML文件 AzureDiagnostics | where ResourceProvider == "MICROSOFT.STORAGE" and OperationName == "PutBlob" | where blob_suffix endswith ".xml" // 限定时间范围为前一天(当日结束后统计的话用这个,若要实时看当日则换成startofday(now())) | where TimeGenerated >= startofday(now()-1d) and TimeGenerated <= endofday(now()-1d) // 提取源系统文件夹(根据你的路径结构调整parse规则,比如你的路径是/adls/SourceSystemA/xxx.xml,这里提取SourceSystemA) | parse blob_uri with * "/" sourceSystemFolder "/" * // 按文件夹分组统计新增数量 | summarize NewXMLFileCount = count() by sourceSystemFolder | sort by NewXMLFileCount desc
针对ADLS Gen2的KQL查询(字段名有差异)
StorageBlobLogs | where OperationName == "PutBlob" | where BlobName endswith ".xml" | where TimeGenerated >= startofday(now()-1d) and TimeGenerated <= endofday(now()-1d) // 提取源系统文件夹,根据实际路径调整parse逻辑 | parse BlobName with sourceSystemFolder "/" * | summarize NewXMLFileCount = count() by sourceSystemFolder, FileSystemName
小提示:如果你的文件夹是多级目录(比如/SourceSystemA/SubFolder1/),可以修改parse语句来提取正确的层级,比如parse BlobName with sourceSystemFolder "/" subFolder "/" *,然后按sourceSystemFolder分组即可。
方案2:创建自动化每日报表并推送
如果需要每日自动生成报表并发送给相关人员,按以下步骤操作:
- 在Log Analytics查询编辑器中,保存上面的KQL查询为**“每日ADLS新增XML文件统计”**
- 转到Log Analytics的**工作簿(Workbooks)**页面,新建一个空白工作簿
- 添加一个查询组件,选择你保存的查询,设置可视化类型(比如柱状图、表格)
- 点击工作簿右上角的计划(Schedule),配置每日凌晨1点(确保前一天的日志全部完成 ingestion)自动刷新,同时设置邮件/Teams通知,将报表发送给指定人员
方案3:配置异常警报(可选)
如果需要监控某个源系统当日没有新增XML文件的异常情况,可以基于KQL查询创建警报规则:
- 在Log Analytics查询编辑器中,运行统计查询后,点击新建警报规则
- 设置警报条件:比如当
NewXMLFileCount等于0时触发 - 配置通知方式(邮件、Webhook、Teams等),这样每日可以收到异常提醒,正常统计则通过工作簿报表查看
优化建议
- 检查诊断设置:确保你在ADLS的诊断设置中勾选了StorageWrite类别,这样才能捕获到文件写入事件
- 调整时间范围:如果你的日志 ingestion有延迟,可以把时间范围的结束时间设置为
now()-2h,避免遗漏部分日志 - 添加参数化查询:在工作簿中添加日期参数,让用户可以灵活选择任意日期范围的统计数据
内容的提问来源于stack exchange,提问作者Rag
相关产品推荐
相关产品推荐

