【问题标题】:Logstash uses current year for timestamp without year and shows events with future datesLogstash 使用当前年份作为没有年份的时间戳,并显示具有未来日期的事件
【发布时间】:2021-07-05 19:34:12
【问题描述】:

我有没有提到年份的日志,在解析时,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/日期过滤器是:

grok
        {
        match => { "message" => "(?<logtime>%{DAY} %{MONTH} %{MONTHDAY} %{HOUR}:%{MINUTE}:%{SECOND}) ........" }
        }

        date
        {
        match =>  [ "logtime", "EEE MMM dd HH:mm:ss.SSS"  ] 
        target => "new"
        }

没有 dateparsefailure 但时间戳进入未来。请就此提出建议。

【问题讨论】:

    标签: logstash logstash-grok


    【解决方案1】:

    日期过滤器不可能在所有情况下都知道正确的年份。一个issue 已经在 github 上开放了几年,那里有很多关于如何修复它的讨论。但是,我不希望它会得到解决。

    parser 有一些启发式方法来猜测正确的年份:

    • 如果时间戳从 12 月开始,而当前日期在 1 月,则假定它是从去年开始的。
    • 如果时间戳是从 1 月开始,而当前日期是在 12 月,则假定它是从明年开始的。
    • 否则使用当前年份。

    如果该逻辑对您不起作用,那么您可能必须在 ruby​​ 过滤器中实现自己的逻辑,以决定在使用日期过滤器解析时间戳之前将哪一年添加到时间戳。

    如果您以后只想删除事件,可以使用

    ruby { code => 'if Time.now.to_f < event.get("@timestamp").to_f ; event.cancel ; end' }
    

    【讨论】:

    • 我的日志从 2020 年 2 月开始,一直持续到 2021 年 7 月。如果我要制作红宝石,我会有点困惑,因为会有两个 2 月(一个来自 2020 年,一个来自 2021 年)让一年进入日期过滤器。
    • 这是一个难题。您知道该文件从 2020 年 2 月开始,但文件中没有任何内容告诉您。您必须编写最初将 2020 添加到时间戳的 ruby​​ 代码,但是当它看到从 12 月到 1 月的月份翻转时,它会增加它添加的年份。即使文件包含三年的数据,这也应该有效。
    • 注明。我正在考虑的其他选项是删除 logtime 显示任何未来时间戳的事件。 ` init => "require 'time'" code => "if ( (event.get('new').to_i) > (event.get('@timestamp').to_i) ) event.cancel end" ` 可以您对此有何建议?
    • 更新答案以包括如何做到这一点。
    • 那行得通。进一步分解问题,我们可以根据日志的时间戳删除 5/6 个月前的事件吗?这将允许在 Jan 之后发生事件(因为我们在 Jul )并保留日期顺序。请指教。 ` ruby​​ { init => "require 'time'" code => "if event['@timestamp']
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    相关资源
    最近更新 更多