gpt4 book ai didi

jodatime - 如何调试日期的匹配?

转载 作者:行者123 更新时间:2023-12-02 19:39:19 25 4
gpt4 key购买 nike

我正在匹配诸如此类的事件

[Sun Jan 11 10:43:35 2015][3205.51466981] user idp : testing 10.234.22.220 (10.234.22.220) [61673782]

%{SYSLOG5424SD:timestamp}%{GREEDYDATA}user %{WORD:user} : testing %{HOST:ip}

它有效,我看到了elasticsearch/kibana中的各个字段。具体来说,上面示例中的 timestamp[Sun Jan 11 10:43:35 2015]

匹配

我现在想将此匹配与 date 一起使用,以获得正确的 @timestamp

我尝试在过滤器中使用

    date
{
match => [ "timestamp", "SYSLOG5424SD" ]
}

但这会使logstash崩溃,并输出建议提交错误报告 - 我打开了a ticket .

与此同时,我尝试通过以下方式明确匹配模式

    date
{
match => [ "timestamp", "\[EEE MMM dd HH:mm:ss y\]" ]
}

正如您所怀疑的 - 它永远不会匹配,@timestamp 设置为 Logstash 记录事件的时间。

你能发现问题吗,或者有什么巧妙的方法来调试此类情况吗?

最佳答案

日期过滤器完成的时间戳匹配不是基于正则表达式或 grok 表达式。这就是为什么将 SYSLOG5424SD 放在那里不起作用的原因。除了 filter documentation 中列出的几个特殊情况之外您只能使用 Joda-Time 库识别的 token 。请参阅 joda.time.format.DateTimeFormat 的文档类。

你已经非常接近正确了 - 只是不要逃避方括号:

date {
match => ["timestamp", "[EEE MMM dd HH:mm:ss y]"]
}

同样,Joda-Time 模式不是正则表达式,因此要匹配方括号文字,您不需要执行任何特殊操作。引用 Joda-Time 文档:

Any characters in the pattern that are not in the ranges of ['a'..'z'] and ['A'..'Z'] will be treated as quoted text. For instance, characters like ':', '.', ' ', '#' and '?' will appear in the resulting time text even they are not embraced within single quotes.

关于jodatime - 如何调试日期的匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28239972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com