[英]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
期望的結果:
或者在普羅米修斯有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.