2015-06-16 80 views
0

背景Logstash。通過位置編號

獲取領域我有方案:從我的應用程序日誌經過rsyslog現在到中央日誌服務器,然後Logstash和Elasticsearch。 來自應用程序的日誌是一個純粹的JSON,但rsyslog增加了日誌「時間戳」,「應用程序名稱」和「服務器名稱」文件。和日誌變成這樣:

timestamp app-name server-name [JSON] 

問題

如何刪除前三場與Logstash過濾器? 我可以通過位置編號字段(如在AWK),並做一些事情,如:

filter { 
    somefilter_name { 
     remove_field => $1, $2, $3 
    } 
} 

或者,也許我的理想是完全錯誤的,我必須以另一種方式做到這一點?

謝謝!

回答

0

使用神交{}來匹配他們(他們可能是對自己有用!),並把該事件的其餘部分放回[消息]字段:

給定的輸入,如:

2015-06-16 13:37:30 myApp myServer { "jsonField": "jsonValue" } 

而這個配置:

grok { 
    pattern => "%{TIMESTAMP_ISO8601:timestamp} %{WORD:app} %{WORD:server} %{GREEDYDATA:message}" 
    overwrite => [ "message" ] 
} 

json { 
    source => "message" 
} 

會產生這個文件:

{ 
    "message" => "{ \"jsonField\": \"jsonValue\" }", 
    "@version" => "1", 
    "@timestamp" => "2015-06-16T20:38:55.658Z", 
    "host" => "0.0.0.0", 
    "timestamp" => "2015-06-16 13:37:30", 
    "app" => "myApp", 
    "server" => "myServer", 
    "jsonField" => "jsonValue" 
} 
+0

謝謝! 但我得到日誌錯誤:{:timestamp =>「2015-06-17T16:37:26.258000 + 0300」,:message =>「Trouble parsing json」,:source =>「message」,:raw = >「2015-06-17T16:37:23 + 03:00 myServer myApp {Here is JSON},:exception =>#,:level =>:warn} 我的JSON有問題嗎? –

+0

我以另一種方式解決了問題。 rsyslog conf中的消息格式 –

+0

是的,「Trouble parsing json」會顯示json有問題,很高興你把它解決了。 –