如何读取Azure Blob存储应用日志并在Log Analytics中分析展示
核心配置校验(先解决拉取到非应用日志的问题)
- 确认你在Log Analytics中添加的Blob数据源类型为自定义日志(Custom Logs),而非Azure Storage的资源诊断日志。后者只会同步存储账号本身的操作、状态数据,不会解析你容器内存储的应用生成日志。
- 自定义日志配置时,路径选择你存放应用日志的自建业务容器,不要选择存储账号自动生成的
$logs系统容器,该容器仅存储存储服务自身的运行日志。 - 配置向导中上传1份应用真实输出的日志样例,指定日志的记录分隔符(绝大多数场景为换行符)、时间戳字段的位置与格式,提交配置后等待15-30分钟,日志同步链路才会正式生效。
在线读取Blob内应用日志
配置生效后,Blob容器内新增的应用日志会自动持续同步到Log Analytics的自定义表中,表名默认为你配置自定义日志时填写的名称加_CL后缀,无需手动下载日志文件,直接进入Log Analytics工作区的「日志」模块即可在线查询:
- 基础查询示例(查询最近24小时的错误类日志):
// 将下方表名替换为你自己的自定义日志表名 YourAppLog_CL | where TimeGenerated > ago(24h) // 未做结构化字段提取时直接匹配原始日志内容RawData,已提取字段可直接使用字段名过滤 | where RawData contains "ERROR" | project TimeGenerated, RawData, SourceBlobPath // SourceBlobPath字段会自动标注日志来源的Blob文件路径
- 结构化字段提取:如果你的日志为JSON格式,直接用KQL内置函数解析即可,无需调整应用侧日志输出规则:
YourAppLog_CL | extend logPayload = parse_json(RawData) | extend LogLevel = tostring(logPayload.level), LogMsg = tostring(logPayload.message), TraceId = tostring(logPayload.traceId) | project TimeGenerated, LogLevel, LogMsg, TraceId
如果你的日志为固定分隔符格式,可使用
parse运算符做字段拆分,把解析逻辑保存为工作区函数后,后续查询无需重复编写解析代码。
表格、图形可视化配置
查询到有效日志数据后,直接在查询编辑器内即可完成可视化配置,无需对接第三方工具:
- 表格展示:查询结果默认以表格形式呈现,可直接拖拽调整字段顺序、设置字段过滤规则,点击结果栏上方的「固定到仪表板」,即可将表格固定到Azure门户的共享/个人仪表板,支持设置自动刷新间隔,打开仪表板即可查看实时日志数据。
- 图形类可视化:完成聚合查询后,在结果栏上方的「可视化」下拉菜单选择对应图表类型即可,以下是两个高频使用的场景示例:
- 按小时统计近7天各等级日志数量(适配堆叠柱状图/折线图,用于观察错误量波动趋势)
YourAppLog_CL | where TimeGenerated > ago(7d) | extend logPayload = parse_json(RawData) | extend LogLevel = tostring(logPayload.level) | summarize LogCount = count() by bin(TimeGenerated, 1h), LogLevel // 可视化选择「堆叠柱状图」,X轴绑定TimeGenerated,Y轴绑定LogCount,拆分维度选择LogLevel- 统计近24小时Top10高频报错(适配条形图/饼图,用于定位核心异常)
YourAppLog_CL | where TimeGenerated > ago(24h) | extend logPayload = parse_json(RawData) | extend LogLevel = tostring(logPayload.level), ErrorMsg = tostring(logPayload.message) | where LogLevel == "Error" | summarize ErrorCount = count() by ErrorMsg | top 10 by ErrorCount desc // 可视化选择「条形图」,Y轴绑定ErrorMsg,X轴绑定ErrorCount - 所有配置完成的图表均可固定到门户仪表板,设置最短5分钟的自动刷新间隔,即可实现Blob存储日志的在线读取与持续可视化分析,全程无需手动下载单个日志文件。
常见排错点
- 自定义日志配置完成后查不到数据时,先确认你存储日志的Blob类型为追加Blob,块Blob的日志同步存在最高1小时的延迟;另外日志文件名不要包含中文、特殊转义字符,否则Log Analytics的采集模块可能无法识别文件。
- 如果查询结果中出现大量存储操作相关的日志,回到数据源配置页检查是否误选了
$logs容器,删除错误配置后重新指定业务容器即可。
内容的提问来源于stack exchange,提问作者Weslei
相关产品推荐
相关产品推荐

