Azure Windows VM进程与服务告警配置及Top10进程告警需求咨询
针对特定进程/服务配置告警及附带Top10进程输出方案
一、配置特定进程或服务的告警
1. 确认数据收集前提
确保你的DCR(数据收集规则)已配置收集Windows进程、服务的性能/事件数据:
- 性能计数器:在DCR中添加「性能计数器」数据源,勾选
Process(*)\% Processor Time、Process(*)\Working Set - Private、Service(*)\State等所需计数器 - 事件日志:添加「Windows事件日志」数据源,勾选
System日志(用于捕获服务状态变更事件)
2. 创建告警规则
方式1:基于指标(Metric)的告警(适合实时阈值监控)
- 进入Azure Monitor → 告警 → 新建告警规则
- 范围:选择目标Windows虚拟机
- 信号类型:选择「指标」
- 信号名称:
- 进程监控:选择
Process(目标进程名)\% Processor Time或Process(目标进程名)\Working Set - Private,设置阈值(如持续5分钟CPU占用超80%) - 服务监控:选择
Service(目标服务名)\State,设置阈值为「不等于1」(1代表服务运行中,0代表停止)
- 进程监控:选择
- 配置评估频率、触发条件后,关联动作组(邮件、短信、Webhook等)
方式2:基于日志(Log)的告警(适合复杂条件监控)
用KQL查询自定义触发逻辑,示例如下:
- 进程CPU过高告警:
Perf | where ObjectName == "Process" | where CounterName == "% Processor Time" | where InstanceName startswith "chrome" // 匹配所有chrome进程,替换为目标进程名 | summarize avg_cpu = avg(CounterValue) by bin(TimeGenerated, 5m), Computer | where avg_cpu > 80 - 服务停止告警:
// 监控服务停止事件(EventID 7036) Event | where EventLog == "System" | where Source == "Service Control Manager" | where EventID == 7036 | where Message contains "服务进入停止状态" | where Message contains "wuauserv" // 替换为目标服务名 - 后续步骤:配置评估频率、触发条件,关联动作组
二、告警时附带Top10进程输出
仅能通过基于日志的告警规则实现,步骤如下:
- 修改KQL查询,在触发告警的同时查询目标VM的Top10 CPU/内存进程:
- Top10 CPU进程示例:
// 定义告警触发条件 let alert_condition = Perf | where ObjectName == "Process" | where CounterName == "% Processor Time" | where InstanceName == "chrome" | summarize avg_cpu = avg(CounterValue) by Computer, bin(TimeGenerated, 5m) | where avg_cpu > 80; // 查询目标VM的Top10 CPU进程 let top_cpu_processes = Perf | where ObjectName == "Process" | where CounterName == "% Processor Time" | where Computer in (alert_condition.Computer) | summarize avg_cpu = avg(CounterValue) by InstanceName, Computer | top 10 by avg_cpu desc | project process_detail = strcat(InstanceName, ": ", round(avg_cpu, 2), "% CPU"); // 合并告警数据与Top10进程 alert_condition | extend Top10_CPU_Processes = strcat_array(top_cpu_processes.process_detail, "\n") - Top10内存进程示例:将上述查询中的
CounterName替换为Working Set - Private,调整字段名即可
- Top10 CPU进程示例:
- 在告警规则的「自定义预警逻辑」中,确保查询返回的
Top10_CPU_Processes字段被包含 - 配置动作组时,在邮件通知的自定义模板中引用该字段:
例如在邮件内容里添加:
告警邮件会直接展示Top10进程的CPU占用情况受影响VM的Top10 CPU进程: {{Top10_CPU_Processes}}
注意事项
- 进程名的
InstanceName可能带后缀(如chrome#1),若需匹配所有同名进程,可使用replace_str(InstanceName, "#", "") == "chrome"替代精确匹配 - 服务名需与系统中显示的服务名称一致(可通过
services.msc查看) - 确保AMA代理正常运行,DCR配置的数据源已生效
内容的提问来源于stack exchange,提问作者swadesh
相关产品推荐
相关产品推荐

