首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prometheus-Alertmanager警报的复杂规则/过滤器

Prometheus-Alertmanager警报的复杂规则/过滤器
EN

Stack Overflow用户
提问于 2018-07-19 15:39:56
回答 1查看 6.9K关注 0票数 5

情境:我有Prometheus和Alertmanager的设置来监控各种设备的CPU温度。警报管理器从生产设备向PagerDuty发送警报。

我所监测的设备有不同的型号和不同的操作规格。型号1-5的正常CPU温度为50C,而型号6的正常CPU温度为70C。目前CPU温度警报的阈值为60℃,因此PagerDuty不断从正常温度下运行的型号6设备收到警报。

如果温度低于80℃,并且仍然在60℃时从型号1-5设备上筛选cpu温度警报,那么是否有办法筛选出仅来自型号6设备的cpu温度警报?

注意:还有许多其他指标正在被监控,但除了CPU温度之外,所有设备模型的阈值都完全相同。

下面是我的alertmanager.yml中的一个片段,它向PagerDuty发送prod警报

代码语言:javascript
复制
- match:
    stack_name: prod
    severity: critical
  receiver: PagerDuty

无可否认,我没有太多的经验。但这正是我希望做的,但我不确定正确的语法:

代码语言:javascript
复制
- match:
    stack_name: prod
    severity: critical
    alertname: !device_cpu_temperature
  receiver: PagerDuty
- match:
    stack_name: prod
    severity: critical
    alertname: device_cpu_temperature
    uuid: !*6X*
  receiver: PagerDuty
- match: 
    stack_name: prod
    severity: critical
    alertname: device_cpu_temperature
    uuid: *6X*
    value: >80
  receiver: PagerDuty

预期结果:

  • 除了device_cpu_temperature以外,所有重要的prod警报都被发送到PagerDuty
  • 只有当型号不是6时才向PagerDuty发送关键prod警报(uuid包含型号后面跟着'X')
  • 只有当cpu温度超过80C时,来自型号6设备的关键prod device_cpu_temperature警报才会发送到PagerDuty。

或者在普罗米修斯有两个不同的警报规则会更好吗?某些规则只能适用于某些设备吗?如果是这样的话,是怎么做的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-19 16:30:45

在Prometheus中创建不同的警报规则就更容易了。

实际上,警报管理器只用于发送、分组、筛选等警报,而不是评估指标。

您可以通过Prometheus配置中的两个不同的警报、主机名筛选或出口商提供的任何其他标签来实现这一点。

服务器1-5的表达式应该如下所示:

代码语言:javascript
复制
 - alert: ServiceProbeFailed
   expr: cpu_temperature{hostname!~".*server_6.*"} > 50

以及服务器6的规则:

代码语言:javascript
复制
 - alert: ServiceProbeFailed
   expr: cpu_temperature{hostname=~".*server_6.*"} > 70

警报具有相同的名称,因此警报管理器将是相同的警报。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51426815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档