我正在尝试测试 Prometheus 警报的记录规则。
这按预期工作:
# test_file.yaml
rule_files:
- "../records.yaml"
evaluation_interval: 1m
group_eval_order:
- records
tests:
- name: "Some test"
interval: 1m
input_series:
- series: 'some_metric{somelabel="somevalue"}'
values: '1+0x144000'
promql_expr_test:
- expr: recording_rule:under_test
exp_samples:
- labels: recording_rule:under_test{somelabel="somevalue"}
value: 1
这是
records.yaml
:
- expr: avg_over_time(some_metric{}[24h:]) > 0
record: recording_rule:under_test
正如预期的那样,记录规则包括
some_metric
,这使得测试通过。
当我尝试向记录规则添加偏移量时,问题就开始了。
- expr: avg_over_time(some_metric{}[24h:] offset 1w) > 0
record: recording_rule:under_test
然后测试失败。我最初认为这是因为
input_series
只填充未来的数据,而记录规则是搜索过去的数据。我尝试将测试抵消到未来:
promql_expr_test:
- expr: recording_rule:under_test offset -1w
exp_samples:
- labels: recording_rule:under_test{somelabel="somevalue"}
value: 1
但是,这没有用。我还尝试为
input_series
添加偏移量,但这在语法上是不可能的。
将测试的
eval_time
向前移动偏移量。