夜莺-Nightingale
夜莺V7
项目介绍 功能概览
部署升级 部署升级
数据接入 数据接入
告警管理 告警管理
数据查看 数据查看
功能介绍 功能介绍
数据库表结构 数据库表结构
API FAQ
夜莺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
参考资料

VictoriaLogs 日誌告警通過 LogsQL 進行日誌統計分析,及時發現異常並觸發告警。

配置說明

查詢統計

查詢條件

在查詢條件輸入框中輸入 LogsQL 統計查詢語句,查詢結果會賦值給變量 $A。

查詢語句格式:<過濾條件> | stats <統計函數>

點擊「數據預覽」按鈕可以查看查詢結果,驗證查詢語句是否正確。

閾值判斷

基於查詢統計的結果設置告警閾值,例如 $A > 10 表示統計值大於 10 時觸發告警。

請確保所有變量均有數據,且它們的標籤一致,否則無法進行閾值判斷。

數據缺失

配置當查詢無數據時的處理策略。

LogsQL 查詢語法

過濾條件

關鍵字查詢

error                           # 查詢包含 "error" 的日誌
"connection timeout"            # 查詢包含完整短語的日誌

字段過濾

_stream:{host="server1"}        # 匹配 stream 標籤
level:=error                    # 精確匹配字段值
level:error                     # 字段包含某值
status:>=500                    # 數值比較

邏輯運算符

error AND timeout               # 同時包含
error OR warning                # 包含任一
error NOT debug                 # 排除

通配符和正則

err*                            # 前綴匹配
/error|warning/i                # 正則匹配(i 表示忽略大小寫)

時間過濾

使用 _time 字段篩選時間範圍,這在告警場景中非常常用:

_time:1m                        # 最近 1 分鐘
_time:5m                        # 最近 5 分鐘
_time:10m                       # 最近 10 分鐘
_time:30m                       # 最近 30 分鐘
_time:1h                        # 最近 1 小時
_time:1d                        # 最近 1 天

時間範圍查詢:

_time:[now-5m, now]             # 最近 5 分鐘(等同於 _time:5m)
_time:[2024-01-01, 2024-01-02]  # 指定日期範圍
_time:["2024-01-01 10:00", "2024-01-01 12:00"]  # 指定時間範圍

組合使用示例:

_time:5m AND level:=error       # 最近 5 分鐘的錯誤日誌
_time:10m AND status:>=500      # 最近 10 分鐘的 5xx 錯誤

統計管道(stats)

查詢語句必須使用 | stats 管道進行統計,常用統計函數:

函數 說明 示例
count() 統計日誌數量 `
count_uniq(field) 統計字段唯一值數量 `
sum(field) 求和 `
avg(field) 平均值 `
min(field) 最小值 `
max(field) 最大值 `

分組統計(by)

使用 by (field) 按字段分組,分組後每個分組會獨立產生告警:

error | stats by (host) count() as count

詳細的 LogsQL 語法請參考 VictoriaLogs 官方文檔

使用範例

示例1:錯誤日誌數量監控(5分鐘)

查詢條件:

_time:5m AND level:=error AND _stream:{service="payment"} | stats count() as count

閾值判斷: $A > 10

示例2:按主機分組監控錯誤(5分鐘)

查詢條件:

_time:5m AND level:=error | stats by (host) count() as count

閾值判斷: $A > 50

每個主機獨立告警。

示例3:5xx 狀態碼監控(10分鐘)

查詢條件:

_time:10m AND status:>=500 AND status:<600 | stats count() as count

閾值判斷: $A > 100

示例4:按服務和狀態碼分組統計(10分鐘)

查詢條件:

_time:10m AND status:>=400 | stats by (service, status) count() as count

閾值判斷: $A > 50

示例5:平均響應時間監控(5分鐘)

查詢條件:

_time:5m AND _stream:{app="api-gateway"} | stats avg(response_time) as avg_rt

閾值判斷: $A > 1000

示例6:關鍵字告警(10分鐘)

查詢條件:

_time:10m AND ("timeout" OR "connection refused" OR "out of memory") | stats count() as count

閾值判斷: $A > 5

示例7:正則表達式匹配(5分鐘)

查詢條件:

_time:5m AND /exception|panic|fatal/i AND _stream:{env="production"} | stats by (service) count() as count

閾值判斷: $A > 20

示例8:唯一用戶數監控(30分鐘)

查詢條件:

_time:30m AND level:=error | stats count_uniq(user_id) as affected_users

閾值判斷: $A > 100

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