logstash弹性搜索日期输出是不同的

时间:2015-02-03 10:21:30

标签: elasticsearch logstash

我的系统审核日志包含日期格式,如created_at“:1422765535789,因此,弹性搜索输出也会将日期显示为相同的样式。但是,我想将此1422765535789转换并打印为unix样式的日期格式。

我在syslog文件中使用了这种格式(正如另一个问题线程所建议的那样)。但我没有得到上述值为unix样式日期格式      日期{           match => [“created_at”,“UNIX_MS”]         }

嗨,我已经更新了syslog中的代码,但是,我将created_at仍然输出到相同格式的弹性搜索页面,如1422765535789,请找到修改后的代码

input {
        stdin {

        }
}


filter {
        grok {
        match => [ "message", "%{NUMBER:created_at}"
        ]
     }
if [message] =~ /^created_at/ {

        date {
                match => [ "created_at" , "UNIX_MS" ]
        }
        ruby {
            code => "
                    event['created_at'] =     Time.at(event['created_at']/1000);
            "
        }
   }
}
output {
  elasticsearch { host => localhost }
  stdout { codec => rubydebug }
}

1 个答案:

答案 0 :(得分:0)

date过滤器用于更新@timestamp字段值。

input {
    stdin {

    }
}

filter {
    grok {
            match => [ "message", "%{NUMBER:created_at:int}"
                    ]
    }
    if "_grokparsefailure" not in [tags]
    {
            date {
                    match => [ "created_at" , "UNIX_MS" ]
            }
            ruby {
                    code => "
                            event['created_at'] = Time.at(event['created_at']/1000);
                    "
            }
    }
}

output
{
    stdout {
            codec => rubydebug
    }
}

这是我的配置。当我输入1422765535789时,它可以解析值并更新@timestamp字段值。

输出

{
       "message" => "1422765535789",
      "@version" => "1",
    "@timestamp" => "2015-02-01T04:38:55.789Z",
          "host" => "ABC",
    "created_at" => "2015-02-01T12:38:55.000+08:00"
}

您可以发现@timestamp的值与created_at相同。 并且,ruby过滤器用于将created_at转换为UTC格式。

FYI。