簡體   English   中英

單元測試 Prometheus 警報:輸入系列和間隔

[英]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.

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