iT邦幫忙

2025 iThome 鐵人賽

DAY 16
0
DevOps

從零開始的 graylog 探險系列 第 16

Day 16: 搜索語法與查詢優化

  • 分享至 

  • xImage
  •  

Graylog 搜索基礎

Graylog 的搜索引擎基於 Lucene,通過關鍵字和字段條件快速檢索日志。打開 Search 頁面後,頂部輸入框即為查詢入口,可即時查看結果與圖表。

核心搜索語法

基本搜索

  • 關鍵字:直接輸入,如 error (中英文的搜尋結果可能會不同)
  • 精確匹配:雙引號包裹,如 "failed login"
  • 字段搜索:field:value,如 source:nginx

邏輯運算符

  • AND(默認)、OR、NOT
  • 例:status:500 AND method:GET

特殊字符處理

  • 通配符:*(多字符)、?(單字符)
  • 例:userna* 匹配 usernameusernamed
  • 轉義字符:\,如 \* 匹配星號本身

存在性查詢

  • 用於篩選含有指定欄位的日志:
    _exists_:http_status  
    

高級搜索技巧

範圍查詢

  • 數值:bytes:[100 TO 1000]
  • 時間:timestamp:["2025-09-29 00:00:00" TO "2025-09-30 23:59:59"]

正則表達式

  • /…/ 包裹,如:
    message:/timeout\serror/
    

模糊搜索

  • 容錯查詢:field:value~1,允許 1 字符差異
    username:admni~1
    

查詢優化基礎

索引優化

  • 限定時間範圍,避免掃描過多數據
  • 善用「日期範圍」控件縮小查詢範圍

字段指定

  • 優先對指定欄位查詢,避免使用全文搜索
  • 例:level:ERROR 優於單純 ERROR

通配符使用

  • 避免在查詢起始位置使用 *?,如 *error,因為會觸發全索引掃描

範例

  1. 查詢過去 1 小時內所有 nginx 5xx 錯誤:

    source:nginx AND status:5* AND timestamp:>now-1h
    
  2. 查詢包含 “timeout error” 或 “connection refused” 的記錄:

    message:("timeout error" OR "connection refused")
    
  3. 篩選欄位存在並且用戶名近似 admin:

    _exists_:username AND username:admin~1
    

上一篇
Day 15: 儀表板創建與可視化
下一篇
Day 17: RESTful API
系列文
從零開始的 graylog 探險20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言