当前位置:  开发笔记 > 编程语言 > 正文

Logstash转换纪元时间戳

如何解决《Logstash转换纪元时间戳》经验,为你挑选了2个好方法。

我正在尝试解析一些纪元时间戳,使其更具可读性.

我四处寻找如何将它们解析为正常的时间,从我的理解,我应该做的就是这样:

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作为字段.).所以显然我不理解它.



1> Alain Collin..:

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

由于您有多个日期字段,因此您需要使用日期过滤器的'target'参数来指定解析日期的目标,例如:

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

这会将名为[time]的字符串字段转换为名为[myTime]的日期字段.Kibana知道如何显示日期字段,您可以在kibana设置中自定义日期字段.

由于您可能不需要字符串和相同数据的日期版本,因此您可以删除字符串版本作为转换的一部分:

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



2> 小智..:

考虑使用UNIX_MS尝试毫秒.

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

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有