[英]How to automatically test Prometheus alerts?
我們即將設置 Prometheus 來監控和警報我們的雲服務,包括 Prometheus 服務的持續集成和部署管道以及警報規則/閾值等配置。 為此,我正在考慮我想為其編寫自動化測試的 3 個類別:
現在對我來說最重要的部分是測試警報規則(第 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.