Logstash 使用当前年份作为不带年份的时间戳,并显示具有未来日期的事件
Logstash uses current year for timestamp without year and shows events with future dates
我有一些日志,其中没有提到年份,在解析时,logstash 添加当前年份并使事件出现在未来的日期。
我在论坛上查看了类似的问题,但不幸的是,没有任何解决方案。根据讨论,日期过滤器应该自动输入正确的年份,但在我的情况下并没有发生。以下是日志时间戳的示例。
Tue Oct 20 11:04:30.996 data: zone1 data: zone2
这是 2020 年 10 月的日志日期。
我得到的输出是
"new" => 2021-10-19T08:04:30.996Z,
"logtime" => "Tue Oct 20 11:04:30.996",
"path" => "/home/zone.log",
"message" => "Tue Oct 20 11:04:30.996 data: zone1 data: zone2",
Grok/date 过滤器是:
grok
{
match => { "message" => "(?<logtime>%{DAY} %{MONTH} %{MONTHDAY} %{HOUR}:%{MINUTE}:%{SECOND}) ........" }
}
date
{
match => [ "logtime", "EEE MMM dd HH:mm:ss.SSS" ]
target => "new"
}
没有 dateparsefailure 但时间戳进入未来。请大家指教。
日期过滤器不可能在所有情况下都知道正确的年份。 issue 已经在 github 上开放了好几年,那里有很多关于如何修复它的讨论。但是,我不希望它得到解决。
parser 有一些试探法来猜测正确的年份:
- 如果时间戳是从 12 月开始的,而当前日期是 1 月,则假设它是去年的。
- 如果时间戳是从一月开始的,而当前日期是十二月,则假设它是从明年开始的。
- 否则使用当前年份。
如果该逻辑对您不起作用,那么您将不得不实现自己的逻辑,可能在 ruby 过滤器中,以决定在使用日期过滤器解析时间戳之前将哪一年添加到时间戳中。
如果您以后只想删除活动,可以使用
ruby { code => 'if Time.now.to_f < event.get("@timestamp").to_f ; event.cancel ; end' }
我有一些日志,其中没有提到年份,在解析时,logstash 添加当前年份并使事件出现在未来的日期。
我在论坛上查看了类似的问题,但不幸的是,没有任何解决方案。根据讨论,日期过滤器应该自动输入正确的年份,但在我的情况下并没有发生。以下是日志时间戳的示例。
Tue Oct 20 11:04:30.996 data: zone1 data: zone2
这是 2020 年 10 月的日志日期。
我得到的输出是
"new" => 2021-10-19T08:04:30.996Z,
"logtime" => "Tue Oct 20 11:04:30.996",
"path" => "/home/zone.log",
"message" => "Tue Oct 20 11:04:30.996 data: zone1 data: zone2",
Grok/date 过滤器是:
grok
{
match => { "message" => "(?<logtime>%{DAY} %{MONTH} %{MONTHDAY} %{HOUR}:%{MINUTE}:%{SECOND}) ........" }
}
date
{
match => [ "logtime", "EEE MMM dd HH:mm:ss.SSS" ]
target => "new"
}
没有 dateparsefailure 但时间戳进入未来。请大家指教。
日期过滤器不可能在所有情况下都知道正确的年份。 issue 已经在 github 上开放了好几年,那里有很多关于如何修复它的讨论。但是,我不希望它得到解决。
parser 有一些试探法来猜测正确的年份:
- 如果时间戳是从 12 月开始的,而当前日期是 1 月,则假设它是去年的。
- 如果时间戳是从一月开始的,而当前日期是十二月,则假设它是从明年开始的。
- 否则使用当前年份。
如果该逻辑对您不起作用,那么您将不得不实现自己的逻辑,可能在 ruby 过滤器中,以决定在使用日期过滤器解析时间戳之前将哪一年添加到时间戳中。
如果您以后只想删除活动,可以使用
ruby { code => 'if Time.now.to_f < event.get("@timestamp").to_f ; event.cancel ; end' }