Regex grok模式在调试器中工作,但在logstash中不工作
我有一个grok模式,但我不能让它在logstash中工作。尤其是正则表达式失败了。基本上,我想匹配“source”字段中的字符串 我要筛选的“源”字段:Regex grok模式在调试器中工作,但在logstash中不工作,regex,logstash,elastic-stack,logstash-grok,Regex,Logstash,Elastic Stack,Logstash Grok,我有一个grok模式,但我不能让它在logstash中工作。尤其是正则表达式失败了。基本上,我想匹配“source”字段中的字符串 我要筛选的“源”字段: /var/log/containers/my-container-190662183-f6wlm_logging_logstash-testing-10897cc1fe13d419f73b8c7929377a1f98366a648e85e71163c4fdaac278e256.log 格罗克过滤器: filter { grok {
/var/log/containers/my-container-190662183-f6wlm_logging_logstash-testing-10897cc1fe13d419f73b8c7929377a1f98366a648e85e71163c4fdaac278e256.log
格罗克过滤器:
filter {
grok {
match => { "path" => "%{GREEDYDATA}/%{CONTAINERAPP:container}*" }
patterns_dir => ["/root/patterns"]
}
}
模式:
CONTAINERAPP .+(?=-\d)
注意,这里我并没有试图解析日志行,只是为匹配的模式分配一个字段。其他正则表达式生成“container”字段,只是不完全是我需要的字符串
我的猜测是Oniguruma语法不支持这个特定的正则表达式,但是如果是这样,为什么grok调试器会这样说?。+(?=-\d)你说:一个或多个后面有一个数字或轮胎的东西,可能需要加一个加号:。+(?=-\d)+@volkinc:不需要量化不使用文本的零宽度断言。这个我认为问题在于如何定义字段,请尝试
“%{GREEDYDATA:path}/%{CONTAINERAPP:container}”