告警監控規則根據評估表達式的執行結果來判斷是否滿足觸發告警條件,以及評估動态告警嚴重度。您查詢語句的執行結果将作為輸入,集合操作結果的字段作為變量,當評估表達式條件為真且符合連續觸發門檻值配置時,則觸發告警。
本文主要介紹下觸發的條件用法,主要包含以下内容:
- 觸發條件在告警監控的位置
- 如何了解監控目标
- 評估表達式的基本介紹
- 觸發條件的設定
在監控中配置觸發條件

SLS告警是通過定時排程的機制,來監控SLS中日志,時序和Tracing的資料;如果滿足設定的觸發條件則會生成一條或多條告警(分組情況下),後續的告警管理會對告警進行降噪處理,然後通過行動政策發送給通知管道或者Webhook。
接下來将對告警監控流程中的觸發條件的使用方法來進行介紹。
了解監控目标
這裡的監控目标包含日志,時序,資源資料;在告警配置中的具體表現是,通過設定1個到3個查詢(使用
SLS查詢分析)得到對應的中間查詢結果,如下圖(指定了3個查詢,會有3個對應的中間查詢結果);然後通過
集合操作得到最終的一個集合操作結果(一般設定為1個查詢,1個查詢的結果就是集合操作結果)。這裡的集合操作結果就是監控目标。

最終的監控目标(集合操作結果)可以當做一個表格來看待; 如下表示集合操作結果有2列,4條資料。接下來這張集合操作結果将作為例子來示範觸發條件的用法。

評估表達式文法
SLS告警監控中的表達式,主要支援基礎運算符(包括加減乘除模等),比較運算符,邏輯運算符和一些數值,字元串,布爾常量等,具體文法可以參考
。比如可以設定pv > 40作為評估表達式(注意不能隻寫單個變量作為表達式,比如隻寫pv,不是一個合法的評估表達式),下面是一些基本的文法

觸發條件
觸發條件是指SLS告警監控在評估時,如果集合操作結果滿足設定的觸發條件,就表示評估通過,會生成一條告警(觸發門檻值後面會有文章詳細介紹)。
假如把上述的pv > 40作為觸發條件是否可以呢?答案是否定的,上述集合操作結果有4條資料,其中2條滿足pv > 40,這種情況下要不要觸發告警,其實是資訊量是不夠的,到底是1條滿足就告警呢,還是N條滿足才告警呢?是以新版告警中我們增加了對滿足評估表達式的結果條數的設定,這樣可以更精細的控制觸發條件。觸發條件主要分為四種類型:
- 有資料:代表集合操作結果有資料,至少有1條結果,就會滿足觸發條件,比如上述結合查詢結果有4條資料,選擇“有資料”,是滿足觸發條件的
- 有特定條資料:表示對集合操作結果的條數做評估,比如例子中結果有4條,這裡可以對結果中的條數進行比較判斷,支援的比較運算符有大于,小于,區間判斷等,比如例子中有4條資料,這裡選 “有特定條資料 > 10 條”是不滿足的,因為4 < 10。
- 有資料比對:例子中的4條結果中,隻要有任意1條資料滿足 pv > 1000,就會認為滿足觸發條件,比如例子中4條資料的pv都小于1000,這裡選“有資料比對 pv > 1000”,是不滿足的
- 有特定條資料比對:是四種觸發條件中最複雜的情況,表示滿足評估表達式的條數,滿足條數條件才會觸發告警;這裡有兩個角度:
-
- 某條資料是否滿足評估表達式,比如例子中4條資料第一條不滿足 pv > 1000
- 滿足評估表達式的的總條數是多少,比如例子中4條資料滿足 pv > 1000的條數是0
- 是以,如果選擇“有特定條資料比對 > 3 條 pv > 1000”的時候,例子是不滿足觸發條件的
其中,第四種觸發條件的設定是最完整的,第四種觸發條件包含資料評估和滿足評估表達式的資料條數評估,在選擇觸發條件時隻能選擇上述四種觸發條件中的一種,可以根據實際監控需求,配置最簡單的觸發條件。
注意:對于有資料比對和有特定條資料比對都需要配置評估表達式。
典型場景
在配置告警監控中,經常會有一種需求,如果日志中出現了error,就告警;或者error在1分鐘内出現5次就告警;配置經常使用類似如下查詢語句
集合操作結果(對于隻有一個查詢的配置,查詢結果就是集合操作結果)示例如下:
這種情況下應該選擇哪種觸發條件,因為需求是error出現了5次就告警,經常會誤解為需要選有特定條資料,應該選有特定條資料 > 5 條,這樣是錯誤的;原因如下:
因為查詢語句中使用了count(1) as cnt這種聚合查詢,查詢結果隻會有1條資料,資料是cnt:2;是以如果使用有特定條資料 > 5 條來判斷,因為結果條數隻有1條,永遠不會滿足條件。
正确的設定應該選擇:有資料比對,在評估表達式中填 cnt > 5, 因為結果隻有1條資料,這條資料滿足cnt > 5,就會觸發告警。
總結
上文主要介紹了觸發條件在告警監控的用法,主要用在監控評估階段,用來判斷集合操作結果是否需要觸發告警;主要包含了資料評估和滿足評估表達式的資料條數評估。
注意
- 上文中沒有涉及分組評估,以上的觸發條件的設定都是在分組評估的基礎上進行,即集合操作結果會先根據分組字段進行分組,然後對每個分組上的資料,進行觸發條件的判斷。不分組,預設是一個分組。 分組評估參考 。
- 該觸發條件的配置出來用在監控評估中,還可以用在動态告警嚴重度的設定上, 告警嚴重度參考
參考
- 什麼是日志服務告警【 連結 】
- SLS告警監控概述【
- SLS告警評估表達式用法【
- SLS新版告警使用評估表達式設定觸發條件【
進一步參考
- SLS(日志服務)雲原生觀測分析平台: https://www.aliyun.com/product/sls
- SLS新版告警文檔首頁: https://help.aliyun.com/document_detail/207609.html
- 歡迎掃群加入阿裡雲-日志服務(SLS)技術交流(集團同學請直接搜尋群号11702236加入), 獲得第一手資料與支援
- 後續系列直播與教育訓練視訊會同步到B站,敬請留意

最後,如果您還想了解更多智能運維前沿資訊,歡迎您報名參加【數智創新行·智能運維專場】。
6月25日|上海·西岸國際人工智能中心
數智創新行上海站·智能運維專場
阿裡雲将帶來雲原生智能運維解決方案,滿足海量事件有效感覺、高效響應,可觀測資料統一分析、故障定位,以及基于AI的異常檢測等需求,助力企業建構自己的運維平台,成為開發、運維人員高效可靠的助手。
掃描海報二維碼或點選下方連結報名, 期待您一起開啟智能運維新時代!
https://www.aliyun.com/page-source//developer/special/osssalon