接入 CLS 數據源
在創建數據源連接時,主要填寫以下參數:
地域(Region)可以在騰訊雲 CLS 的日誌主題中找到,地域需要和騰訊雲日誌主題所在地域一致;如下圖所示
AK ID 和 AKS:騰訊雲用戶密鑰管理查看創建。
CLS 日誌查詢
日誌原文
展示騰訊雲 CLS 接入源數據,未經過原文處理。
統計圖表
統計表是將查詢條件結果進行展示,展示方式分為表格圖和時序圖兩種。
表格圖
根據舉例的查詢條件語句*|SELECT status, count(*) as pv GROUP BY status。將查詢統計 status 欄位,並將統計計算結果命名為 pv ,將結果 pv 以 status 透過表格分組展示。
語句簡析 | select …: |管道符左側為檢索條件,select …語句檢索 SQL status: 將 status 欄位結果展示 count() AS pv: 將 status 統計 pv 命名。 GROUP BY status: 將 status 結果分組展示。
可參考 語法規則學習瞭解
時序圖
將騰訊雲 CLS 日誌查詢結果提取 value 值進行展示,並將篩選條件以 tag 的方式展示在指標欄位;以下為部分查詢語句供學習參考。
常用查詢語句語法
- 查詢 GET 請求且狀態碼大於400的日誌:
method:GET AND status>400
- 查詢 level 為 ERROR 或 WARNING 的日誌:
level:(ERROR OR WARNING)
- 查詢非 INFO 級別的日誌:
NOT level:INFO
- 查詢不存在 remote_user 欄位的日誌:
not remote_user:*
- 查詢存在 remote_user 欄位的日誌:
remote_user:*
- 查詢 host 欄位值不為 123 的日誌:
not host:123.*
場景一:按分鐘統計 GET 請求且狀態碼大於400的日誌
method:GET AND status:>400 | select histogram(__TIMESTAMP__, interval 1 minute) as analytic_time_minute, count(*) as errorCount group by analytic_time_minute limit 1000
場景二:查詢 request_method 欄位值為 GE 開頭,且 client_ip 欄位值為 116.178.232.,並以 host, method, request_uri 欄位分組統計*
method:GE* and remote_addr:116.178.232.* | SELECT http_host AS host, method AS method, request_uri AS url, count(*) AS count GROUP BY host, method, url
場景三:查詢成功請求且請求耗時小於1秒,並包含 flashcat 的日誌,並以 host, method, request_uri, status, request_uri 欄位分組統計
flashcat AND read_request_time < 1 AND (status >= 200 AND status <= 299) | SELECT host AS host, request_method AS method, request_uri AS url, status as st, read_request_time as rqt, count(*) AS COUNT GROUP BY host, method, url, st, rqt
CLS 日誌告警
在告警規則選擇 日誌數據源,配置查詢語句和提取數值 ValueKey ,並在簡單模式設置時間範圍內 ValueKey 閾值,進行規則觸發。
配置場景1:統計代理日誌狀態碼為 200 和 301 的日誌數量,查詢結果大於10且小於15 則觸發告警。
查詢語句如上所述: status:403 OR status:402 | SELECT status AS status, count(*) AS count GROUP BY status
,此處為查詢數值結果用於條件判斷,因此判斷條件使用 $A > 10
和 $A < 15
配置場景2:配置不同指標結果判斷,status:200 大於 100,且 status:301 大於 1 則觸發告警
需實現不同查詢值判斷,需填寫兩條不同查詢分析語句提取數值,並對提取數值 $A $B 進行判斷
提示:
-
與 PromQL 類似,如資料標籤不一致,將會將查詢分析語句計算結果作為兩條不同曲線無法比較;此時不需要設置 LabelKey 確保資料曲線計算不受標籤不同影響。
-
當前支援數字判斷相等,無法判斷字串相等;因此過濾字串時需將字串放在查詢語句中。
問題排查
若配置告警後無法正常生效觸發,可以通過 N9E INFO.log 日誌以 rule_eval 關鍵字進行過濾排查;如下為日誌示例。
***正確日誌:***從日誌可以看出 $A $B 都已經獲得對應數值,且表達式結果 true 表示條件已經成立。
錯誤日誌:日誌結果 false 表示條件不成立;另外從日誌結果看到兩次返回 false ,而僅配置一條告警計算條件,可能為資料標籤不一致,將查詢分析語句結果作為兩條不同曲線導致告警計算條件不成立,無法正常