Azure 日志实战:Azure Monitor、Log Analytics 与 KQL 查询
Azure 日志中文实战:Azure Monitor 日志体系(Activity Log / 资源日志 / 应用日志)、Log Analytics 工作区与 KQL 查询语言、Diagnostic Settings 诊断设置、Application Insights 应用日志、保留与成本治理,以及与观测云联动的落地方案。
Azure 的日志体系以 Azure Monitor 为中枢:平台日志(Activity Log)、资源日志、应用日志三路汇入 Log Analytics 工作区,用 KQL(Kusto Query Language)统一查询。本文讲清三路日志的区别、KQL 上手、诊断配置与观测云联动方案。
核心要点速览
- 三路日志先分清:Activity Log(订阅级控制面操作)、资源日志(资源内部运行)、Application Insights(应用代码级)。
- Log Analytics + KQL 是检索中枢:类 SQL 的管道式查询语言,功能强大。
- Diagnostic Settings 决定日志流向:Log Analytics / Storage Account / Event Hubs 三选一或组合。
- 观测云联动:Event Hubs 流式外送或主机 DataKit 采集,实现多云统一日志视图。
1. 三路日志的区别
| 日志 | 内容 | 默认开启 |
|---|---|---|
| Activity Log | 谁在什么时候对订阅里什么资源做了什么操作(控制面) | ✅ |
| 资源日志 | 资源内部运行事件(如 Key Vault 的访问记录、NSG 流日志) | ❌ 需 Diagnostic Settings |
| 应用日志 | App Service/容器应用的 stdout、异常、请求 | 需配置 |
最常见的盲区是资源日志——默认不收集,必须为每个资源创建 Diagnostic Setting 才会产生。
2. Diagnostic Settings:日志的开关与路由
每个资源的"诊断设置"里勾选日志类别,选目的地:
- Log Analytics 工作区:可查询、可告警(主用);
- Storage Account:廉价归档(合规留存);
- Event Hubs:流式外送第三方平台(SIEM、观测云等)。
3. KQL 快速上手
// 最近 1 小时的错误日志
AppTraces
| where TimeGenerated > ago(1h)
| where SeverityLevel >= 3
| project TimeGenerated, Message, Properties
| order by TimeGenerated desc
// 按分钟统计错误量趋势
AppTraces
| where SeverityLevel >= 3
| summarize count() by bin(TimeGenerated, 5m)
| render timechart
KQL 的管道式语法(| 串联操作符)读一次就上手:where 过滤、summarize 聚合、render 出图、join 关联。
4. Application Insights:应用代码级日志
给应用装上 Application Insights SDK(或无侵入代理),请求、依赖调用、异常、trace 自动采集,且天然带 operation_Id 把一次请求的遥测串成链。App Service 还可以同时开 Web Server 日志(IIS)与应用日志(文件系统/Blob)。
5. 保留与成本
Log Analytics 按摄入 GB 计费 + 保留期(31 天起,最长 12 年可调)。控费三招:Diagnostic Settings 只开需要的类别;表级保留期差异化;归档需求走 Storage Account(便宜一个数量级)。
观测云落地:Azure 日志与统一观测
- 外送通道:Diagnostic Settings → Event Hubs → 流式推送到观测云接收端(DataKit 中继);Azure VM 直接装 DataKit 采集主机与应用日志。
- 解析标准化:Azure 日志 JSON 解析为字段,Level/SeverityLevel 映射标准
status,TimeGenerated 解析为time。 - 统一视图:Azure 日志与 AWS/GCP/IDC 日志在观测云同一工作空间检索;监控器统一告警到钉钉/企业微信/飞书。
- 链路关联:Application Insights 的 operation_Id 或 OpenTelemetry trace_id 保留为字段,与观测云 APM 关联。
常见问题(FAQ)
为什么资源日志默认不收集?
设计取舍:资源日志量巨大且按量计费,全开会带来明显成本——所以 Azure 把开关交给用户。生产环境应为关键资源(Key Vault、NSG、负载均衡器、数据库)逐个配置 Diagnostic Settings。
KQL 难学吗?
不难。会 SQL 的过滤聚合概念即可上手;KQL 在时间序列与日志场景的表达力(ago()、bin()、render)甚至优于 SQL。先掌握 where/summarize/render 三板斧。
Application Insights 和 Log Analytics 是什么关系?
Application Insights 是应用性能管理(APM)功能,数据存在 Log Analytics 工作区里,用同一套 KQL 查询(AppTraces、AppRequests、AppExceptions 等表)。
多云环境日志统一的最佳路径?
Azure 侧 Diagnostic Settings → Event Hubs 外送,AWS 侧 CloudWatch 订阅外送,GCP 侧 Pub/Sub 外送,主机侧 DataKit 直采——四路汇入观测云,一个工作台查全部。
系列阅读
- 上一篇:GCP 日志实战
- 下一篇:AWS 日志体系入门
- 相关阅读:什么是日志监控 | 日志聚合