mirror of https://github.com/prometheus/prometheus
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
158 lines
4.1 KiB
158 lines
4.1 KiB
rule_files:
|
|
- rules.yml
|
|
|
|
evaluation_interval: 1m
|
|
|
|
tests:
|
|
# Basic tests for promql_expr_test, not dependent on rules.
|
|
- interval: 1m
|
|
input_series:
|
|
- series: test_full
|
|
values: "0 0"
|
|
|
|
- series: test_stale
|
|
values: "0 stale"
|
|
|
|
- series: test_missing
|
|
values: "0 _ _ _ _ _ _ 0"
|
|
|
|
promql_expr_test:
|
|
# Ensure the sample is evaluated at the time we expect it to be.
|
|
- expr: timestamp(test_full)
|
|
eval_time: 0m
|
|
exp_samples:
|
|
- value: 0
|
|
- expr: timestamp(test_full)
|
|
eval_time: 1m
|
|
exp_samples:
|
|
- value: 60
|
|
- expr: timestamp(test_full)
|
|
eval_time: 2m
|
|
exp_samples:
|
|
- value: 60
|
|
|
|
# Ensure a value is stale as soon as it is marked as such.
|
|
- expr: test_stale
|
|
eval_time: 59s
|
|
exp_samples:
|
|
- value: 0
|
|
labels: "test_stale"
|
|
- expr: test_stale
|
|
eval_time: 1m
|
|
exp_samples: []
|
|
|
|
# Ensure lookback delta is respected, when a value is missing.
|
|
- expr: timestamp(test_missing)
|
|
eval_time: 5m
|
|
exp_samples:
|
|
- value: 0
|
|
- expr: timestamp(test_missing)
|
|
eval_time: 5m1s
|
|
exp_samples: []
|
|
|
|
# Minimal test case to check edge case of a single sample.
|
|
- input_series:
|
|
- series: test
|
|
values: 1
|
|
|
|
promql_expr_test:
|
|
- expr: test
|
|
eval_time: 0
|
|
exp_samples:
|
|
- value: 1
|
|
labels: test
|
|
|
|
# Test recording rules run even if input_series isn't provided.
|
|
- promql_expr_test:
|
|
- expr: count_over_time(fixed_data[1h])
|
|
eval_time: 1h
|
|
exp_samples:
|
|
- value: 61
|
|
- expr: timestamp(fixed_data)
|
|
eval_time: 1h
|
|
exp_samples:
|
|
- value: 3600
|
|
|
|
# Tests for alerting rules.
|
|
- interval: 1m
|
|
input_series:
|
|
- series: 'up{job="prometheus", instance="localhost:9090"}'
|
|
values: "0+0x1440"
|
|
|
|
promql_expr_test:
|
|
- expr: count(ALERTS) by (alertname, alertstate)
|
|
eval_time: 4m
|
|
exp_samples:
|
|
- labels: '{alertname="AlwaysFiring",alertstate="firing"}'
|
|
value: 1
|
|
- labels: '{alertname="InstanceDown",alertstate="pending"}'
|
|
value: 1
|
|
|
|
alert_rule_test:
|
|
- eval_time: 1d
|
|
alertname: AlwaysFiring
|
|
exp_alerts:
|
|
- {}
|
|
|
|
- eval_time: 1d
|
|
alertname: InstanceDown
|
|
exp_alerts:
|
|
- 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."
|
|
|
|
- eval_time: 0
|
|
alertname: AlwaysFiring
|
|
exp_alerts:
|
|
- {}
|
|
|
|
- eval_time: 0
|
|
alertname: InstanceDown
|
|
exp_alerts: []
|
|
|
|
# Tests for interval vs evaluation_interval.
|
|
- interval: 1s
|
|
input_series:
|
|
- series: 'test{job="test", instance="x:0"}'
|
|
# 2 minutes + 1 second of input data, recording rules should only run
|
|
# once a minute.
|
|
values: "0+1x120"
|
|
|
|
promql_expr_test:
|
|
- expr: job:test:count_over_time1m
|
|
eval_time: 0m
|
|
exp_samples:
|
|
- value: 1
|
|
labels: 'job:test:count_over_time1m{job="test"}'
|
|
- expr: timestamp(job:test:count_over_time1m)
|
|
eval_time: 10s
|
|
exp_samples:
|
|
- value: 0
|
|
labels: '{job="test"}'
|
|
|
|
- expr: job:test:count_over_time1m
|
|
eval_time: 1m
|
|
exp_samples:
|
|
- value: 61
|
|
labels: 'job:test:count_over_time1m{job="test"}'
|
|
- expr: timestamp(job:test:count_over_time1m)
|
|
eval_time: 1m10s
|
|
exp_samples:
|
|
- value: 60
|
|
labels: '{job="test"}'
|
|
|
|
- expr: job:test:count_over_time1m
|
|
eval_time: 2m
|
|
exp_samples:
|
|
- value: 61
|
|
labels: 'job:test:count_over_time1m{job="test"}'
|
|
- expr: timestamp(job:test:count_over_time1m)
|
|
eval_time: 2m59s999ms
|
|
exp_samples:
|
|
- value: 120
|
|
labels: '{job="test"}'
|