夜莺-Nightingale
夜莺V6
项目介绍 架构介绍
快速开始
黄埔营
安装部署
升级
采集器
使用手册
API
数据库表结构
FAQ
开源生态
Prometheus
版权声明
第1章:天降奇兵
第2章:探索PromQL
第3章:Prometheus告警处理
第4章:Exporter详解
第5章:数据与可视化
第6章:集群与高可用
第7章:Prometheus服务发现
第8章:监控Kubernetes
第9章:Prometheus Operator
参考资料

接入 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 的方式展示在指標欄位;以下為部分查詢語句供學習參考。

常用查詢語句語法

  1. 查詢 GET 請求且狀態碼大於400的日誌:method:GET AND status>400
  2. 查詢 level 為 ERROR 或 WARNING 的日誌:level:(ERROR OR WARNING)
  3. 查詢非 INFO 級別的日誌:NOT level:INFO
  4. 查詢不存在 remote_user 欄位的日誌:not remote_user:*
  5. 查詢存在 remote_user 欄位的日誌:remote_user:*
  6. 查詢 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 ,而僅配置一條告警計算條件,可能為資料標籤不一致,將查詢分析語句結果作為兩條不同曲線導致告警計算條件不成立,無法正常

开源版
Flashcat
Flashduty