我在 Kibana 中有一组日志条目,每条记录一行。
我正在尝试过滤掉扩展日志条目中看起来像这样的内容:
t dlog.line 53...
在日志中像这样:
{"dlog":{ ..., "line":"53...\n", ...}, ...}
所以这是一个文本记录 - 没什么花哨的 - 我有一个像这样的过滤器来尝试匹配它,使用 Kibana 的 Lucene 正则表达式,而不是 PCRE:
{ "query": { "regexp": { "dlog.line": { "value": "[0-9][0-9]\\.\\.\\.\n?" } } } }
如果我设置它,它会排除所有内容。如果我否定它,它就包括了一切。我必须对点进行双重转义,否则 Kibana 的 EDIT FILTER 不会让我保存它。
如果我摆弄正则表达式,我可以让它与其他带有点的东西匹配 -
[0-9][0-9]\\..*
使其匹配数字IP地址和时间戳的小时.分钟部分,但不是我的目标行。即使它们以两位数字和一个点开头。
它端到端匹配整个字段的断言似乎是不真实的,并且令人困惑的是,整个 IP 地址在发现表中突出显示,就好像 Kibana 运行正则表达式一次来搜索匹配记录,并再次使用不同的记录参数来突出显示匹配项,但它使用不同的逻辑,因为...为什么突出显示应该在时间戳中的冒号处或日志行中的方括号处停止,而应该在行尾使用
.*
?
t dlog.line localhost [127.0.0.1] 5538 (?) : Connection refused
^^^^^^^^^ highlit
t dlog.line == STATUS: 2024-01-12.10:31:58 watchdog-awaiting-device-60s 5538
^^^^^ highlit
使用
[0-9][0-9].*
确实匹配我的 58...
行,但也匹配一堆其他行,并且突出显示不会点亮我的目标行中的 ...
序列,但它们确实指示条目中的一大堆其他子字符串( .*
匹配数字 IP 地址中的字母,有时是冒号,.,但不匹配我见过的任何 -],/
)
t dlog.line host doesn't support requested feature: CPUID.80000001H:ECX.abm [bit 5]
^^^^^^^^^^^^^^^^^
我已经尝试过
[0-9][0-9]\\\\.*\\\\n
任意数量的 \ 转义,Kibana 让我将其放入其编辑过滤器对话框中,但似乎没有任何效果。
我已经查看了可以设置的额外标志,但看起来没有任何相关。
帮忙?我对 PCRE 正则表达式非常熟悉,但是这个 Lucene/Kibana 非标准正则表达式的东西已经占用了我很多时间。
相关字段有一个 .keyword 版本。
与直觉相反,改变正则表达式来对抗它反而使正则表达式起作用。