我正在尝试使用logstash获取metricbeat数据。(Kafka作为输入,ElasticSearch作为输出)。
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\"}"
}
}
]
}
}我不想要单独的"message“字段..相反,该字段中所有数据应该显示为只想删除"message“字段名称-但其内容应该显示我如何删除字段名称,并保持其内容不变。
有人可以帮助我们如何实现这一点吗?
发布于 2017-01-19 13:00:09
默认情况下,kafka输入有一个plain编解码器,这意味着它使用主题并将内容解释为普通字符串。相反,您需要的是将编解码器更改为json,以便将内容解析为JSON结构:
input {
kafka {
bootstrap_servers => "XX.XX.XXX.XX:9092"
topics => ["cc-data"]
codec => "json" # <---- add this
}
}https://stackoverflow.com/questions/41733687
复制相似问题