如需統一管理分布在不同地域的多個Prometheus實例的告警規則,那么您可以使用Prometheus告警規則模板功能來實現。本文介紹如何創建和管理Prometheus告警規則模板,確保規則的一致性和效率。
背景信息
對于多個跨地域的Prometheus實例,當需要為這些Prometheus實例創建告警規則時,如果每個Prometheus實例都單獨創建,工作量較大并且難以同步管理。為了解決這個問題,可觀測監控 Prometheus 版提供了告警規則模板功能,可以幫助用戶快速為多個Prometheus實例創建告警規則,并且可以統一管理,降低用戶管理多個Prometheus實例告警規則的成本。
創建Prometheus告警規則模板
登錄ARMS控制臺。
在左側導航欄,選擇 。
在頁面右上角單擊創建Prometheus告警規則模板。
在創建Prometheus告警規則頁面設置以下參數。
您可以選擇通過靜態閾值或自定義PromQL創建Prometheus告警規則模板。
靜態閾值檢查類型提供了系統預設的告警指標,通過選擇已有的告警指標,您可以通過語義化的方式快速創建對應指標項的告警規則。
如果需要對靜態閾值中系統預設指標之外的指標進行監控,您可以使用自定義PromQL檢測類型來創建告警規則。
表 1. 靜態閾值檢查類型
參數
說明
示例
告警規則模板名稱
告警規則模板的名稱。
生產集群-容器CPU使用率告警
告警規則模板描述
非必填。對模板進行描述,可以用于記錄模板的含義、適用場景、備注等。
無
檢測類型
選擇靜態閾值。
靜態閾值
告警分組
選擇告警分組。
Kubernetes負載
告警指標
選擇想要配置告警的指標,每個告警分組對應不同的指標。
容器CPU使用率
告警條件
基于告警指標預置內容設置告警事件產生條件。
當容器CPU使用率
大于
80%時,滿足告警條件。篩選條件
根據告警指標,設置當前配置的告警規則所適用的范圍,即所有符合篩選條件的資源滿足此條告警規則時,均會產生告警事件。
可選篩選條件包括:
遍歷:告警規則適用于當前Prometheus實例下的所有資源。篩選條件默認為遍歷。
等于:選擇該條件后,需繼續輸入具體資源名稱。所創建的告警規則將僅適用于對應資源。不支持同時填寫多個資源。
不等于:選擇該條件后,需繼續輸入具體資源名稱。所創建的告警規則將適用于除該資源之外的其他資源。不支持同時填寫多個資源。
正則匹配:選擇該條件后,按需輸入正則表達式匹配相應的資源名稱。所創建的告警規則將適用于符合該正則表達式的所有資源。
正則不匹配:選擇該條件后,按需輸入正則表達式匹配相應的資源名稱。所創建的告警規則將過濾符合該正則表達式的所有資源。
實例IP:遍歷
持續時間
當告警條件滿足時,直接產生告警事件:任何一個數據點滿足閾值,就會產生告警事件。
當告警條件滿足持續N分鐘時,才產生告警事件:即只有當滿足閾值的時間大于等于N分鐘時,才產生告警事件。
1
告警等級
自定義告警等級。默認告警等級為默認,告警嚴重程度從默認、P4、P3、P2、P1逐級上升。
默認
告警內容
用戶收到的告警信息。您可以使用Go template語法在告警內容中自定義告警參數變量。
命名空間:{{$labels.namespace}} / Pod: {{$labels.pod_name}} / 容器:{{$labels.container}} CPU使用率{{$labels.metrics_params_opt_label_value}} {{$labels.metrics_params_value}}%, 當前值{{ printf "%.2f" $value }}%
高級設置
標簽
設置告警標簽,設置的標簽可用作通知策略匹配規則的選項。
無
注釋
設置告警的注釋。
無
表 2. 自定義PromQL檢測類型
參數
說明
示例
告警規則模板名稱
告警規則模板的名稱。
Pod的CPU使用率大于80%
告警規則模板描述
非必填。對模板進行描述,可以用于記錄模板的含義、適用場景、備注等。
無
檢測類型
設置為自定義PromQL。
自定義PromQL
自定義PromQL語句
使用PromQL語句設置告警規則表達式。
max(container_fs_usage_bytes{pod!="", namespace!="arms-prom",namespace!="monitoring"}) by (pod_name, namespace, device)/max(container_fs_limit_bytes{pod!=""}) by (pod_name,namespace, device) * 100 > 90
持續時間
當告警條件滿足時,直接產生告警事件:任何一個數據點滿足閾值,就會產生告警事件。
當告警條件滿足持續N分鐘時,才產生告警事件:即只有當滿足閾值的時間大于等于N分鐘時,才產生告警事件。
1
告警等級
自定義告警等級。默認告警等級為默認,告警嚴重程度從默認、P4、P3、P2、P1逐級上升。
默認
告警內容
用戶收到的告警信息。您可以使用Go template語法在告警內容中自定義告警參數變量。
命名空間:{{$labels.namespace}}/Pod: {{$labels.pod_name}}/磁盤設備: {{$labels.device}} 使用率超過90%,當前值{{ printf "%.2f" $value }}%
高級設置
標簽
設置告警標簽,設置的標簽可用作通知策略匹配規則的選項。
無
注釋
設置告警的注釋。
無
應用模板
創建Prometheus告警模板后,您可以通過應用模板來為Prometheus實例創建告警規則,或者根據現有模板更新Prometheus實例的告警規則。
在控制臺的Prometheus告警規則模板頁面,單擊需要應用的告警規則模板右側的應用模板。
在應用模板頁面的Prometheus實例選擇模式頁簽,選擇Prometheus實例,然后單擊確定。
說明您可以通過Prometheus實例名稱、地域和Prometheus實例類型篩選需要使用該告警模板的Prometheus實例。
在彈出的提示框中選擇是否更新已創建的告警規則,然后單擊確定。
未選中更新已經創建的告警規則:如果選中的Prometheus實例已經存在通過當前告警模板創建的告警規則,那么在創建告警規則時將會提示已經使用此模板創建過告警規則,不進行更新,此時告警規則將不會被更新。
選中更新已經創建的告警規則:如果選中的Prometheus實例已經存在通過當前告警模板創建的告警規則,那么此時會根據最新的告警模板內容更新Prometheus告警規則。
重要如果對應的告警規則單獨修改過,并且保留了告警規則與模板的聯系,那么單獨修改的內容會將被告警規則模板覆蓋而丟失。
刪除模板
當Prometheus告警模板不需要使用時,可以刪除Prometheus告警模板。刪除模板時,您可以按需選擇是否保留由此告警模板創建的告警規則。
在控制臺的Prometheus告警規則模板頁面,單擊目標告警規則模板右側的刪除。
在彈出的提示對話框中選擇是否同時刪除從模板創建的告警規則,然后單擊確認。
選中同時刪除從模板創建的告警規則:將會刪除與模板相關聯的Prometheus告警規則。如果通過模板創建的Prometheus告警規則被手動編輯過,并且保存時選擇了不保留模板與規則的映射關系,則對應規則不會被刪除。
為選中同時刪除從模板創建的告警規則:通過模板創建的Prometheus告警規則將會保留。
查看通過模板創建的告警規則
您可以查看并批量管理通過模板創建的告警規則。
在控制臺的Prometheus告警規則模板頁面,單擊目標告警規則模板右側的查看目標創建規則。
在從模板創建的告警規則頁面批量管理告警規則。
批量啟動告警:選中需要啟動的告警規則,然后單擊批量啟動告警。
批量停止告警:選中需要停止的告警規則,然后單擊批量停止告警。
批量刪除告警:選中需要刪除的告警規則,然后單擊批量刪除告警。
注意事項
編輯通過Prometheus告警規則模板創建的Prometheus告警規則后,在保存時需要選擇是否保留模板與規則的映射關系。
保留此告警規則與告警規則模板的映射關系:保留映射關系后,如果在應用對應告警規則模板時選擇了當前規則對應的Prometheus實例,并且選擇了強制更新時,本次編輯內容可能會丟失。
解除此告警規則與告警規則模板的映射關系:解除映射關系后,此告警規則會被視為獨立規則。建議修改告警規則名稱,否則在使用對應的告警規則模板再次應用到該Prometheus實例時,會因為告警規則名稱重復而導致創建失敗。