Azure Windows VM各进程CPU时间分析的Log Analytics查询及配置求助
解决方案
核心结论
必须添加Process对象的% Processor Time性能计数器,你当前仅配置了Processor(_Total)的总CPU计数器,没有采集单个进程的CPU消耗数据,所以Perf表中不会有Process对象的相关记录。
配置Legacy Agent采集进程CPU计数器步骤
- 登录Azure门户,找到你的Log Analytics工作区
- 进入工作区的代理配置 -> 性能计数器(旧版入口为“高级设置”->“数据”->“Windows性能计数器”)
- 点击“添加性能计数器”,在下拉列表中选择
Process对象,然后选中% Processor Time计数器 - 选择“所有实例”(或按需指定特定进程实例)后点击保存
- 等待代理同步配置(通常5-10分钟,也可重启VM上的Microsoft Monitoring Agent加速生效)
正确的Log Analytics查询语句
等数据开始采集后,使用以下查询即可绘制各进程CPU消耗的时间图表:
Perf | where ObjectName == "Process" and CounterName == "% Processor Time" and InstanceName != "_Total" | summarize AvgCPU = avg(CounterValue) by InstanceName, bin(TimeGenerated, 1m) | render timechart
优化:合并同名进程实例
如果进程实例名带#数字后缀(如chrome#1、chrome#2),可合并为同一个进程名统计:
Perf | where ObjectName == "Process" and CounterName == "% Processor Time" and InstanceName != "_Total" | extend ProcessName = replace_string(InstanceName, @"#\d+$", "") // 移除实例后缀的#数字 | summarize AvgCPU = avg(CounterValue) by ProcessName, bin(TimeGenerated, 1m) | render timechart
内容的提问来源于stack exchange,提问作者RadhaKrishnaAmmisetti
相关产品推荐
相关产品推荐

