我有一个带有几行json数据的日志文件。例如,这是一行:
{"name":"sampleApplicationName","hostname":"sampleHostName","pid":000000,"AppModule":"sampleAppModuleName","msg":"testMessage","time":"2016-02-23T19:33:10.468Z","v":0}
我希望logstash能够分解json字符串的这些不同组件,以便我可以基于这些组件在Kibana中创建可视化。我已经尝试过使用indexer文件并尝试使用json过滤器和grok模式进行无数变化,但是我什么也做不了。任何帮助深表感谢。
最佳答案
以下是我使用的示例配置。尝试将您的json行粘贴到命令提示符处,以验证其工作正常。
input {
stdin {}
}
filter {
json {
source => "message"
}
mutate {
add_field => {
"[@metadata][tenant-id]" => "%{[tenant-id]}"
"[@metadata][data-type]" => "%{[data-type]}"
"[@metadata][data-id]" => "%{[data-id]}"
}
}
if [data-type] == "build" {
mutate {
add_field => { "[@metadata][action]" => "index" }
}
}
}
output {
stdout { codec => rubydebug { metadata => true } }
file { path => "/tmp/jenkins-logstash.log" }
elasticsearch {
action => "%{[@metadata][action]}"
hosts => "XXX:9200"
index => "tenant-%{[@metadata][tenant-id]}"
document_type => "builds"
document_id => "%{[@metadata][data-id]}"
workers => 1
}
}
关于json - 如何使用Logstash和Kibana分解JSON数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36654420/