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

Sensu升级后:实现检查n次异常后触发处理程序的最佳实践

解决Sensu 1.x中连续n次异常才触发处理程序的问题

我完全懂你升级后的困扰——Sensu从0.24到1.x确实大幅调整了告警触发的逻辑,原来check里的occurrences属性不再直接控制触发条件,而是需要通过**过滤器(filter)**来实现这个“连续n次异常才告警”的需求。下面一步步教你配置:

1. 先搞懂核心变化

在Sensu 1.x中,check配置里的occurrences只是事件的元数据(用来记录当前异常连续发生的次数),不再自动过滤事件。真正的过滤逻辑要放到处理程序(handler)的过滤器链里,这样配置更灵活,能给不同的handler设置不同的触发阈值。

2. 创建一个基于异常次数的过滤器

首先创建一个过滤器,比如我们要实现“连续5次异常才允许触发”,可以在Sensu的配置目录(通常是/etc/sensu/conf.d/filters/)下新建一个occurrences_5.json文件,内容如下:

{
  "filters": {
    "occurrences_5": {
      "attributes": {
        "occurrences": {
          "gte": 5
        }
      },
      "when": {
        "status": "!= 0"
      }
    }
  }
}

这个过滤器的逻辑很直白:当事件状态不为0(也就是检查失败)时,只有当occurrences(连续异常次数)大于等于5的时候,才允许事件通过这个过滤器,到达后续的处理程序。

3. 给PagerDuty处理程序关联这个过滤器

接下来修改你的PagerDuty处理程序配置,确保它只接收通过上述过滤器的事件。找到你的pagerduty handler配置文件(比如/etc/sensu/conf.d/handlers/pagerduty.json),添加filters字段:

{
  "handlers": {
    "pagerduty": {
      "type": "pipe",
      "command": "pagerduty-handler",
      "filters": ["occurrences_5", "handle_when"]
    }
  }
}

这里的handle_when是Sensu自带的默认过滤器,它会帮你过滤掉一些不需要处理的情况(比如事件处于flapping状态、或者是恢复事件不需要告警的场景),建议保留。

4. 调整检查配置(可选,但建议保留)

你原来的check配置里的occurrences可以保留,它现在的作用是设置事件初始的occurrences值(默认是1),但核心的过滤逻辑已经由上面的过滤器完成了。你的check配置可以继续用之前的内容:

{
  "checks": {
    "examplecom_http": {
      "command": "check-http.rb --url https://example.com -s -k -q 'Keyword'",
      "handlers": ["default","pagerduty"],
      "subscribers": ["network"],
      "interval": 60,
      "occurrences": 5
    }
  }
}

5. 验证配置

重启Sensu相关服务(sensu-server、sensu-api),然后模拟这个HTTP检查连续失败5次的情况,你会发现PagerDuty只会在第5次异常时触发告警,完全符合你的预期。

额外提示

  • 如果不同的检查需要不同的触发阈值(比如有的要连续3次,有的要5次),可以创建多个过滤器(比如occurrences_3、occurrences_5),然后给对应的handler关联不同的过滤器即可。
  • 当检查恢复(status=0)后,Sensu会重置该事件的occurrences计数,下次异常会从1重新开始累加,这和你之前0.24版本的逻辑是一致的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:14:34