Max*_*Max 3 monitoring health-monitoring prometheus pagerduty prometheus-alertmanager
情况:我安装了Prometheus和Alertmanager来监控各种设备的CPU温度。Alertmanager将警报从生产设备发送到PagerDuty。
我监视的设备具有不同的型号,具有不同的操作规格。1-5型的正常CPU温度是50C,而6型的是70C。当前,CPU温度警报的阈值为60C,因此PagerDuty不断从在正常温度下运行的Model 6设备获取警报。
如果温度低于80C,有没有办法仅从6型设备中过滤出CPU温度警报,而在60C下仍能获得1-5型设备的CPU温度警报?
注意:有许多其他指标正在监视,但是对于除CPU温度以外的所有其他指标,所有设备型号都具有完全相同的阈值。
这是我的一个代码片段,alertmanager.yml它将产品警报发送到PagerDuty
- match:
stack_name: prod
severity: critical
receiver: PagerDuty
Run Code Online (Sandbox Code Playgroud)
诚然,我没有很多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
Run Code Online (Sandbox Code Playgroud)
期望的结果:
还是在Prometheus中设置两个不同的警报规则会更好?某些规则只能应用于某些设备吗?如果是这样,怎么办?
比较容易的是在Prometheus中创建不同的警报规则。
实际上,警报管理器仅用于发送,分组,过滤等警报,而不用于评估指标。
您可以通过Prometheus配置中的两个不同警报来实现此目的,并按主机名或导出器提供的任何其他标签进行过滤。
服务器1-5的表达式应如下所示:
- alert: ServiceProbeFailed
expr: cpu_temperature{hostname!~".*server_6.*"} > 50
Run Code Online (Sandbox Code Playgroud)
服务器6的规则:
- alert: ServiceProbeFailed
expr: cpu_temperature{hostname=~".*server_6.*"} > 70
Run Code Online (Sandbox Code Playgroud)
警报具有相同的名称,因此警报管理器将是相同的警报。
| 归档时间: |
|
| 查看次数: |
2119 次 |
| 最近记录: |