从 logstash 中的时间戳中提取特定时间字段

Extract specific time field from timestamp in logstash

我有一个自动生成的默认格式的@timestamp。我想要的是提取时间戳的 hour/month/weekday 并将其放在另一个字段中。

例如,现在我的时间戳如下所示:

@timestamp: "2015-08-26T09:04:42.284Z"

有什么办法可以得到以下字段吗?

我希望它根据 hour/day 连接制作一个 kibana4 直方图,使用平均指标。如果有其他方法可以实现,请告诉我!

我已经在网上搜索了所有的问题,但找不到任何解决方案。如果对此有任何帮助,我将不胜感激。

终于想通了。

您可以使用符号 %{} 来做到这一点。只需输入:

add_field => {"[hour]" => "%{+HH}"}
add_field => {"[weekday]" => "%{+EEE}"}

Here 是要使用的符号参考。

就是这样!

%{+HH} 值取自@timestamp。 使用 UTC 的时间戳。

如果您想要本地时间的小时数,则需要使用 ruby 过滤器。

  ruby {
    code => "tstamp = event.get('logdatetime').to_i
             event.set('logdatetime', Time.at(tstamp).strftime('%Y-%m-%d %H:%M:%S'))
             event.set('logdate', Time.at(tstamp).strftime('%Y-%m-%d'))"
  }

来自: https://altinity.com/blog/2017/12/18/logstash-with-clickhouse