iT邦幫忙

2024 iThome 鐵人賽

DAY 8
0

https://ithelp.ithome.com.tw/upload/images/20240922/20118848pRcoFWN2D8.png

搜尋功能頁提供了許多方便的搜尋工具,協助我們簡單點選就可以找出預期的記錄相關結果。但 Graylog 可不僅止於此,如果需要更複雜的搜尋條件,也可以自行輸入搜尋語法進行更複雜的查詢。


字串與欄位搜尋

在 Graylog 的搜尋當中,直接輸入要搜尋的字串是最直覺的作法,例如在搜尋列的查詢語法中輸入:

auth

搜尋結果即會出現記錄中包含有 auth 字串的結果,如下:

https://ithelp.ithome.com.tw/upload/images/20240922/201188483qFkxoZSiH.png
一般字串搜尋結果

這種搜尋是 不指定要搜尋欄位內容 的作法,系統會將輸入的字串用於記錄中 所有欄位 進行比對。

注意:

預設只有 message、full_message、source 可以搜尋部份符合結果,其它欄位的內容則必須與提供的字串完全符合才會被搜尋出來。至於為何預設只有這三個欄位支援此能力?在官方文件表示因效能考量所致。

若要搜尋的字串當中帶有空格,可以用雙引號將它夾起來表示,如下:

"successful auth"

送出搜尋後,即可取回帶有空格字串的搜尋結果。

https://ithelp.ithome.com.tw/upload/images/20240922/20118848m9JEpVUcVb.png
帶有空格的字串搜尋

若已知要搜尋的字串存在於那一個欄位,可以指定欄位名稱與字串進行搜尋,如下:

facility:"system daemon"

此時的結果,只會顯示在 facility 欄位中比對符合 system daemon 的記錄。

https://ithelp.ithome.com.tw/upload/images/20240922/20118848qKToNIIRfh.png
指定欄位的的字串搜尋

另外一種常見的場景,要找出具有某個蘭位的記錄沒有的則不顯示,在 Graylog 中也提供了專用的語法,這個技巧非常實用。

_exists_: TargetUserName

利用 _exists_: 搭配 TargetUserName 欄位名稱,即可找出只具有這個欄位的記錄,如下圖:

https://ithelp.ithome.com.tw/upload/images/20240922/2011884849fHtNwotx.png
指定欄位存在搜尋結果

技巧:

若要改為找出 不具某個欄位的記錄,在 _exists_: 前方加上 NOT 即可。


邏輯運算子與括號搜尋

除了搜尋指定字串存在的記錄之外,若要反過來做出 排除具有特定字串的記錄,可以加上 NOT 邏輯運算子。

NOT "successful auth"

此時的結果,僅列出不含 successful auth 以外的所有記錄。

https://ithelp.ithome.com.tw/upload/images/20240922/20118848uSRLmPdkh6.png
以 NOT 邏輯運算子搜尋結果

若今天需要搜尋的條件不只一個,可以利用邏輯運算子將多個條件結合使用,以取得更接近需求目標的結果。

facility:"system daemon" AND level:6

我們想要同時找出符合 factility 欄位內容為 system daemon 以及 level 欄位內容為 6 的記錄時,可以先這兩個條件填入,再用 AND 將兩個條件連接起來,即可生效:

https://ithelp.ithome.com.tw/upload/images/20240922/20118848XuVgq3TTQ7.png
以 AND 邏輯運算子搜尋結果

若要搜尋的多個條件是任一個符合均要列出時,可以採用 OR 做為邏輯運算子。

level:6 OR level:3

搜尋後,可以看到結果中僅有 level 欄位內容為 6 或 3 的記錄。

https://ithelp.ithome.com.tw/upload/images/20240922/201188483WmAlXt0Ps.png
以 OR 邏輯運算子搜尋結果

隨著要搜尋的內容越趨複雜,串接的條件不僅多個還可能需要依據內容先比較過後再與其它條件比較時,可以利用括號處理。

facility:"system daemon" AND (level:6 OR level:3)

經過搭配使用,即可做出 先判斷 level 欄位內容為 6 或 3 的記錄,再搭配比較找出 facility 欄位內容也必須是 system daemon 的記錄。

https://ithelp.ithome.com.tw/upload/images/20240922/20118848nwr2b0gniI.png
以 AND、OR 與括號合併使用搜尋

注意:

邏輯運算子 AND 或 OR 必須全大寫,否則會被視為搜尋字串的一部份。


比較運算子與範圍搜尋

對於欄位內容是數值類型者,可以使用比較運算子取得結果,例如 <><=>= 這四種。

EventID:<5000

這段語法執行後,會取得 Windows 事件中 EventID 小於 5000 的記錄。

https://ithelp.ithome.com.tw/upload/images/20240922/20118848JpzzIfCNSd.png
採用小於比較運算子搜尋結果

若需要取得某一個特定區間的結果,可以將大於及小於搭配使用。

EventID:>=4624 AND EventID:<=4625

使用此語法搭配後,即可找出 EventID 介於 4624~2625 的記錄結果。

https://ithelp.ithome.com.tw/upload/images/20240922/20118848dvd8TpSb2B.png
採用大於及小於比較運算子搜尋結果

技巧:

EventID:>=4624 AND EventID:<=4625 寫法也可簡化為 EventID:(>=4624 AND <=4625)

除了同時採用大於小於得出範圍之外,亦有另一種搜尋範圍的比較方式。

EventID:[4624 TO 4625]

採用此語法同樣可以得出指定範圍數值間的結果。

https://ithelp.ithome.com.tw/upload/images/20240922/20118848zuaS0cjl3t.png
採用範圍搜尋結果


特殊符號處理

若搜尋的預期欄位內容含有部份特殊符號時,需要在原符號前加上反斜線 \ 才能被視為字串,例如:

source:win11\-pro\-1

即是在 source 欄位中找出主機名稱為 win11-pro-1 的相關記錄。

https://ithelp.ithome.com.tw/upload/images/20240922/201188482B9MxBISp7.png
搜尋字串加上反斜線的搜尋結果

需要加上反斜線的符號整理如下:

https://ithelp.ithome.com.tw/upload/images/20240922/20118848SGgkZafArI.png
需要加上反斜線的特殊符號

如果是從欄位內容按下選單的 Add to query 自動加入搜尋列的語法,系統也會協助對該處理的符號加入反斜線。

技巧:

若經常遇到有特殊符耗不想疲於處理反斜線時,也可以直接把該字串全部用雙引號包起來,即可避免此困擾。例如 source:"win11-pro-1"


參考資料


上一篇
Graylog 搜尋 (二)
下一篇
Graylog 搜尋 (四)
系列文
突破困境:開源記錄收集與分析系統10
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言