【问题标题】:Logstash to convert epoch timestampLogstash 转换纪元时间戳
【发布时间】:2015-12-18 01:37:59
【问题描述】:

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

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

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 上。)。所以显然我不明白。

【问题讨论】:

    标签: logstash kibana


    【解决方案1】:

    日期{} 过滤器将@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"
      }
      

      【讨论】:

        猜你喜欢
        • 2017-07-02
        • 1970-01-01
        • 1970-01-01
        • 2021-01-18
        • 2021-11-23
        • 2014-10-12
        • 2018-08-03
        • 2020-06-24
        • 1970-01-01
        相关资源
        最近更新 更多