将JSON文件导入Logstash + Elasticsearch + Kibana

Ped*_*lva 12 logging json elasticsearch logstash kibana

所以,我有一个Web平台,每个请求打印一个JSON文件,其中包含有关该请求的一些日志数据.我可以配置几个关于何时记录内容的规则,仅限于某些级别等...

现在,我一直在玩Logstash + Elasticsearch + Kibana3堆栈,我很想找到一种在Kibana中查看这些日志的方法.我的问题是,有没有办法让Logstash导入这些类型的文件,还是我必须为它编写自定义输入插件?我一直在寻找和看到我所看到的,插件是用Ruby编写的,这是一种我没有经验的语言.

gri*_*ure 20

Logstash是处理动态文件的非常好的工具.

以下是使用logstash将json文件导入elasticsearch的方法:

配置文件:

input 
{
    file 
    {
        path => ["/path/to/json/file"]
        start_position => "beginning"
        sincedb_path => "/dev/null"
        exclude => "*.gz"
    }
}

filter 
{
    mutate
    {
        replace => [ "message", "%{message}" ]
        gsub => [ 'message','\n','']
    }
    if [message] =~ /^{.*}$/
    {
        json { source => message }
    }

}

output
{ 
  elasticsearch {
    protocol => "http"
    codec => json
    host => "localhost"
    index => "json"
    embedded => true
  }

    stdout { codec => rubydebug }
}
Run Code Online (Sandbox Code Playgroud)

json文件的示例:

{"foo":"bar", "bar": "foo"}
{"hello":"world", "goodnight": "moon"}
Run Code Online (Sandbox Code Playgroud)

请注意,json需要在一行中.如果要解析多行json文件,请替换配置文件中的相关字段:

   input 
{   
    file 
    {
        codec => multiline
        {
            pattern => '^\{'
            negate => true
            what => previous                
        }
        path => ["/opt/mount/ELK/json/*.json"]
        start_position => "beginning"
        sincedb_path => "/dev/null"
        exclude => "*.gz"
    }
}

filter 
{
    mutate
    {
        replace => [ "message", "%{message}}" ]
        gsub => [ 'message','\n','']
    }
    if [message] =~ /^{.*}$/ 
    {
        json { source => message }
    }

}
Run Code Online (Sandbox Code Playgroud)


Fre*_*Dog 12

Logstash只是一种工具,用于将各种syslog文件转换为JSON并将它们加载到elasticsearch(或graphite,或......)中.

由于您的文件已经是JSON,因此您不需要logstash.您可以使用curl将它们直接上传到elasticsearch.

请参阅将JSON文件导入/索引到Elasticsearch中

但是,为了与Kibana良好配合,您的JSON文件需要最少.

  1. Flat - Kibana不会嵌套嵌套的JSON结构.您需要一个简单的键/值对散列.

  2. 有一个可识别的时间戳.

我建议的是查看JSON文件的logstash输出,看看是否可以按摩你的JSON文件以匹配该结构.您可以使用任何支持JSON的语言执行此操作.该程序jq非常便于将json从一种格式过滤到另一种格式.

Logstash格式 - https://gist.github.com/jordansissel/2996677

jq - http://stedolan.github.io/jq/