本文介紹如何配置預(yù)聚合(Recording Rule)以及如何查看Recording Rule指標(biāo)。

背景信息

預(yù)聚合(Recording Rule)可以對落地的指標(biāo)數(shù)據(jù)做二次開發(fā)。某些查詢可能需要在查詢端進(jìn)行大量的計(jì)算,導(dǎo)致查詢端壓力過大,您可以配置預(yù)聚合規(guī)則將計(jì)算過程提前到寫入端,減少查詢端資源占用,尤其在大規(guī)模集群和復(fù)雜業(yè)務(wù)場景下可以有效的降低PromQL的復(fù)雜度,從而提高查詢性能,解決用戶配置以及查詢慢的問題。

說明 Recording Rule的配置與開源Prometheus相同,以規(guī)則組(Rule Group)的形式存在,每個(gè)規(guī)則組可以有多條規(guī)則(Rules),聚合規(guī)則的名稱必須符合 Prometheus指標(biāo)名稱規(guī)范。相同組中的規(guī)則以一定的間隔順序執(zhí)行,預(yù)聚合后的指標(biāo)按照新的規(guī)則名字存入遠(yuǎn)端數(shù)據(jù)庫。

配置Recording Rule

  1. 登錄Prometheus控制臺。
  2. 在左側(cè)導(dǎo)航欄單擊監(jiān)控列表,進(jìn)入可觀測監(jiān)控 Prometheus 版的實(shí)例列表頁面。
  3. 在頁面左上角選擇目標(biāo)地域,然后單擊需要配置Recording Rule的Prometheus實(shí)例名稱。
  4. 在左側(cè)導(dǎo)航欄的設(shè)置頁面單擊設(shè)置頁簽,然后單擊編輯RecordingRule.yaml。
  5. 在彈出的對話框,刪除默認(rèn)模板并輸入預(yù)聚合規(guī)則,然后單擊保存。
    說明 同一個(gè)集群只需要配置一份RecordingRule.yaml,不同規(guī)則組(Rule Group)的名字必須不同。
    bc

    預(yù)聚合規(guī)則示例:

    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
    參數(shù)說明
    groups規(guī)則組。一份RecordingRule.yaml可以配置多組規(guī)則組。
    name規(guī)則組名稱。規(guī)則組名稱必須唯一。
    interval(可選)規(guī)則組的執(zhí)行周期。默認(rèn)60s。
    rules規(guī)則。一個(gè)規(guī)則組可以包含多條規(guī)則。
    record規(guī)則的名稱。聚合規(guī)則的名稱必須符合 Prometheus指標(biāo)名稱規(guī)范。
    說明 預(yù)聚合規(guī)則命名的推薦格式level:metric:operations
    • level:表示聚合級別,以及規(guī)則的輸出標(biāo)簽。
    • metric:表示指標(biāo)的名稱。
    • operations:應(yīng)用于指標(biāo)的操作列表,最新的操作在前面。
    expr計(jì)算表達(dá)式。可觀測監(jiān)控 Prometheus 版將通過該表達(dá)式計(jì)算得出預(yù)聚合指標(biāo)。計(jì)算表達(dá)式必須符合PromQL。
    labels(可選)指標(biāo)的標(biāo)簽。

查看Recording Rule指標(biāo)

方式一:從Grafana大盤查看

  1. 以管理員賬號登錄本地Grafana系統(tǒng)。
  2. 在左側(cè)導(dǎo)航欄中選擇Explore
  3. Explore右側(cè)選擇對應(yīng)的Kubernetes集群名稱,然后在Metrics右側(cè)輸入Recording Rule指標(biāo)名稱查看該指標(biāo)的數(shù)據(jù)詳情。fg

方式二:從Prometheus控制臺查看

  1. 登錄Prometheus控制臺。
  2. 在左側(cè)導(dǎo)航欄單擊監(jiān)控列表,進(jìn)入可觀測監(jiān)控 Prometheus 版的實(shí)例列表頁面。
  3. 在頁面左上角選擇目標(biāo)地域,然后單擊需要查看Recording Rule指標(biāo)的Prometheus實(shí)例名稱。
  4. 在左側(cè)導(dǎo)航欄的服務(wù)發(fā)現(xiàn)頁面,選擇指標(biāo)頁簽,然后您可以在搜索框中輸入對應(yīng)的Recording Rule指標(biāo)名稱來查看該指標(biāo)的詳細(xì)信息。adf

Recording Rule支持Remote Write

可觀測監(jiān)控 Prometheus 版的Recording Rule同開源Prometheus一樣,支持Remote Write功能。

  1. 登錄Prometheus控制臺
  2. 在左側(cè)導(dǎo)航欄單擊監(jiān)控列表,進(jìn)入可觀測監(jiān)控 Prometheus 版的實(shí)例列表頁面。
  3. 在頁面左上角選擇目標(biāo)地域,然后單擊需要配置Remote Write的Prometheus實(shí)例名稱。
  4. 在左側(cè)導(dǎo)航欄的設(shè)置頁面單擊設(shè)置頁簽,然后單擊編輯Prometheus.yaml
  5. 在彈出的編輯Prometheus.yaml對話框中配置Remote Write。
    jk
    說明 配置Remote Write的方法與開源Prometheus配置方法相同。支持多組Remote Write配置,同時(shí)支持Write Relabel Config。
    Remote Write配置同時(shí)對Agent和Recording Rule組件生效。若只需要將Recording Rule生成的指標(biāo)遠(yuǎn)程寫(Remote Write)到其他庫,可配置對應(yīng)的Write Relabel Config。示例如下:
    remote_write:
      - url: "https://xxxx/api/v1/prom/write?db=dbname&u=username&p=password"    //遠(yuǎn)程寫數(shù)據(jù)庫地址
        write_relabel_configs:
          - source_labels: [__name__]
            regex: job_instance_mode:apiserver_request_total:avg_rate5m
            action: keep
    說明 當(dāng)前配置只會將Recording Rule指標(biāo)( 即job_instance_mode:apiserver_request_total:avg_rate5m)遠(yuǎn)程寫(Remote Write)到其他庫。

相關(guān)操作

對Recording Rule生成的新指標(biāo)Remote Write,URL需要使用公網(wǎng)地址。如需對Recording Rule組件添加網(wǎng)絡(luò)白名單,請根據(jù)地域添加對應(yīng)的白名單。

 北京: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),聯(lián)系產(chǎn)品技術(shù)專家獲取。