#設置輸入源,這裡是從標准輸入中讀取。 input { stdin { } } #設置使用的filter。 filter { grok { #message默認使用了apachelog的模板 match => { "message" => "%{COMBINEDAPACHELOG}" } } date { #指明了時間格式 match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] } } #定義輸出管道,這裡一個是輸出到本機的elasticSearch中,一個是輸出到標准輸出中。 output { elasticsearch { host => localhost } stdout { codec => rubydebug } }
將以上內容保存為logstash.conf.然後運行 bin/logstash -f logstash.conf 待啟動完畢,在控制台上輸入以下文本進行測試 127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] "GET /xampp/status.php HTTP/1.1" 200 3891 "http://cadenza/xampp/navi.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0" 回車後我們能看到以下輸出。 Bingo,貌似logstash已經起作用了,它把我們的輸入文本,給切分為多個字段了。而且每個字段的命名都比較准確。猜測應該是我們配置了message的模板為"%{COMBINEDAPACHELOG}",而測試的文本也是一個apache的log日志中的一條。 按照官方文檔來解釋,起作用的是我們配置的“grok”的過濾器。grok按照每種log的格式預先定義了多種模板,只需使用時選定下你的日志適用的grok即可。更多的grok 模板可以從github上去獲取。 ?可以看到解析後的字段中出現了2處timestamp,一處帶著@符號,另一處則是log中解析出來的時間。 OK,第一個例子已經結束。我們已經能看到logstash是如何處理日志文件的思路了。