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

背景信息

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

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

配置Recording Rule

  1. 登录ARMS控制台
  2. 在左侧导航栏选择Prometheus监控 > Prometheus实例列表
  3. 在页面左上角选择目标地域,然后单击需要配置Recording Rule的Prometheus实例名称。
  4. 在左侧导航栏的设置页面单击设置页签,然后单击编辑RecordingRule.yaml
    eti
  5. 编辑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. 登录ARMS控制台
  2. 在左侧导航栏选择Prometheus监控 > Prometheus实例列表
  3. 在页面左上角选择目标地域,然后单击需要查看Recording Rule指标的Prometheus实例名称。
  4. 在左侧导航栏的服务发现页面,选择指标页签,然后您可以在搜索框中输入对应的Recording Rule指标名称来查看该指标的详细信息。adf

Recording Rule支持Remote Write

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

  1. 登录ARMS控制台
  2. 在左侧导航栏选择Prometheus监控 > Prometheus实例列表
  3. 在页面左上角选择目标地域,然后单击需要配置Remote Write的Prometheus实例名称。
  4. 在左侧导航栏的设置页面单击设置页签,然后单击编辑Prometheus.yaml
    wsd
  5. 在弹出的编辑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