繁体   English   中英

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

[英]Complex rules/filters for Prometheus-Alertmanager Alerts

情况:我有Prometheus和Alertmanager设置来监控各种设备的CPU温度等。 Alertmanager将生产设备的警报发送到PagerDuty。

我正在监控的设备有不同的型号,具有不同的操作规格。 1-5型的正常CPU温度为50℃,而型号6的CPU温度为70℃。 目前,CPU临时警报的阈值为60C,因此PagerDuty不断从正常温度下运行的6型设备获取警报。

如果温度低于80℃,是否有办法从模型6设备中过滤出CPU临时警报,并且仍然可以在60℃时获得模型1-5设备的CPU临时警报?

注意:有许多其他指标正在被监控,但对于CPU temp以外的所有指标,所有设备模型都具有完全相同的阈值。

这是我的alertmanager.yml一个片段,它向alertmanager.yml发送prod警报

- match:
    stack_name: prod
    severity: critical
  receiver: PagerDuty

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

- 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,则关键产品device_cpu_temperature警报仅发送到PagerDuty(uuid包含型号后跟“X”)
  • 仅当cpu temp高于80C时,才会将来自型号6设备的严重prod device_cpu_temperature警报发送到PagerDuty。

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

更容易在普罗米修斯创建不同的警报规则。

实际上,警报管理器仅用于发送,分组,过滤等警报,而不是评估指标。

您可以使用Prometheus配置中的两个不同警报,按主机名过滤或导出器提供的任何其他标签来实现此目的。

服务器1-5的表达式应该是这样的:

 - alert: ServiceProbeFailed
   expr: cpu_temperature{hostname!~".*server_6.*"} > 50

而服务器6的规则:

 - alert: ServiceProbeFailed
   expr: cpu_temperature{hostname=~".*server_6.*"} > 70

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM