用于转换历元时间戳的Logstash

用于转换历元时间戳的Logstash,logstash,kibana,Logstash,Kibana,我试图解析一些历元时间戳,使其更具可读性 我四处寻找如何将它们解析为正常时间,据我所知,我应该做的是这样的事情: mutate { remove_field => [ "..."] } grok { match => { 'message' => '%{NUMBER:time}%{SPACE}%{NUMBER:time2}...' } } date { match => [ "time","UNIX" ] } 消息的示例是:141081188

我试图解析一些历元时间戳,使其更具可读性

我四处寻找如何将它们解析为正常时间,据我所知,我应该做的是这样的事情:

mutate
{
    remove_field => [ "..."]
}

grok
{
    match => { 'message' => '%{NUMBER:time}%{SPACE}%{NUMBER:time2}...' }
}

date
{
    match => [ "time","UNIX" ]
}
消息的示例是:
1410811884.84 1406931111.00….
前两个值应该是UNIX时间值

我的grok是有效的,因为Kibana中显示的所有字段都带有预期值,而我删除的所有值字段都不在那里,所以mutate也可以工作。日期部分似乎什么也没做


据我所知,
match=>[“time”,“UNIX”]
应该做我想做的事情(将时间值更改为正确的日期格式,并将其作为字段显示在kibana上)。显然我不理解它。

日期{}过滤器用提供的数据替换@timestamp的值,因此您应该看到@timestamp的值与[time]字段的值相同。这通常很有用,因为日志的传播、处理和存储会有一些延迟,所以最好使用事件自己的时间

由于您有多个日期字段,因此需要使用日期筛选器的“target”参数指定解析日期的目标,例如:

date {
    match => [ "time","UNIX" ]
    target => "myTime"
}
这将把名为[time]的字符串字段转换为名为[myTime]的日期字段。Kibana知道如何显示日期字段,您可以在Kibana设置中自定义该字段

由于您可能不需要相同数据的字符串和日期版本,因此可以在转换过程中删除字符串版本:

date {
    match => [ "time","UNIX" ]
    target => "myTime"
    remove_field => [ "time" ]
}

还可以考虑使用UNIX_MS尝试几毫秒

date {
    timezone => "UTC"
    match => ["timestamp", "UNIX_MS"]
    target => "@timestamp"
}