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

如何配置Prometheus告警:process_running指标上报超3小时触发告警

解决Prometheus进程运行超时告警问题

你的核心需求是检测单台主机上的进程持续运行超过3小时,之前误用absent()函数(它是用来检测指标不存在的场景),所以无法生效。以下是正确的实现方案:

核心逻辑

进程运行时会每分钟推送process_running指标,进程退出后指标消失。因此我们需要检测的是:某个instance维度下,该指标持续存在的时长超过3小时。

告警规则实现

方法一:基于样本数量统计

由于进程每分钟推送一次样本,3小时共180个样本。通过统计过去3小时内的样本数量,判断指标是否持续存在:

groups:
- name: process_alerts
  rules:
  - alert: ProcessStuckRunning
    expr: count_over_time(process_running{job="你的任务名"}[3h]) >= 180
      AND process_running{job="你的任务名"} == 1
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "实例 {{ $labels.instance }} 进程运行超时"
      description: "{{ $labels.instance }} 上的进程已持续运行超过3小时,可能陷入停滞"

方法二:基于样本时间戳差

获取该实例上process_running指标在过去3小时内的最早样本时间戳,计算当前时间与该时间戳的差值,判断是否超过3小时:

groups:
- name: process_alerts
  rules:
  - alert: ProcessStuckRunning
    expr: time() - min_over_time(timestamp(process_running{job="你的任务名"})[3h]) > 10800
      AND process_running{job="你的任务名"} == 1
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "实例 {{ $labels.instance }} 进程运行超时"
      description: "{{ $labels.instance }} 上的进程已持续运行超过3小时,可能陷入停滞"

关键说明

  • 替换规则中的job="你的任务名"为实际的Prometheus任务标签值,确保匹配到目标指标
  • for: 1m用于过滤瞬时抖动,确保指标持续满足条件后再触发告警
  • 规则会自动按instance维度生成独立告警,每个符合条件的主机都会单独触发通知

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:50:34