prometheus规则配置中记录和表达式有什么区别?

问题描述 投票:0回答:1

来自规则文档

record:要输出到的时间序列的名称。必须是有效的指标名称。

expr:要计算的 PromQL 表达式。每个评估周期都会在当前时间进行评估,并将结果记录为一组新的时间序列,其指标名称由“记录”给出。

我将记录理解为规则的名称,将表达式理解为要评估的 PromQL 语句。

但是当我转到规则选项卡时,它们显示为两个单独的链接,并且图表不同:

原因是什么?

这是我的配置文件:

metrics.rules.yml
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])
普罗米修斯.yml
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'
devops prometheus monitoring promql
1个回答
0
投票

链接有所不同,因为一个链接向您显示由记录规则创建的指标值,而另一个链接则显示用作表达式的查询的原始结果。

如果一切正确,他们应该会得到相同的结果。在您的情况下,结果会有所不同,因为您的规则是错误的。

我们以第一条规则

number_of_requests_per_time
为例。请注意,您的规则记录了 30 秒内指标的增加。但由于您没有指定评估间隔(既不是本地
interval
,也不是全局
evaluation_interval
),因此使用默认值
1m
。这意味着您仅在每分钟的第二个 30 秒内记录原始指标的变化,并忽略前 30 秒内的变化。

© www.soinside.com 2019 - 2024. All rights reserved.