Logstash配置文件爲要添加到事件處理管道的每種插件都有一個單獨的部分,例如:python
# This is a comment. You should use comments to describe # parts of your configuration. input { ... } filter { ... } output { ... }
每一個部分都包含一個或多個插件的配置選項,若是指定多個過濾器,它們將按照配置文件中它們的出現順序應用。apache
插件的配置由插件名稱和插件的設置塊組成,例如,這個輸入部分配置兩個文件輸入:json
input { file { path => "/var/log/messages" type => "syslog" } file { path => "/var/log/apache/access.log" type => "apache" } }
在本例中,爲每一個文件輸入配置了兩個設置:路徑和類型。ruby
你能夠根據插件類型配置不一樣的設置,有關每一個插件的信息,請參閱輸入插件、輸出插件、過濾器插件和編解碼器插件。app
插件能夠要求設置的值是某種類型,例如boolean、list或hash,支持下列值類型。this
這種類型如今大多不同意使用標準類型,好比string
,使用插件定義:list => true
屬性,以便更好地進行類型檢查,它仍然須要處理不須要類型檢查的hash或混合類型列表。編碼
例如:操作系統
users => [ {id => 1, name => bob}, {id => 2, name => jane} ]
它自己不是一個類型,可是屬性類型能夠有,這使得鍵入檢查多個值成爲可能,插件檢查能夠經過在聲明參數時指定:list => true
來啓用列表檢查。.net
例如:插件
path => [ "/var/log/messages", "/var/log/*.log" ] uris => [ "http://elastic.co", "http://example.net" ]
這個示例配置path
,它是一個包含兩個字符串而且每一個元素是string
的列表,它還將uris
參數配置爲URI列表,若是提供的任何uri都無效,則會失敗。
Boolean必須爲true
或false
,注意,true
和false
關鍵字不包含在引號中。
例如:
ssl_enable => true
Bytes字段是表示有效字節單位的字符串字段,在插件選項中聲明特定大小是一種方便的方法,SI(k M G T P E Z Y)和二進制(Ki Mi Gi Ti Pi Ei Zi Yi)單位都支持,二進制單位基於1024,SI單位基於1000,該字段不區分大小寫而且接受值和單位之間的空格,若是沒有指定單位,則整數字符串表示字節數。
例如:
my_bytes => "1113" # 1113 bytes my_bytes => "10MiB" # 10485760 bytes my_bytes => "100kib" # 102400 bytes my_bytes => "180 mb" # 180000000 bytes
Codec是用來表示數據的Logstash編解碼器的名稱,編解碼器可用於輸入和輸出。
輸入編解碼器提供了一種方便的方式解碼你的數據在輸入以前,輸出編解碼器提供了一種在數據離開輸出以前對其進行編碼的方便方法,使用輸入或輸出編解碼器消除了在你的Logstash管道中須要單獨的過濾器。
可用的編解碼器的列表能夠在編解碼器插件頁找到。
例如:
codec => "json"
Hash是一個鍵值對的集合,格式爲「field1」 => 「value1」
,注意,多個鍵值條目用空格而不是逗號分隔。
例如:
match => { "field1" => "value1" "field2" => "value2" ... }
Number必須是有效的數值(浮點數或整數)。
例如:
port => 33
密碼是一個不記錄或打印的單個值的字符串。
例如:
my_password => "password"
URI能夠是完整URL(如http://elastic.co/to
)或簡單標識符(如foobar)的任何內容,若是URI包含像http://user:pass@example.net
這樣的密碼,URI的密碼部分將不會被記錄或打印。
例如:
my_uri => "http://foo:bar@example.net"
Path是表示有效操做系統路徑的字符串。
例如:
my_path => "/tmp/logstash"
String必須是單個字符序列,注意,字符串值用引號括起來,能夠是雙引號,也能夠是單引號。
默認狀況下,不啓用轉義序列,若是你但願在引號中的字符串中使用轉義序列,你將須要在你的logstash.yml
中設置config.support_escapes: true
,當爲true
時,雙引號字符串(雙引號和單引號)將有這樣的轉換:
文本 | 結果 |
---|---|
\r |
回車(ASCII 13) |
\n |
新行(ASCII 10) |
\t |
製表(ASCII 9) |
\\ |
反斜槓(ASCII 92) |
\" |
雙引號(ASCII 34) |
\' |
單引號(ASCII 39) |
例如:
name => "Hello world" name => 'It\'s a beautiful day'
註釋與perl、ruby和python中的註釋相同,註釋以#字符開頭,不須要在行首,例如:
# this is a comment input { # comments can appear at the end of a line, too # ... }