[英]Unit Testing Prometheus Alerts: input series and interval
我一直在為我的 Prometheus 警報編寫單元測試,我剛剛增加了警報的間隔范圍,因此我需要修改我當前的測試。 這是我修改后的測試:
- interval: 15m
# Series data.
input_series:
- series: 'some_bucket{service_name="some-service", le="1000"}'
values: 6 6 6 6 6 6 6
- series: 'some_bucket{service_name="some-service", le="10000"}'
values: 10 11 12 13 14 14 14
- series: 'some_bucket{service_name="some-service", le="+Inf"}'
values: 10 100 200 300 400 500 600
alert_rule_test:
- eval_time: 5m
alertname: someName
exp_alerts: []
- eval_time: 15m
alertname: someName
exp_alerts:
- exp_labels:
severity: error
service_name: some-service
exp_annotations:
summary: "a summary"
description: "adescription"
我的警報規則是:
histogram_quantile(0.95, sum by(le) (rate(some_bucket{service_name="some-service"}[15m]))) >= 1000
測試工作正常,它不會在 5 分鍾的eval_time
觸發,而是在達到正確的間隔時觸發。 我的問題是關於頂部設置的間隔
- interval: 15m
我的理解是,這應該是抓取間隔,但如果我將其更改為 1,則測試失敗。 這是為什么? 這是否意味着我的時間序列/輸入數據需要更改?
謝謝
給定的間隔本身不是刮擦間隔,而是系列中值之間的時間。
將間隔設置為 15 分鍾意味着您的系列(每個有七個條目,因此它們之間有六個間隔)定義6 x 15 = 90 minutes
的數據。
將此設置為1m
意味着六分鍾后您的測試數據為空。 我在任何文檔中都找不到我猜它未定義或被視為缺失值的行為。
以下測試將以interval: 15m
運行。 將其設置為1m
會中斷測試,您會看到桶的值為“nil”。
evaluation_interval: 1m
tests:
- interval: 1m
# Series data.
input_series:
- series: 'some_bucket{service_name="some-service", le="1000"}'
values: 6 6 6 6 6 6 6
- series: 'some_bucket{service_name="some-service", le="10000"}'
values: 10 11 12 13 14 14 14
- series: 'some_bucket{service_name="some-service", le="+Inf"}'
values: 10 100 200 300 400 500 600
promql_expr_test:
- expr: histogram_quantile(0.95, sum by(le) (rate(some_bucket{service_name="some-service"}[15m])))
eval_time: 15m
exp_samples:
- value: 10000
- expr: some_bucket
eval_time: 16m
exp_samples:
- labels: 'some_bucket{service_name="some-service",le="1000"}'
value: 6
- labels: 'some_bucket{service_name="some-service",le="10000"}'
value: 11
- labels: 'some_bucket{service_name="some-service",le="+Inf"}'
value: 100
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.