簡體   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