簡體   English   中英

如何自動測試 Prometheus 警報?

[英]How to automatically test Prometheus alerts?

我們即將設置 Prometheus 來監控和警報我們的雲服務,包括 Prometheus 服務的持續集成和部署管道以及警報規則/閾值等配置。 為此,我正在考慮我想為其編寫自動化測試的 3 個類別:

  1. 部署期間配置的基本語法檢查(我們已經使用promtoolamtool進行了此操作
  2. 在部署期間測試警報規則(導致警報的原因)
  3. 在部署期間測試警報路由(誰收到警報)
  4. 定期檢查警報系統是否在生產中正常工作

現在對我來說最重要的部分是測試警報規則(第 1 類),但我沒有發現任何工具可以做到這一點。 我可以想象在部署期間設置 Prometheus 實例,為其提供一些指標樣本(擔心我將如何使用 Prometheus 的拉式架構來做到這一點?)然后針對它運行查詢。

到目前為止,我發現的唯一一件事是關於監控 Prometheus Alertmanager 鏈作為一個整體與第三類相關的博客文章

有沒有人做過類似的事情,或者我錯過了什么?

新版本的 Prometheus (2.5) 允許編寫警報測試,這里是一個鏈接 您可以檢查點 1 和 2。您必須定義數據和預期輸出(例如在test.yml ):

rule_files:
    - alerts.yml
evaluation_interval: 1m
tests:
# Test 1.
- interval: 1m
  # Series data.
  input_series:
      - series: 'up{job="prometheus", instance="localhost:9090"}'
        values: '0 0 0 0 0 0 0 0 0 0 0 0 0 0 0'
      - series: 'up{job="node_exporter", instance="localhost:9100"}'
        values: '1+0x6 0 0 0 0 0 0 0 0' # 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0

  # Unit test for alerting rules.
  alert_rule_test:
      # Unit test 1.
      - eval_time: 10m
        alertname: InstanceDown
        exp_alerts:
            # Alert 1.
            - exp_labels:
                  severity: page
                  instance: localhost:9090
                  job: prometheus
              exp_annotations:
                  summary: "Instance localhost:9090 down"
                  description: "localhost:9090 of job prometheus has been down for more than 5 minutes."

您可以使用 docker 運行測試:

docker run \
-v $PROJECT/testing:/tmp \
--entrypoint "/bin/promtool" prom/prometheus:v2.5.0 \
test rules /tmp/test.yml

promtool將驗證文件alerts.yml警報InstanceDown是否處於活動狀態。 這種方法的優點是您不必啟動 Prometheus。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM