来自规则文档:
record:要输出到的时间序列的名称。必须是有效的指标名称。
expr:要计算的 PromQL 表达式。每个评估周期都会在当前时间进行评估,并将结果记录为一组新的时间序列,其指标名称由“记录”给出。
我将记录理解为规则的名称,将表达式理解为要评估的 PromQL 语句。
但是当我转到规则选项卡时,它们显示为两个单独的链接,并且图表不同:
原因是什么?
这是我的配置文件:
groups:
- name: wellboreddms_rules
rules:
# HTTP request rate (number of requests per time unit)
- record: number_of_requests_per_time
expr: increase(http_requests_total{group="wellbore_ddms"}[30s])
# HTTP response times (average)
- record: avg_response_time
expr: rate(http_request_duration_seconds_sum[30s]) / rate(http_request_duration_seconds_count[30s])
global:
scrape_interval: 15s
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: 'codelab-monitor'
rule_files:
- "metrics.rules.yml"
scrape_configs:
- job_name: 'wdms'
scrape_interval: 3s
metrics_path: /api/os-wellbore-ddms/metrics
scheme: http
static_configs:
- targets: ['api:8080']
labels:
group: 'wellbore_ddms'
链接有所不同,因为一个链接向您显示由记录规则创建的指标值,而另一个链接则显示用作表达式的查询的原始结果。
如果一切正确,他们应该会得到相同的结果。在您的情况下,结果会有所不同,因为您的规则是错误的。
我们以第一条规则
number_of_requests_per_time
为例。请注意,您的规则记录了 30 秒内指标的增加。但由于您没有指定评估间隔(既不是本地 interval
,也不是全局 evaluation_interval
),因此使用默认值 1m
。这意味着您仅在每分钟的第二个 30 秒内记录原始指标的变化,并忽略前 30 秒内的变化。