情况:我设置了 Prometheus 和 Alertmanager 来监控各种设备的 CPU 温度等。Alertmanager 将警报从生产设备发送到 PagerDuty。
我正在监控的设备有不同的型号和不同的操作规格。型号 1-5 的正常 CPU 温度为 50C,而型号 6 为 70C。目前 CPU 温度警报的阈值为 60C,因此 PagerDuty 不断收到来自在正常温度下运行的 6 型设备的警报。
如果温度低于 80C,是否有办法仅从 6 型设备中过滤出 CPU 温度警报,并且在 60C 时仍会收到 1-5 型设备的 CPU 温度警报?
注意:还有许多其他指标正在被监控,但对于除 CPU 温度之外的所有指标,所有设备型号都具有完全相同的阈值。
这是我的一个片段,alertmanager.yml
它向 PagerDuty 发送刺激警报
- 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 之外的所有关键产品警报都发送到 PagerDuty
- 如果型号不是 6(uuid 包含型号后跟“X”),则仅将关键产品 device_cpu_temperature 警报发送到 PagerDuty
- 仅当 cpu 温度高于 80C 时,来自 6 型设备的关键 prod device_cpu_temperature 警报才会发送到 PagerDuty。
或者在普罗米修斯中有两个不同的警报规则会更好吗?某些规则能否仅适用于某些设备?如果是这样,怎么做?