在新版告警中,我們可以使用查詢分析語句來進行日志查詢,并對結果集設定告警。其中,當我們希望對查詢結果進行進一步的分組時,可以使用我們的分組評估功能。
基本概念
分組評估是告警監控規則中的一個參數。當告警監控系統對查詢和分析結果進行計算時,可基于特定字段進行分組,每個分組單獨評估觸發條件并觸發告警。即您可以使用一條告警監控規則同時監控多個目标,并對每個分組進行獨立的告警管理和事件管理。
例如,我們的在時序庫中存儲了主機和 cpu 使用率的資訊,通過查詢傳回一個包含 IP 和 CPU 字段的結果集,如下圖:
這時候我們設定告警的評估條件為 CPU > 80, 那麼在任何一台主機的 cpu > 80 的時候,都會觸發告警,若隻是想要這樣的效果,那麼到這裡就可以了。
但這時候我們無法對不同的 ip 做不同的處理,如果想要更進一步,例如由于主機的歸屬不同,告警的時候想要通知不同的接受人,那麼就需要進行分組評估了。對 ip 進行分組之後。告警的評估條件會對每個分組進行單獨評估,最後根據評估結果進行告警。同時,分組的字段會自動加入 label 中,提供給之後的行動政策作為判斷條件。
簡單來說,如果我們不使用分組評估功能,而想要根據查詢結果的某個字段進行分組,并分别通過不同管道告警,那麼隻能通過在查詢語句中添加 group 語句,并建立多個告警來實作了。
使用場景示例:
CPU使用率
多個伺服器的名額資料存儲在一個時序庫中,但希望每個伺服器的CPU使用率(cpu_util)超過95%時,日志服務可以分開發送每個伺服器的告警資訊。針對此需求,您可以在建立告警監控規則時設定分組評估。
在時序庫中,選擇我們要查詢的名額 cpu_util,這時會自動幫我們填入對應的查詢語句
* | select promql_query_range('cpu_util') from metrics limit 1000
點選“另存為告警”按鈕
這時會打開建立告警界面,并會自動将剛才的查詢語句引入
點選語句輸入框,可以檢視詳情
可以看到項目,名額庫等詳細資訊,并可以對查詢語句進行修改,點選預覽可以檢視資料圖表
傳回剛才的界面,設定好告警觸發的條件為“有資料比對” value > 95,這裡 value 即是指 cpu_util 的值
預設情況下,使用時序庫時,分組評估會自動選擇“标簽自動”選項,在該選項下,會自動對時序名額進行分組。
如果選擇不分組,那麼在目前狀況下,任意一台或者多台主機的 cpu 大于 95 都會觸發一次告警。
如果我們選擇标簽自定義,并選擇 ip 字段,那麼每次評估有一台主機滿足條件會觸發一次告警,有多台同時滿足的話,就會觸發多條告警。如果想要給不同的主機設定不同的告警接收人,需要配合行動政策進行設定。
在行動政策編輯時,可以指定條件和行動組,如下圖,
如之前所說,用于分組評估的字段會被加到标簽中,是以這裡就指定了 ip 作為條件,并指定對應的接收人。将行動政策儲存之後,在告警編輯頁面進行選擇就可以完成全部的告警設定。
監控OSS通路日志
監控OSS通路日志時,希望每分鐘發生500錯誤超過1000次的Bucket可以分開告警。針對此需求,您可以在建立告警監控規則時設定分組評估。
在查詢框中輸入 http_status=500 可以查詢所有 http_status 為 500 的日志記錄。
進一步将語句改為
http_status=500 | select bucket,count(1) as pv group by bucket order by pv desc
可以看到各個 bucket 的記錄數。
我們将條件設到 pv > 60 得到一條結果。點選右上角“另存為告警”
這裡我們将分組評估設定為 bucket 字段,同時将觸發條件設定為“有資料”
這樣就完成了告警的設定。如果想要對不同的 bucket 做不同的告警處理,可以參考 cpu 的場景在行動政策中進行設定。