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

連接 SLS 數據源

創建數據源連接時,需要填寫的主要參數包括:

接入域名 可以在阿里雲 SLS 的 Project 中查詢。如果 FlashCat 部署的宿主機與阿里雲 SLS 位於同一個區域,建議使用內網域名。如果 FlashCat 部署宿主機不在阿里雲環境中,建議使用外網域名。若 FlashCat 部署在私有雲環境中,則需要填寫出網代理地址以訪問外網域名;如下圖所示。 AK ID 和 AKS:可以在阿里雲 AccessKey 管理中查看和創建。

SLS 日誌查詢

原始日誌

顯示來自阿里雲 SLS 的源數據,未經處理。

統計圖表

統計圖表顯示查詢條件的結果,有兩種顯示方式:表格圖和時間序列圖。

表格圖

例如,查詢條件為 *|SELECT status,count(*) as count GROUP BY status,這裡查詢 status 字段,計算結果並命名為 count,然後按 status 字段進行分組,並在表格中顯示。

語法分析

*| select ... 說明: | 管道符號左側 * 是查詢語句;右側部分 select... 是分析語句。

status:表示日誌數據中的一個字段。

count() AS count: 統計每種 status 的數量,並將統計結果命名為 count

GROUP BY status:按 status 字段對查詢結果進行分組。

有關更多語法學習,可以參考: 查詢語法分析語法函數概述

時間序列圖

阿里雲 SLS 日誌查詢結果可以提取為數值,並將篩選條件存儲為 metrics 中的標籤。這裡有一些查詢示例來學習和理解。

常見基礎查詢語法

查詢 GET 請求成功的日誌(狀態碼為 200~299)且請求時間小於 60 秒: request_method:GET and status in [200 299] not request_time>=60

查詢 remote_user 字段不為空的日誌not remote_user:""

查詢 remote_user 字段為空的日誌remote_user:""

查詢 remote_user 字段不為 null 的日誌not remote_user:"null"

查詢 remote_user 字段不存在的日誌not remote_user:*

查詢 remote_user 字段存在的日誌remote_user:*

查詢 host 字段值不為 123 的日誌not host:123.*

情景 1:查詢 status 為 403 和 405 的代理日誌,並按 host、method 和 request_uri 進行分組。

status:403 OR status:405 | SELECT host AS host,request_method AS method,request_uri AS url,count(*) AS count GROUP BY host,method,url 這個查詢也可以轉換為錯誤日誌查詢,例如:errCode: xxx or errCode:xxx | select ...

情景 2:查詢 request_method 字段以 GE 開頭且 client_ip 字段範圍為 8.140.205.* 的日誌,並按 host、method 和 request_uri 進行分組。

request_method:GE* and client_ip:8.140.205.* | SELECT host AS host,request_method AS method,request_uri AS url,client_ip AS cip,count(*) AS count GROUP BY host,method,url,cip

情景 3:查詢請求時間小於 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 A GROUP BY host, method, url,status,read_request_time

情景 4:查詢昨天 status 為 403 和 405 的代理日誌,並按 host、method 和 request_uri 進行分組。

status:403 OR status:405 | SELECT host AS host, request_method AS method, request_uri AS url, from_unixtime(__time__) AS time, count(*) AS A WHERE __time__ < to_unixtime(current_date) AND __time__ > to_unixtime(date_add('day', -1, current_date)) GROUP BY host, method, url, time

此查詢主要使用了 from_unixtime(), to_unixtime(), current_date, date_addday 函數。

from_unixtime 函數:將 UNIX 時間戳轉換為時間戳類型的日期和時間表達式,格式為 YYYY-MM-DD HH:MM:SS.Ms 或 YYYY-MM-DD HH:MM:SS.Ms 時區。

to_unixtime 函數:將時間戳類型的日期和時間表達式轉換為 UNIX 時間戳。

current_date 函數:返回當前日期,格式為 YYYY-MM-DD。

date_add 函數:將指定的時間間隔加到日期或時間中。

day 函數:從日期和時間表達式中提取日期,按月計算。day 函數相當於 day_of_month 函數。

SLS 日誌告警

在告警規則中—> 選擇日誌數據源 —> 配置查詢語句並提取 ValueKey —> 選擇簡單模式設置 ValueKey 在指定時間內的閾值。

配置場景 1:查詢代理日誌中 status 為 404 和 405 的日誌數量,如果查詢結果的數量(即 count 字段的值)超過 5,則發送告警通知。

告警查詢語句: status:404 OR status:405 | SELECT count(*) AS count

設定 ValueKey 為 count,並設置當 count 的值大於 5 時觸發告警。

配置場景 2:查詢代理日誌中 status 為 404 和 405 的日誌數量,如果查詢結果的數量(即 count 字段的值)超過 10,且異常率超過 80%,則發送告警通知。

告警查詢語句: status:404 OR status:405 | SELECT count(*) AS count

設定 ValueKey 為 count,並設置當 count 的值大於 10 時觸發告警,並選擇條件表達式模式設置異常率。

SLS 控制台

可以在告警控制台中查看告警記錄、設置告警模板和響應策略。

SLS Dashboard

如果要將來自阿里雲 SLS 的數據作為圖表使用,可以在圖表面板中創建 dashboard,根據查詢結果配置圖表,支持統計圖表、時間序列等形式顯示。

如果數據結果可顯示和查詢,您可以參考上述方法進行操作。

至此完成 SLS 數據接入、查詢、告警的基本配置。

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat
FlashDuty
Flashduty