天天看點

SLS新版告警-多資料源協同

前言

阿裡雲SLS作為一站式的可觀測性平台,使用者将日志資料,時序資料,Trace資料都存儲在SLS;SLS提供統一的查詢分析語言,支援完整的SQL 92文法;SLS新版告警完整支援SLS的查詢分析文法,基于此,可以配置常見的如關鍵詞告警,同環比告警,網址錯誤監控,流量急跌或暴漲監控;在新版告警中,可以對多個資料源進行監控,并且支援多資料源的間的協同監控。支援常見的左聯,右聯,内聯,外聯,左斥,右斥等集合操作,可以使用在比如白名單,黑名單監控場景。

告警監控

SLS新版告警-多資料源協同

告警監控可以對多個資料源進行監控:通過選擇不同的資料源類型(日志存儲,時序存儲,資源資料),使用不同的查詢分析語句,可以得到不同的查詢結果,每個查詢結果可以看出一個結果集,對多個結果集之間可以進行集合操作,包括左聯,右聯,全聯,内聯,外聯,左斥,右斥等,也是本文介紹的重點。

在SLS新版告警的查詢統計時,最多可以設定三個查詢,兩個之間可以進行集合操作。

SLS新版告警-多資料源協同

監控系統對于監控規則中的分組評估和觸發條件都是基于集合操作的結果進行評估,并非針對某一個查詢結果進行評估。

設定單個查詢時,集合操作結果即為單個查詢的結果,可以了解為對查詢結果進行評估。

集合操作類型及其使用場景

SLS集合操作主要包括笛卡爾積,不合并,拼接,左聯,右聯,全聯,左斥,右斥等操作,接下來會對每個集合操作進行簡單的介紹,并介紹其使用場景。

以下的介紹場景皆為兩個操作結果之間的集合操作,當監控中有三個查詢時,會先對前兩個結果進行集合操作,得到的結果在跟第三個結果進行集合操作

笛卡爾積

SLS新版告警-多資料源協同

笛卡爾積在數學中是一種集合運算,在告警監控中,兩個查詢結果,第一個查詢結果為m條,第二個查詢結果為n條,進行笛卡爾積集合操作後的結果将有m*n條資料;監控規則也将會對這m*n條資料進行分組評估和觸發條件評估。

場景

假設同時對oss通路日志和nginx通路日志進行監控,每15分鐘統計一次oss的5xx錯誤和slb的5xxx錯誤,當錯誤總數達到1000時進行告警。

如圖,對于兩條查詢可以使用笛卡爾積進行集合操作,然後在觸發條件中,可以對兩個查詢後的結果進行聯合判斷。

SLS新版告警-多資料源協同

集合操作結果示意圖,藍色表示集合操作後的結果

SLS新版告警-多資料源協同

不合并

SLS新版告警-多資料源協同

不合并表示集合操作結果隻包含前一個查詢結果,舍棄後一個查詢結果,注意,這裡隻是在規則進行評估時舍棄後一個查詢結果,也就是分組評估和觸發條件不會用到後一個查詢結果,但是後一個查詢結果還是可以在内容模闆變量中被引用。

監控nginx通路日志時,每15分鐘的5xx錯誤次數大于10次時觸發告警,并且在告警内容中列出具體出錯的域名資訊;這裡可以把需求分為兩部分,第一部分是評估要用到的條件,5xx錯誤次數大于10,第二部分是告警内容列舉具體錯誤的域名資訊;可以将第一部分用錯誤總次數作為查詢條件,第二個查詢使用域名錯誤作為查詢條件。

下面的例子這裡觸發條件設定為nginx_err_cnt > 10,在觸發條件中不可以引用host和err_cnt,因為在評估時不會對後一個查詢結果進行評估。

SLS新版告警-多資料源協同

如果想要引用第二個查詢結果,可以在

内容模闆

中使用${results[1].raw_results}來引用第二個查詢的結果。

集合操作示意圖,藍色會集合操作結果

SLS新版告警-多資料源協同

拼接

SLS新版告警-多資料源協同

拼接是直接将後一個操作結果直接合并到前一個操作結果,按照字段進行對齊,對于重複的資料不進行排重處理。

假設有兩個logstore分别用來存儲北京和上海的nginx通路日志,需要對兩地的nginx 5xx同時進行監控,因為兩個logstore的結構一緻,直接将兩個5xx的錯誤結果進行拼接,可以實作同時對兩地nginx的錯誤進行監控。

如下例子中,第一個查詢是北京的nginx通路日志,第二個查詢是上海的nginx通路日志,這裡直接設定觸發條件err_cnt > 10,可以對北京和上海的nginx通路日志同時進行監控。

SLS新版告警-多資料源協同

集合操作示意圖

SLS新版告警-多資料源協同

内聯

SLS新版告警-多資料源協同

内聯類似資料庫中的inner join操作,對于兩個查詢結果,會根據連接配接的字段,找出兩個查詢結果中的公共部分。

比如在oss通路日志的監控中,可以對oss通路的5xx錯誤數進行監控,在資源表中可以存儲bucket對應的環境類型,假如我們隻需要對資源表中對應的bucket進行監控,可以使用内聯操作,内聯的條件是第一個結果的bucket等于第二個結果的bucket。

SLS新版告警-多資料源協同

這裡用到了資源資料,我們可以在告警中心-資源資料中,自定義一個資源資料,可以定義其字段和類型,并且批量添加資料

SLS新版告警-多資料源協同

集合操作示意圖,藍色表為集合操作結果

SLS新版告警-多資料源協同

左聯

SLS新版告警-多資料源協同

左聯類似資料的left join,一般用在前一個查詢結果資料字段不足,用後一個查詢結果來進行補充的場景。

在oss的監控中,把oss的bucket的描述資訊存在資源資料中,包括字段bucket和desc;oss的錯誤監控查詢分析結果包含bucket和err_cnt,使用左聯後,連接配接條件是bucket相同,集合操作結果将包含bucket, err_cnt, desc(如果資源表中沒有出現的bucket,集合操作結果也不會有desc字段)。

SLS新版告警-多資料源協同

集合操作示意圖,藍色的為集合操作結果。

SLS新版告警-多資料源協同

注意,上述觸發條件選擇的是會有資料,這裡如果想對藍色結果進行引用可以使用内容模闆變量${fire_results},表示所有的滿足觸發條件的結果。

右聯

SLS新版告警-多資料源協同

右聯為左聯的相反操作,這裡不再贅述,左聯兩個操作結果調換位置,即為右聯。

全聯

SLS新版告警-多資料源協同

全聯表示集合A和集合B互相補充資訊。

比如在OSS 5xx錯誤監控中,在5xx錯誤次數監控的同時,也希望可以看到5xx通路的uv,可以在配置監控規則時使用全聯操作,連接配接條件是bucket相同。

SLS新版告警-多資料源協同

集合操作示意圖:

SLS新版告警-多資料源協同

左斥

SLS新版告警-多資料源協同

左斥可以了解為前一個查詢的結果,排除第二個查詢的結果,常用在一種黑名單的操作中,左邊的結果,第二個查詢結果作為黑名單,第一個查詢結果作為評估結果。

比如在OSS 5xx錯誤監控中,某些bucket是測試bucket,并不需要對齊進行監控,這時可以在資源資料中增加bucket黑名單,将測試bucket填進去,使用左斥操作即可實作黑名單效果。

SLS新版告警-多資料源協同

集合操作示意圖:藍色表示集合操作結果

SLS新版告警-多資料源協同

右斥

SLS新版告警-多資料源協同

右斥是左斥的相反操作,在左斥中将兩個操作結果互換位置,即為右斥。

注意事項

  • 時序存儲進行查詢時,使用promql_query(string)、promql_query_range(string, string)函數查詢時,傳回的字段包括metric, labels, time, value四個字段,其中labels為map類型,在配置監控規則時,會将labels展開,例如labels值為{"host":"xxxx", "ip": "192.168.1.102"},metric值為cpu_util,則查詢結果字段有metric, labels, time, value, host, ip 六個字段(該規則隻适用用監控規則配置時)。
  • 使用查詢分析語句時,單個查詢和分析的結果超過1000條時,隻會保留前1000條資料,用于集合操作,當存在三個查詢和分析操作且集合操作未選擇不合并時,隻選取每個查詢和分析結果中的前100條資料。
  • 集合操作中,會預設對每個查詢結果的字段加上$x.字首,比如第一個查詢結果的字段都會加上$0.字首,第二個查詢結果的字段都會加上$1.字首, x可以取值0,1,2。以下情況可以在觸發條件和分組評估字段中省略字首:
    • 第一個查詢的所有字段都可以省略字首$0.。
    • 隻有一個查詢時,可以省略字段字首$0.。
    • 有兩個查詢時,兩個查詢結果中的字段完全不同時,兩個查詢結果字段分别可以省略字首$0.和$1.,如果三個查詢中的字段也完全不同,三個查詢結果中的字段可以省略字首。
    • 有兩個查詢時,兩個查詢結果的字段有重複,且重複字段用于集合操作(左聯,右聯,内聯,外聯,左斥,右斥)的連接配接字段,且連接配接運算符是相等時,可以省略字段重複字段名;如果連接配接運算符不是相等時,第二個查詢結果中的重複字段保留字首。
    • 當有三個查詢時,會先計算前兩個查詢的集合操作結果,然後拿這個集合操作結果跟第三個查詢進行集合操作,是否去掉字首按照兩個查詢的方式進行。

參考

  • 多集合操作機制【 連結
  • 評估表達式文法【
  • 建立資源資料【

進一步參考

SLS新版告警-多資料源協同

最後,如果您還想了解更多智能運維前沿資訊,歡迎您報名參加【數智創新行·智能運維專場】。

6月25日|上海·西岸國際人工智能中心

數智創新行上海站·智能運維專場

阿裡雲将帶來雲原生智能運維解決方案,滿足海量事件有效感覺、高效響應,可觀測資料統一分析、故障定位,以及基于AI的異常檢測等需求,助力企業建構自己的運維平台,成為開發、運維人員高效可靠的助手。

掃描海報二維碼或點選下方連結報名, 期待您一起開啟智能運維新時代!

https://www.aliyun.com/page-source//developer/special/osssalon
SLS新版告警-多資料源協同