ES 日誌告警可以通過對日誌進行查詢分析,來及時發現異常日誌,並觸發告警。
首先可以選擇ES數據源,然後配置查詢條件和告警條件,下面針對每個數字指向的功能,進行詳細說明
1 選擇索引
支持多種配置方式
- 指定單個索引 gb 在 gb 索引中搜索所有的文檔
- 指定多個索引 gb,us 在 gb 和 us 索引中搜索所有的文檔
- 指定索引前綴 g*,u* 在任何以 g 或者 u 開頭的索引中搜索所有的文檔
2 設置過濾條件
目前支持的是 query string 語法,詳細的語法可以參考 ES 文檔
3 設置日誌字段
點擊可以選擇日誌中的日期字段
4 設置查詢日誌的時間範圍
如果是 5 分鐘,表示在做告警查詢時,會查詢過去 5 分鐘內的日誌
5 數值提取
對日誌進行統計分析的函數,比如 count、sum、avg、min、max 等
6 Group By
對日誌進行分組,比如按照 host 字段進行分組,進行 count 統計,查詢到的結果會按照 host 字段進行分組
7 告警條件
統計分析得到的數值,會賦值給告警條件中的 A、B、C 等變量,然後根據這些變量進行告警條件判斷,比如 $A > 10 表示日誌數量大於10條時觸發告警
8 高級配置
在有的場景,日誌會出現延遲,如果延遲3分鐘,查詢最近3分鐘的數據,會查不到數據,這時,可以在高級配置中,設置延遲查詢時間,比如延遲180s,表示查詢查詢的時候,把終止時間設置為當前時間減去180s
使用範例
例子1:HTTP CODE 為4xx的告警條件
說明:在每10分鐘的時間段內,檢查日誌中的 message 字段。如果 4xx 的日誌數量超過 2 次,產生告警,並且按照 host.hostname 字段進行分組統計,配置方式如下
例子2:接口耗時大於1秒時觸發告警
說明:根據 http_method 分組統計某個請求接口耗時大於1秒,配置方式如下
例子3:request_time 大於1900ms,匹配日誌超過10條時觸發告警
說明:在每2分鐘的時間段內,篩選出 request_time 大於1900ms 的日誌。按 request_uri 維度進行分組,檢查日誌數量是否超過10條,配置方式如下
在配置完成所需的數據字段後,還可以通過數據預覽按鈕來預覽查詢結果。