You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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进程输出

仅能通过基于日志的告警规则实现,步骤如下:

  1. 修改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,调整字段名即可
  2. 在告警规则的「自定义预警逻辑」中,确保查询返回的Top10_CPU_Processes字段被包含
  3. 配置动作组时,在邮件通知的自定义模板中引用该字段:
    例如在邮件内容里添加:
    受影响VM的Top10 CPU进程:
    {{Top10_CPU_Processes}}
    
    告警邮件会直接展示Top10进程的CPU占用情况

注意事项

  • 进程名的InstanceName可能带后缀(如chrome#1),若需匹配所有同名进程,可使用replace_str(InstanceName, "#", "") == "chrome"替代精确匹配
  • 服务名需与系统中显示的服务名称一致(可通过services.msc查看)
  • 确保AMA代理正常运行,DCR配置的数据源已生效

内容的提问来源于stack exchange,提问作者swadesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:30:08