配置预聚合规则提升查询指标效率
预聚合(Recording Rule)可以预先计算经常需要或计算量大的表达式,并将结果保存为一组新的时间序列,从而实现对复杂的PromQL语句的性能优化,提高查询效率。您可以配置预聚合规则,将计算过程提前写入端,减少查询端资源占用。
应用场景
某些指标查询可能需要在查询端进行大量的计算,查询端压力过大,影响查询性能。通过配置预聚合规则对一些常用的指标或者相对复杂的指标进行提前计算;尤其在大规模集群和复杂业务场景下可以有效的降低PromQL的复杂度,从而提高指标查询性能,解决用户配置以及查询慢的问题。
实践场景
您需要先配置Recording Rule,对落地的指标数据做二次开发;然后通过“指标浏览”查看Recording Rule指标。
配置Recording Rule
- 登录AOM 2.0控制台。
- 在左侧导航栏选择“Prometheus监控 > 实例列表”。
- 单击“创建Prometheus实例”,详细参数说明可参考表1。
- 设置完成,单击“确定”。
- 在Prometheus实例列表中,单击3创建的通用实例类型Prometheus实例的名称,进入该实例的详情界面。
- 在左侧导航栏单击“设置”,然后在“预聚合(Recording Rule)”区域单击“编辑RecordingRule.yaml”。
- 在弹出的对话框,删除默认模板并输入预聚合规则。
同一个集群只需要配置一份RecordingRule.yaml,不同规则组(Rule Group)的名字必须不同。图1 配置Recording Rule
表2 Recording Rule参数说明 参数
说明
groups
规则组。一份RecordingRule.yaml可以配置多组规则组。
name
规则组名称。规则组名称必须唯一。
interval
规则组的执行周期。默认60s。(可选,建议执行周期与指标上报周期一致)
rules
规则。一个规则组可以包含多条规则。
record
规则的名称。聚合规则的名称必须符合Prometheus指标名称规范。
expr
计算表达式。Prometheus监控将通过该表达式计算得出预聚合指标。计算表达式必须符合PromQL。
labels
指标的标签。标签必须符合Prometheus指标标签规范。(可选)
配置后的Recording Rule示例如下:
groups: - name: apiserver_request_total interval: 60s rules: - record: apiserver_request_rate 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
- 配置完成,单击“确定”保存Recording Rule。
查看Recording Rule指标
Recording Rule配置完成后,可通过AOM的“指标浏览”界面查看和通过Grafana系统查看Recording Rule指标。此处选择通过AOM的“指标浏览”界面查看Recording Rule指标。
- 登录AOM 2.0控制台。
- 在左侧导航栏中选择“指标浏览”。
- 在右侧“指标源”页签选择3中创建的通用实例类型Prometheus实例。
- 单击“全量指标”和“多指标”,在指标搜索框中输入对应的Recording Rule指标名称来查看该指标的详细信息。