如何使用logstash和kibana分解json数据

时间:2016-04-15 18:28:38

标签: json elasticsearch logstash kibana grok

我有一个带有一堆json数据行的日志文件。例如,这是一行:

{"name":"sampleApplicationName","hostname":"sampleHostName","pid":000000,"AppModule":"sampleAppModuleName","msg":"testMessage","time":"2016-02-23T19:33:10.468Z","v":0}

我希望logstash能够分解json字符串的这些不同组件,以便我可以基于这些组件在Kibana中创建可视化。我已经尝试过使用索引器文件并使用json过滤器和grok模式尝试无数变化,但我无法使用任何东西。任何帮助深表感谢。

1 个答案:

答案 0 :(得分:0)

下面是我使用的示例配置。尝试将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
    }
}