通過PrometheusRule創(chuàng)建告警規(guī)則
本文介紹如何在可觀測監(jiān)控 Prometheus 版中使用PrometheusRule創(chuàng)建告警規(guī)則。
背景信息
PrometheusRule是Prometheus Operator中用于控制告警的CRD(Custom Resource Definition)。 一個PrometheusRule定義了一組Prometheus的Alerting Rules或者Recording Rules。在一個安裝了Prometheus Operator的Kubernetes中,使用者可以通過創(chuàng)建PrometheusRule來創(chuàng)建告警。作為Monitoring as Code的一種實現(xiàn)方式,非常適合用于搭建GitOps類的研發(fā)運維體系。
在可觀測監(jiān)控 Prometheus 版中,您也可以使用PrometheusRule來創(chuàng)建告警規(guī)則。可觀測監(jiān)控 Prometheus 版不僅提供了交互更好的可視化頁面來管理Prometheus實例的告警,也兼容了Prometheus Operator中通過PrometheusRule創(chuàng)建告警的使用方式。
使用說明
可觀測監(jiān)控 Prometheus 版支持以下兩種方式使用PrometheusRule來創(chuàng)建和控制告警規(guī)則。
方式一:通過將PrometheusRule導(dǎo)入為告警規(guī)則模板可以可視化完成告警的批量創(chuàng)建和更新,這種方式適合習(xí)慣使用白屏化操作的用戶,您可以在阿里云控制臺高效的完成大批量告警規(guī)則的管理。具體操作,請參見方式一:將PrometheusRule導(dǎo)入到告警規(guī)則模板。
方式二:通過打開可觀測監(jiān)控 Prometheus 版插件自動同步PrometheusRule規(guī)則,可以保持開源的告警配置使用方式。這種方式適合習(xí)慣開源使用方式的用戶,方便打造Monitoring As Code的運維體系。具體操作,請參見方式二:開啟插件同步PrometheusRule告警規(guī)則。
默認(rèn)情況下,通過可觀測監(jiān)控 Prometheus 版不會讀取創(chuàng)建在Kubernetes中的PrometheusRule規(guī)則,因此您可以根據(jù)業(yè)務(wù)需求使用任意一種方式通過PrometheusRule規(guī)則來創(chuàng)建和控制告警。
方式一:將PrometheusRule導(dǎo)入到告警規(guī)則模板
優(yōu)勢
可觀測監(jiān)控 Prometheus 版提供了Prometheus告警規(guī)則模板功能來解決多區(qū)域多集群的告警配置效率問題。一次配置Prometheus告警規(guī)則模板即可實現(xiàn)在全球范圍內(nèi)多次應(yīng)用到不同的集群,極大降低了告警的配置工作量,提高了配置效率。
可觀測監(jiān)控 Prometheus 版提供了將PrometheusRule批量導(dǎo)入為告警模板的能力,通過一次性將告警規(guī)則導(dǎo)入到阿里云控制臺,避免多集群重復(fù)多次創(chuàng)建PrometheusRule。
操作步驟
在左側(cè)導(dǎo)航欄單擊告警規(guī)則模板。
在Prometheus告警規(guī)則模板頁面左下角,單擊批量導(dǎo)入模板。
在導(dǎo)入對話框,將PrometheusRule中的spec內(nèi)容粘貼至當(dāng)前輸入框,然后單擊導(dǎo)入告警規(guī)則模板。
示例:下圖中圖標(biāo)①區(qū)域為當(dāng)前示例PrometheusRule中的spec內(nèi)容:
您需要將上述的spec內(nèi)容(圖標(biāo)①)粘貼至導(dǎo)入對話框中,然后單擊導(dǎo)入告警規(guī)則模板,如下圖所示:
導(dǎo)入成功后,勾選導(dǎo)入的告警規(guī)則模板,在Prometheus告警規(guī)則模板頁面左下角單擊批量應(yīng)用模板,即可批量應(yīng)用模板到Prometheus告警規(guī)則。
方式二:開啟可觀測監(jiān)控 Prometheus 版插件同步PrometheusRule告警規(guī)則
應(yīng)用場景
若您使用了諸如GitOps等系統(tǒng),且仍然希望可以通過Monitoring As Code的方式來配置告警規(guī)則。
對于已接入可觀測監(jiān)控 Prometheus 版的ACK集群(ACS不適用),且您希望通過PrometheusRule創(chuàng)建告警。
操作步驟
登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇集群。
在集群列表頁面,單擊目標(biāo)集群操作列下的應(yīng)用管理。
在無狀態(tài)頁面,選擇命名空間為arms-prom,找到名稱列中以arms-prom開頭的Deployment,例如arms-prom-ack-arms-prometheus(圖標(biāo)①),然后單擊右側(cè)操作列下的編輯(圖標(biāo)②)。
在編輯頁面的生命周期區(qū)域,配置啟動執(zhí)行的參數(shù),即在參數(shù)文本框中添加
--alert=true
(圖標(biāo)①),然后在編輯頁面右上角,單擊更新。可觀測監(jiān)控 Prometheus 版插件完成更新后,等待3~5分鐘,即可在可觀測監(jiān)控 Prometheus 版控制臺的告警規(guī)則列表頁面查看到所有告警的狀態(tài)顯示為啟動。
當(dāng)您的集群開啟了PrometheusRule自動同步之后,不建議在可觀測監(jiān)控 Prometheus 版控制臺修改同步上來的告警規(guī)則。因為這樣做往往會導(dǎo)致非預(yù)期的行為發(fā)生,比如修改名稱或者刪除告警規(guī)則這些操作都是無法在控制臺實現(xiàn)的。除此之外當(dāng)您在可觀測監(jiān)控 Prometheus 版控制臺修改這些規(guī)則也會導(dǎo)致Monitoring As Code的機制遭到破壞(即被修改的規(guī)則無法同步到外部諸如GitOps等運維系統(tǒng))。
后續(xù)操作
當(dāng)您打開可觀測監(jiān)控 Prometheus 版插件的alert開關(guān)后,可觀測監(jiān)控 Prometheus 版插件會在arms-prom命名空間下創(chuàng)建一組內(nèi)置的告警規(guī)則,如下圖所示。關(guān)于這些自動創(chuàng)建的內(nèi)置告警規(guī)則的具體說明,請參見Prometheus告警規(guī)則。
如果您不想使用這些告警規(guī)則,可以通過修改defaultAlert
參數(shù)關(guān)閉可觀測監(jiān)控 Prometheus 版插件內(nèi)置的告警規(guī)則。具體操作步驟如下:
控制默認(rèn)報警自動創(chuàng)建的參數(shù)為defaultAlert
,當(dāng)其取值為true
時表示自動創(chuàng)建默認(rèn)的報警;當(dāng)其取值為false
時表示不自動創(chuàng)建默認(rèn)的報警。
將可觀測監(jiān)控 Prometheus 版插件的
defaultAlert
設(shè)置為false
。登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇集群。
在集群列表頁面,單擊目標(biāo)集群操作列下的應(yīng)用管理。
無狀態(tài)頁面,選擇命名空間為arms-prom,找到名稱列中以arms-prom開頭的Deployment,然后單擊右側(cè)操作列下的編輯。
在編輯頁面的生命周期區(qū)域,配置啟動執(zhí)行的參數(shù),即在參數(shù)文本框中添加
--defaultAlert=false
,然后在編輯頁面右上角,單擊更新。
說明可觀測監(jiān)控 Prometheus 版插件完成更新后,等待3~5分鐘,可觀測監(jiān)控 Prometheus 版將不再為該集群創(chuàng)建默認(rèn)告警。
可選:刪除默認(rèn)告警規(guī)則。
在左側(cè)導(dǎo)航欄單擊實例列表,進入可觀測監(jiān)控 Prometheus 版的實例列表頁面。
單擊目標(biāo)K8s集群的Prometheus實例名稱。
在左側(cè)導(dǎo)航欄,單擊告警規(guī)則。在Prometheus告警規(guī)則頁面,單擊需要刪除的告警規(guī)則操作列下的刪除,并在彈出的對話框中單擊確認(rèn)。