本文介绍如何配置预聚合(Recording Rule)以及如何查看Recording Rule指标。
背景信息
预聚合(Recording Rule)可以对落地的指标数据做二次开发。某些查询可能需要在查询端进行大量的计算,导致查询端压力过大,您可以配置预聚合规则将计算过程提前到写入端,减少查询端资源占用,尤其在大规模集群和复杂业务场景下可以有效的降低PromQL的复杂度,从而提高查询性能,解决用户配置以及查询慢的问题。
配置Recording Rule
- 登录 Prometheus控制台 。
- 在左侧导航栏单击 监控列表 ,进入可观测监控 Prometheus 版的实例列表页面。
- 在页面左上角选择目标地域,然后单击需要配置Recording Rule的Prometheus实例名称。
-
在左侧导航栏的
设置
页面单击
设置
页签,然后单击
编辑RecordingRule.yaml
。
-
在弹出的对话框,删除默认模板并输入预聚合规则,然后单击
保存
。
说明 同一个集群只需要配置一份RecordingRule.yaml,不同规则组(Rule Group)的名字必须不同。
预聚合规则示例:
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 。 labels (可选)指标的标签。 -
查看Recording Rule指标
方式一:从Grafana大盘查看
- 以管理员账号登录本地Grafana系统。
- 在左侧导航栏中选择 Explore 。
- 在 Explore 右侧选择对应的Kubernetes集群名称,然后在 Metrics 右侧输入Recording Rule指标名称查看该指标的数据详情。
方式二:从Prometheus控制台查看
- 登录 Prometheus控制台 。
- 在左侧导航栏单击 监控列表 ,进入可观测监控 Prometheus 版的实例列表页面。
- 在页面左上角选择目标地域,然后单击需要查看Recording Rule指标的Prometheus实例名称。
- 在左侧导航栏的 服务发现 页面,选择 指标 页签,然后您可以在搜索框中输入对应的Recording Rule指标名称来查看该指标的详细信息。
Recording Rule支持Remote Write
可观测监控 Prometheus 版 的Recording Rule同开源Prometheus一样,支持Remote Write功能。
- 登录 Prometheus控制台 。
- 在左侧导航栏单击 监控列表 ,进入可观测监控 Prometheus 版的实例列表页面。
- 在页面左上角选择目标地域,然后单击需要配置Remote Write的Prometheus实例名称。
- 在左侧导航栏的 设置 页面单击 设置 页签,然后单击 编辑Prometheus.yaml 。
-
在弹出的
编辑Prometheus.yaml
对话框中配置Remote Write。
说明 配置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
以上白名单的具体地址,您可以 提交工单 或者在钉钉中搜索Prometheus值班号(钉号:aliprometheus),联系产品技术专家获取。