本文介紹如何配置預(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
- 登錄Prometheus控制臺。
- 在左側(cè)導(dǎo)航欄單擊監(jiān)控列表,進(jìn)入可觀測監(jiān)控 Prometheus 版的實(shí)例列表頁面。
- 在頁面左上角選擇目標(biāo)地域,然后單擊需要配置Recording Rule的Prometheus實(shí)例名稱。
- 在左側(cè)導(dǎo)航欄的設(shè)置頁面單擊設(shè)置頁簽,然后單擊編輯RecordingRule.yaml。
- 在彈出的對話框,刪除默認(rèn)模板并輸入預(yù)聚合規(guī)則,然后單擊保存。說明 同一個(gè)集群只需要配置一份RecordingRule.yaml,不同規(guī)則組(Rule Group)的名字必須不同。
預(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大盤查看
- 以管理員賬號登錄本地Grafana系統(tǒng)。
- 在左側(cè)導(dǎo)航欄中選擇Explore。
- 在Explore右側(cè)選擇對應(yīng)的Kubernetes集群名稱,然后在Metrics右側(cè)輸入Recording Rule指標(biāo)名稱查看該指標(biāo)的數(shù)據(jù)詳情。
方式二:從Prometheus控制臺查看
- 登錄Prometheus控制臺。
- 在左側(cè)導(dǎo)航欄單擊監(jiān)控列表,進(jìn)入可觀測監(jiān)控 Prometheus 版的實(shí)例列表頁面。
- 在頁面左上角選擇目標(biāo)地域,然后單擊需要查看Recording Rule指標(biāo)的Prometheus實(shí)例名稱。
- 在左側(cè)導(dǎo)航欄的服務(wù)發(fā)現(xiàn)頁面,選擇指標(biāo)頁簽,然后您可以在搜索框中輸入對應(yīng)的Recording Rule指標(biāo)名稱來查看該指標(biāo)的詳細(xì)信息。
Recording Rule支持Remote Write
可觀測監(jiān)控 Prometheus 版的Recording Rule同開源Prometheus一樣,支持Remote Write功能。
- 登錄Prometheus控制臺。
- 在左側(cè)導(dǎo)航欄單擊監(jiān)控列表,進(jìn)入可觀測監(jiān)控 Prometheus 版的實(shí)例列表頁面。
- 在頁面左上角選擇目標(biāo)地域,然后單擊需要配置Remote Write的Prometheus實(shí)例名稱。
- 在左側(cè)導(dǎo)航欄的設(shè)置頁面單擊設(shè)置頁簽,然后單擊編輯Prometheus.yaml。
- 在彈出的編輯Prometheus.yaml對話框中配置Remote Write。說明 配置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ù)專家獲取。