
# 配置预聚合规则提升查询指标效率
预聚合（Recording Rule）可以预先计算经常需要或计算量大的表达式，并将结果保存为一组新的时间序列，从而实现对复杂的PromQL语句的性能优化，提高查询效率。您可以配置预聚合规则，将计算过程提前写入端，减少查询端资源占用。
#### 应用场景
某些指标查询可能需要在查询端进行大量的计算，查询端压力过大，影响查询性能。通过配置预聚合规则对一些常用的指标或者相对复杂的指标进行提前计算；尤其在大规模集群和复杂业务场景下可以有效的降低PromQL的复杂度，从而提高指标查询性能，解决用户配置以及查询慢的问题。
#### 实践场景
您需要先[配置Recording Rule]，对落地的指标数据做二次开发；然后通过"指标浏览"[查看Recording Rule指标]。
 #### 配置Recording Rule
1. 登录[AOM 2.0控制台](https://console.huaweicloud.com/aom2#/aom2/betaTest)。
2. 在左侧导航栏选择"Prometheus监控 \> 实例列表"。
3. 单击"创建Prometheus实例"，详细参数说明可参考[表1]。
   
    表1创建Prometheus 通用实例类型实例 
   | 参数              | 说明                                                                                                                                                                                                                                                                                                                                                                                                                 | 示例                                        |
   |:---|:---|:---|
   | Prometheus 实例名称 | Prometheus实例的名称。 只能由中文、字母、数字、下划线、中划线组成，且不能以下划线或中划线开头和结尾，最多不能超过100个字符。                                                                                                                                                                                                                                                                                                               | mon_AOM  |
   | 企业项目            | 所属的企业项目。 - 如果在全局页面设置为"ALL"，此处请从下拉列表中选择企业项目。  - 如果在全局页面已选择企业项目，则此处灰化不可选。                                    | default                                   |
   | Prometheus 实例类型 | Prometheus实例的类型。当前仅CCE类型和通用实例类型的Prometheus实例可以配置预聚合规则。                                                                                                                                                                                                                                                                                                                                                             | 通用实例                                      |
   | 描述              | Prometheus实例的描述，最多不能超过1024个字符。当前示例可不填写。                                                                                                                                                                                                                                                                                                                                                                            | -                                         |
   | 标签              | 单击"添加标签"，输入标签键和标签值，即可为Prometheus实例添加标签。当前示例可不填写。 - 最多可添加20个标签。  - 标签键可以包含任意语种的字母、数字和空格，以及_.:=+-@字符，但首尾不能包含空格，且不能以_sys_开头。  - 标签值可以包含任意语种的字母、数字和空格，以及_.:/=+-@字符。   | -                                         |
      
   
   
4. 设置完成，单击"确定"。
5. 在Prometheus实例列表中，单击[3]创建的通用实例类型Prometheus实例的名称，进入该实例的详情界面。
6. 在左侧导航栏单击"设置"，然后在"预聚合（Recording Rule）"区域单击"编辑RecordingRule.yaml"。
7. 在弹出的对话框，删除默认模板并输入预聚合规则。 
   同一个集群只需要配置一份RecordingRule.yaml，不同规则组（Rule Group）的名字必须不同。
   图1配置Recording Rule   
   ![](https://support.huaweicloud.com/bestpractice-aom2/zh-cn_image_0000002281289221.png "点击放大")
   表2Recording Rule参数说明 
   | 参数       | 说明                                                                                                                   |
   |:---|:---|
   | groups   | 规则组。一份RecordingRule.yaml可以配置多组规则组。                                                                                   |
   | name     | 规则组名称。规则组名称必须唯一。                                                                                                     |
   | interval | 规则组的执行周期。默认60s。（可选，建议执行周期与指标上报周期一致）                                                                                  |
   | rules    | 规则。一个规则组可以包含多条规则。                                                                                                    |
   | record   | 规则的名称。聚合规则的名称必须符合[Prometheus指标名称规范](https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels)。        |
   | expr     | 计算表达式。Prometheus监控将通过该表达式计算得出预聚合指标。计算表达式必须符合[PromQL](https://prometheus.io/docs/prometheus/latest/querying/basics/)。 |
   | labels   | 指标的标签。标签必须符合[Prometheus指标标签规范](https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels)。（可选）         |
      
   配置后的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
   ```
   
   
8. 配置完成，单击"确定"保存Recording Rule。
 
 #### 查看Recording Rule指标
Recording Rule配置完成后，可通过AOM的"[指标浏览](https://support.huaweicloud.com/usermanual-aom2/mon_01_0026.html)"界面查看和通过Grafana系统查看Recording Rule指标。此处选择通过AOM的"[指标浏览](https://support.huaweicloud.com/usermanual-aom2/mon_01_0026.html)"界面查看Recording Rule指标。
1. 登录[AOM 2.0控制台](https://console.huaweicloud.com/aom2#/aom2/betaTest)。
2. 在左侧导航栏中选择"指标浏览"。
3. 在右侧"指标源"页签选择[3]中创建的通用实例类型Prometheus实例。
4. 单击"交互模式"和"多指标"，在指标搜索框中输入对应的Recording Rule指标名称来查看该指标的详细信息。
 
