2017-01-19 54 views
0

我想用logstash獲取metricbeat數據。 (卡夫卡作爲輸入& ElasticSearch作爲輸出)。刪除metricbeat集數據的「message」字段

input { 
    kafka { 
    bootstrap_servers => "XX.XX.XXX.XX:9092" 
    topics => ["cc-data"] 
    } 
} 
output { 
    elasticsearch { 
    hosts => ["XX.XX.XXX.XX:9200"] 
    index => "metricbeat-%{+YYYY.MM.dd}" 
    } 
} 

在輸出我看到的數據爲:

 { 
     "_index" : "metricbeat-2017.01.18", 
     "_type" : "logs", 
     "_id" : "AVmzQUytyldhSr4kUaUS", 
     "_score" : 1.0, 
     "_source" : { 
      "@timestamp" : "2017-01-18T20:21:45.324Z", 
      "@version" : "1", 
      "message" : "{\"@timestamp\":\"2017-01-18T20:21:44.394Z\",\"beat\":{\"hostname\":\"ip-XX-XXX-XX-XXX\",\"name\":\"ip-XX-XXX-XX-XXX\",\"version\":\"5.0.0\"},\"metricset\":{\"module\":\"system\",\"name\":\"process\",\"rtt\":104061},\"system\":{\"process\":{\"cpu\":{\"start_time\":\"2016-08-03T10:10:17.000Z\",\"total\":{\"pct\":0.000000}},\"fd\":{\"limit\":{\"hard\":4096,\"soft\":1024},\"open\":0},\"memory\":{\"rss\":{\"bytes\":0,\"pct\":0.000000},\"share\":0,\"size\":0},\"name\":\"migration/2\",\"pgid\":0,\"pid\":47,\"ppid\":2,\"state\":\"sleeping\",\"username\":\"root\"}},\"type\":\"metricsets\"}" 
     } 
     } 
    ] 
    } 
} 

我不想「消息」獨FIELD ..取而代之的是,在這一領域的所有DATAS應該出現,因爲它是[希望單獨刪除「消息」字段名稱 - 但應顯示內容]如何單獨刪除字段名稱,並保持內容原樣。

任何人都可以幫助我們如何實現這一目標?

回答

0

kafka輸入默認情況下有一個plain編解碼器,這意味着它消費者的話題和解釋內容爲一個普通的字符串。你需要,而不是什麼是編解碼器更改爲json它解析內容的JSON結構:

input { 
    kafka { 
    bootstrap_servers => "XX.XX.XXX.XX:9092" 
    topics => ["cc-data"] 
    codec => "json"   # <---- add this 
    } 
} 
+0

瓦爾你好,這裏是我得到的錯誤 - [2017-01-19T05:22:48,052] [ WARN] [logstash.outputs.elasticsearch]失敗的操作。 {:status => 400,:action => [「index」,{:_id => nil,:_index =>「metricbeat-2017.01.19」,:_type =>「metricsets」,:_routing => nil}, 2017-01-19T04:45:04.733Z%{host}%{message}],:response => {「index」=> {「_ index」=>「metricbeat-2017.01.19」,「_type」=>「 「=」400「,」error「=> {」type「=>」mapper_parsing_exception「,」reason「=>」無法解析[system.process.cpu。 start_time]「,」causes_by「=> {」type「=>」illegal_argument_exception「 –

+0

這是度量標準數據。 –

+0

現在這是一個不同的問題,它現在正在將您的'message'字段正確解析爲JSON。你能用'curl -XGET localhost:9200/_template'和'curl -XGET localhost:9200/metricbeat-2017.01.19'得到的輸出更新你的問題嗎? – Val