首页 > 解决方案 > Logstash 忽略多个日期过滤器

问题描述

我正在制作一个logstash .conf,在我的过滤器上,我需要提取两个时间戳的工作日,但Logstash 表现得好像他只做一个匹配,例如:

Timestamp 1: Mar 7, 2019 @ 23:41:40.476 .  => Thursday

Timestamp 2: Mar 1, 2019 @ 15:22:47.209 .  => Thu

预期产出

Timestamp 1: Mar 7, 2019 @ 23:41:40.476 .  => Thursday

Timestamp 2: Mar 1, 2019 @ 15:22:47.209 .  => Fri

这些是我的过滤器:

date {
    match => ["[system][process][cpu][start_time]", "dd-MM-YYYY HH:mm:ss", "ISO8601"]
    target => "[system][process][cpu][start_time]"
    add_field => {"[Weekday]" => "%{+EEEEE}"}
  }
date {
    match => ["[FechaPrimero]", "dd-MM-YYYY HH:mm:ss", "ISO8601"]
    target => "[FechaPrimero]"
    add_field => {"[WeekdayFirtsDay]" => "%{+EE}"}
  }

标签: elasticsearchlogstash

解决方案


这是因为默认情况下%{+EEEEE}%{+EE}考虑到@timestamp字段,并且没有用户制作的字段(不知道它是否写在文档中)

据我所知,这样做的唯一方法是使用 ruby​​ 代码的一部分来提取星期几,如下所示:

ruby {
  code => 'event.set("Weekday", Time.parse(event.get("[system][process][cpu][start_time]").to_s).strftime("%A"))'
}
ruby {
  code => 'event.set("FechaPrimero", Time.parse(event.get("FechaPrimero").to_s).strftime("%a"))'
}

推荐阅读