json - 如何使用Logstash和Kibana分解JSON数据

标签 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中创建可视化。我已经尝试过使用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/

相关文章:

elasticsearch - 使用Elasticsearch和NEST从ID返回五个以下文档

docker - 在Logstash中使用docker GELF驱动程序env/label

elasticsearch - Logstash jdbc插件:如何对列使用日期过滤器?

javascript - 如何在 kotlin JS 中通过 JSON.stringify 将 Map 序列化为 JSON 字符串?

javascript - 如何将 JSON 文件转换为 JS 数组?

javascript - 如何处理跨不同语言的单个项目中的编码风格冲突?

ios - 如何在 Swift 中访问 JSON 响应中的特定数据

elasticsearch - Cassandra 和高级查询 : Spark, ElasticSearch, Sorl

elasticsearch - 是否可以在kibana的首页 View 中减少字段

linux - 旧日志不会被logstash导入到ES中