logstash教程一 配置語法,資料型別

2021-10-20 20:22:53 字數 2866 閱讀 1940

每位系統管理員都肯定寫過很多類似這樣的命令:cat randdata | awk '' | sort | uniq -c | tee sortdata。這個管道符 | 可以算是 linux 世界最偉大的發明之一(另乙個是「一切皆檔案」)。

logstash 就像管道符一樣!你輸入(就像命令列的 cat )資料,然後處理過濾(就像 awk 或者 uniq 之類)資料,最後輸出(就像 tee )到其他地方。

logstash 設計了自己的 dsl —— 有點像 puppet 的 dsl,或許因為都是用 ruby 語言寫的吧 —— 包括有區域,注釋,資料型別(布林值,字串,數值,陣列,雜湊),條件判斷,字段引用等。

區段(section)

logstash 用{}來定義區域。區域內可以包括外掛程式區域定義,你可以在乙個區域內定義多個外掛程式。外掛程式區域內則可以定義鍵值對設定。示例如下:

input 

syslog {}

}

logstash 支援少量的資料值型別:

debug => true
host => "hostname"
port => 514
match => ["datetime", "unix", "iso8601"]
options =>
注意:如果你用的版本低於 1.2.0,雜湊的語法跟陣列是一樣的,像下面這樣寫:

match => [ "field1", "pattern1", "field2", "pattern2" ]
欄位是logstash::event物件的屬性。我們之前提過事件就像乙個雜湊一樣,所以你可以想象欄位就像乙個鍵值對。

小貼士:我們叫它字段,因為 elasticsearch 裡是這麼叫的。

如果你想在 logstash 配置中使用欄位的值,只需要把字段的名字寫在中括號裡就行了,這就叫字段引用

對於巢狀字段(也就是多維雜湊表,或者叫雜湊的雜湊),每層的欄位名都寫在裡就可以了。比如,你可以從 geoip 裡這樣獲取 longitude 值(是的,這是個笨辦法,實際上有單獨的字段專門存這個資料的):

[geoip][location][0]
小貼士:logstash 的陣列也支援倒序下標,即[geoip][location][-1]可以獲取陣列最後乙個元素的值。

logstash 還支援變數內插,在字串裡使用字段引用的方法是這樣:

"the longitude is %"
logstash從 1.3.0 版開始支援條件判斷和表示式。

表示式支援下面這些操作符:

通常來說,你都會在表示式裡用到字段引用。比如:

if "_grokparsefailure" not in [tags]  else if [status] !~ /^2\d\d/ and [url] == "/noc.gif"  else
logstash 提供了乙個 shell 指令碼叫logstash方便快速執行。它支援一下引數:

意即執行。我們在 "hello world" 的時候已經用過這個引數了。事實上你可以不寫任何具體配置,直接執行bin/logstash -e ''達到相同效果。這個引數的預設值是下面這樣:

input 

}output

}

意即檔案。真實運用中,我們會寫很長的配置,甚至可能超過 shell 所能支援的 1024 個字元長度。所以我們必把配置固化到檔案裡,然後通過bin/logstash -f agent.conf這樣的形式來執行。

此外,logstash 還提供乙個方便我們規劃和書寫配置的小功能。你可以直接用bin/logstash -f /etc/logstash.d/來執行。logstash 會自動讀取/etc/logstash.d/目錄下所有的文字檔案,然後在自己記憶體裡拼接成乙個完整的大配置檔案,再去執行。

意即測試。用來測試 logstash 讀取到的配置檔案語法是否能正常解析。logstash 配置語法是用 grammar.treetop 定義的。尤其是使用了上一條提到的讀取目錄方式的讀者,尤其要提前測試。

意即日誌。logstash 預設輸出日誌到標準錯誤。生產環境下你可以通過bin/logstash -l logs/logstash.log命令來統一儲存日誌。

意即工作執行緒。logstash 會執行多個執行緒。你可以用bin/logstash -w 5這樣的方式強制 logstash 為過濾外掛程式執行 5 個執行緒。

注意:logstash目前還不支援輸入外掛程式的多執行緒。而輸出外掛程式的多執行緒需要在配置內部設定,這個命令列引數只是用來設定過濾外掛程式的!

可以寫自己的外掛程式,然後用bin/logstash --pluginpath /path/to/own/plugins載入它們。

輸出一定的除錯日誌。

小貼士:如果你使用的 logstash 版本低於 1.3.0,你只能用bin/logstash -v來代替。

輸出更多的除錯日誌。

小貼士:如果你使用的 logstash 版本低於 1.3.0,你只能用bin/logstash -vv來代替。

Logstash學習 配置語法

logstash 用 來定義區域。區域內可以包括外掛程式區域定義,你可以在乙個區域定義多個外掛程式,外掛程式區域內則可以定義鍵值對設定。logstash支援少量的資料值型別 注意 地域1.2.0的版本雜湊語法跟陣列一樣。欄位是 logstash event 物件的屬性。事件就像乙個雜湊一樣,所以可以...

Logstash配置語法及相關命令

輸入外掛程式 input 過濾外掛程式 filter 輸出外掛程式 output array users lists path var log messages var log log uris boolean ssl enable true bytes my bytes 1113 1113 byt...

logstash引數配置

input配置 file 讀取檔案 input start position logstash從什麼位置讀取檔案資料,預設是結束的位置,也就是說logstash會以類似tail f的形式執行。如果需要匯入原始資料,需要把這個設定為 beginnning logstash就從頭開始讀取.stdin 標...