本文介绍如何配置预聚合(Recording Rule)以及如何查看Recording Rule指标。

背景信息

预聚合(Recording Rule)可以对落地的指标数据做二次开发。某些查询可能需要在查询端进行大量的计算,导致查询端压力过大,您可以配置预聚合规则将计算过程提前到写入端,减少查询端资源占用,尤其在大规模集群和复杂业务场景下可以有效的降低PromQL的复杂度,从而提高查询性能,解决用户配置以及查询慢的问题。

说明 Recording Rule的配置与开源Prometheus相同,以规则组(Rule Group)的形式存在,每个规则组可以有多条规则(Rules),聚合规则的名称必须符合 Prometheus指标名称规范。相同组中的规则以一定的间隔顺序执行,预聚合后的指标按照新的规则名字存入远端数据库。

配置Recording Rule

  1. 登录Prometheus控制台
  2. 在页面左上角选择目标地域,然后单击需要配置Recording Rule的Prometheus实例名称。
  3. 在左侧导航栏的设置页面单击设置页签,然后单击编辑RecordingRule.yaml
    eti
  4. 编辑RecordingRule.yaml对话框,删除默认模板并输入预聚合规则,然后单击保存
    说明 同一个集群只需要配置一份RecordingRule.yaml,不同规则组(Rule Group)的名字必须不同。
    bc

    预聚合规则示例:

    groups:
      - name: apiserver_request_total
        interval: 60s
        rules:
          - record: job_instance_mode:apiserver_request_total:avg_rate5m
            expr: avg by (job, instance, mode) (rate(apiserver_request_total[5m]))
            labels:
              team: operations
          - record: job:apiserver_request_total:sum_rate10m
            expr: sum by (job)(rate(apiserver_request_total[10m]))
            labels:
              team: operations
    参数 说明
    groups 规则组。一份RecordingRule.yaml可以配置多组规则组。
    name 规则组名称。规则组名称必须唯一。
    interval (可选)规则组的执行周期。默认60s。
    rules 规则。一个规则组可以包含多条规则。
    record 规则的名称。聚合规则的名称必须符合 Prometheus指标名称规范
    说明 预聚合规则命名的推荐格式level:metric:operations
    • level:表示聚合级别,以及规则的输出标签。
    • metric:表示指标的名称。
    • operations:应用于指标的操作列表,最新的操作在前面。
    expr 计算表达式。Prometheus监控将通过该表达式计算得出预聚合指标。计算表达式必须符合PromQL
    lables (可选)指标的标签。

查看Recording Rule指标

方式一:从Grafana大盘查看

  1. 以管理员账号登录本地Grafana系统。
  2. 在左侧导航栏中选择Explore
  3. Explore右侧选择对应的Kubernetes集群名称,然后在Metrics右侧输入Recording Rule指标名称查看该指标的数据详情。fg

方式二:从Prometheus监控控制台查看

  1. 登录Prometheus控制台
  2. 在页面左上角选择目标地域,然后单击需要查看Recording Rule指标的Prometheus实例名称。
  3. 在左侧导航栏的服务发现页面,选择指标页签,然后您可以在搜索框中输入对应的Recording Rule指标名称来查看该指标的详细信息。adf

Recording Rule支持Remote Write

阿里云Prometheus监控的Recording Rule同开源Prometheus一样,支持Remote Write功能。

  1. 登录Prometheus控制台
  2. 在页面左上角选择目标地域,然后单击需要配置Remote Write的Prometheus实例名称。
  3. 在左侧导航栏的设置页面单击设置页签,然后单击编辑Prometheus.yaml
    wsd
  4. 在弹出的编辑Prometheus.yaml对话框中配置Remote Write。
    jk
    说明 配置Remote Write的方法与开源Prometheus配置方法相同。支持多组Remote Write配置,同时支持Write Relabel Config。
    Remote Write配置同时对Agent和Recording Rule组件生效。若只需要将Recording Rule生成的指标远程写(Remote Write)到其他库,可配置对应的Write Relabel Config。示例如下:
    remote_write:
      - url: "https://xxxx/api/v1/prom/write?db=dbname&u=username&p=password"    //远程写数据库地址
        write_relabel_configs:
          - source_labels: [__name__]
            regex: job_instance_mode:apiserver_request_total:avg_rate5m
            action: keep
    说明 当前配置只会将Recording Rule指标( 即job_instance_mode:apiserver_request_total:avg_rate5m)远程写(Remote Write)到其他库。

相关操作

对Recording Rule生成的新指标Remote Write,URL需要使用公网地址。如需对Recording Rule组件添加网络白名单,请根据地域添加对应的白名单。

 北京:101.200.XX.XX
 杭州:118.31.XX.XX
 上海:106.14.XX.XX
 深圳:8.129.XX.XX
 张家口:39.103.XX.XX
 青岛:139.129.XX.XX
 成都:47.108.XX.XX
 香港:47.242.XX.XX
 新加坡:47.241.XX.XX