本文介绍如何配置预聚合(Recording Rule)以及如何查看Recording Rule指标。
背景信息
预聚合(Recording Rule)可以对落地的指标数据做二次开发。某些查询可能需要在查询端进行大量的计算,导致查询端压力过大,您可以配置预聚合规则将计算过程提前到写入端,减少查询端资源占用,尤其在大规模集群和复杂业务场景下可以有效的降低PromQL的复杂度,从而提高查询性能,解决用户配置以及查询慢的问题。
说明 Recording Rule的配置与开源Prometheus相同,以规则组(Rule Group)的形式存在,每个规则组可以有多条规则(Rules),聚合规则的名称必须符合 Prometheus指标名称规范。相同组中的规则以一定的间隔顺序执行,预聚合后的指标按照新的规则名字存入远端数据库。
配置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),联系产品技术专家获取。