前言
如果我們希望可以依照不同的 Input 做不同的 Output 處理,可以參考此文章來做設定。
設定
我們在設定 Logstash 時,可以設定 Input 的 type
, 之後在 Filter 或是 Output 的部分可以利用 type
來做不同的處理。設定範例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| input { file { path => ["/home/user/test.log"] type => "test_log" } file { path => ["home/user/logs/server.log"] type => "server_log" } file { path => ["home/user/logs/dev.log"] type => "dev_log" }file { path => ["home/user/logs/tmp.log"] type => "sys_log" } } filter { grok { match => { "message" => "\[(?<date>.+?)\] %{LOGLEVEL:level} %{DATA:logger} - client:%{IPV4:client_ip}, %{DATA:message}" } } date { match => ["date", "yyyy-MM-dd HH:mm:ss.SSS"] } } output { if [type] in ["test_log", "server_log"] { elasticsearch { hosts => ["localhost:9200"] index => "%{type}" } } else if [type] == "sys_log" { hosts => ["localhost:9200"] index => "syslog" } else { hosts => ["localhost:9200"] } }
|
上面的範例是只有做 Multiple outputs, 依據 type
不同輸出到不同的 Elasticsearch index.
依照範例設定好之後,重新啟動 Logstash 就可以在 Kibana 看到新的 Log 資料囉!
參考資料