區段(section)
Logstash 用{}來定義區域。區域內可以包括插件區域定義,你可以在一個區域定義多個插件,插件區域內則可以定義鍵值對設置。
數據類型
Logstash支持少量的數據值類型:
- bool debug => true
- string host => "localhost"
- number port => 80
- array match => ["hello","message"]
- hash options => {name => "xiaoming", age => 55}
注意:地域1.2.0的版本哈希語法跟數組一樣。
字段引用
字段是 Logstash::Event 對象的屬性。事件就像一個哈希一樣,所以可以想想字段就像一個鍵值對。
如果想在Logstash配置中使用字段的值,只需要把字段的名字卸載中括號[]里就行了,這就較字段引用。對於潛逃字段,每層字段名都卸載[]里就可以。例:[object][field]
小貼士:
Logstash的數組也支持倒序下表,即[geoip][location][-1]可以獲取數組最后一個元素的值;
Logstash還支持變量內插,在字符串里使用字段引用的方法是這樣:"the logitude is %{[geoip][location][0]}"
條件判斷(condition)
Logstash從1.3.0版開始支持條件判斷和表達式,支持下面這些操作符:
- == (等於), != (不等於), < (小於), > (大於), <= (小於等於), >= (大於等於)
- =~ (匹配正則), !~ (不匹配正則)
- in (包含), not in (不包含)
- and (與), or (或), nand(非與), xor(非或)
- () (復合表達式), !() (對復合表達式結果取反)
命令行參數
-e 執行,這個參數的默認值是:input{stdin{}}output{stdout{}}
--config 或 -f 配置文件,后跟參數類型可以是一個字符串的配置(像Hello World例子一樣)或全路徑文件名或全路徑路徑(如:/etc/logstash.d/,logstash會自動讀取/etc/logstash.d/目錄下所有*.conf 的文本文件,然后在自己內存里拼接成一個完整的大配置文件再去執行)
注意:logstash列出目錄下所有文件時,是字母排序的,而logstash配置段的filter和output都是順序執行,所以順序非常重要。
采用多文件管理的用戶,推薦采用數字編號方式命名配置文件,同時在配置中,嚴禁采用if判斷限定不同日志的動作。
--configtest 或 -t 測試
--log 或 -l 日志。logstash默認輸出日志到標准錯誤,生產環境下用此參數自定義
--pipeline-workers 或 -w 運行filter和output的pipeline線程數量,默認是CPU核數。
--pipeline-batch-size 或 -b
每個 Logstash pipeline 線程,在執行具體的 filter 和 output 函數之前,最多能累積
的日志條數。默認是 125 條。越大性能越好,同樣也會消耗越多的 JVM 內存。
--pipeline-batch-delay 或 -u
每個 Logstash pipeline 線程,在打包批量日志的時候,最多等待幾毫秒。默認是 5ms。
--pluginpath 或 -P
可以寫自己的插件,然后用 bin/logstash --pluginpath/path/to/own/plugins 加載它們。
--verbose
輸出一定的調試日志。
--debug
輸出更多的調試日志。
設置文件
從 Logstash 5.0 開始,新增了 $LS_HOME/config/logstash.yml 文件,可以將
所有的命令行參數都通過 YAML 文件方式設置。同時為了反映命令行配置參數的層
級關系,參數也都改成用.而不是-了。