3

我有这个打印日期格式的日志,如下所示:

=          Build Stamp: 10:45:33 On Apr  4 2014           =

所以我已经在 grok 调试器上运行了过滤器,但仍然不知道如何删除单词On

grok {
patterns_dir => "./patterns"
match => { "message" => "%{F_TIMESTAMP:timestamp}" }
}

date {
match => [ "timestamp" , "HH:mm:ss MMM  d yyyy" , "HH:mm:ss MMM  dd yyyy" ]
locale => "en"
}

模式文件,

F_TIMESTAMP %{TIME} \On %{MONTH} +%{MONTHDAY} %{YEAR}

我当前的时间戳输出是

2014 年 4 月 4 日 10:45:33 在 grok 调试器上。

那么我怎样才能使它与 logstash @timestamp 兼容/匹配?

4

1 回答 1

8

您可以提取日期时间的每个部分并在没有 On 关键字的情况下组合到另一个字段中。

您可以实现以下目标:

filter {
    grok {         
        match => { "message" => "%{F_TIMESTAMP}" }
    }
    mutate {
        add_field => { 
            "timestamp" => "%{time} %{month} %{monthday} %{year}"
        }
    }
    date {
        match => [ "timestamp" , "HH:mm:ss MMM d yyyy" , "HH:mm:ss MMM dd yyyy" ]
        locale => "en"
    }
    mutate {
        remove_field => [ "time" ,"month","monthday","year","timestamp"]
    }
}

F_TIMESTAMP %{TIME:time}\s*On\s*%{MONTH:month}\s*%{MONTHDAY:monthday}\s*%{YEAR:year}

它对我来说工作正常。

于 2014-09-25T11:52:13.683 回答