【问题标题】:Logstash grok filter regexLogstash grok 过滤器正则表达式
【发布时间】:2017-01-03 23:18:25
【问题描述】:

我正在尝试使用 grok 清除 ELK 堆栈中的日志条目。我还有以下文字需要处理:

/mnt/drive/fish/Cap Camel/Indigo - [Fair Game].jpg (34523) [2,0,34523,0,0,2,2]
/mnt/drive/fish/Cap Camel/Indigo - [Fair Game].jpg
/mnt/drive/fish/Cap Camel (1358)/Indigo - [Fair Game].jpg

我想要路径,但它包含空格、大写字母和特殊字符等?

谢谢

【问题讨论】:

  • 试试^(?<file>(?:/[^/]+)+\.jpg)
  • 我应该很清楚,文件并不总是 jpg,可以是任何扩展名。实际路径以第一个 (
  • 然后尝试^(?<file>.*?)\s*\(,如果文件路径一直到空格+(之后。
  • 效果很好,但是我发现路径中的某些条目毕竟是最后一项(之后没有括号内的元素)。是否可以尝试两个模式匹配?
  • 我已经更新了示例。感谢您的所有帮助。

标签: regex logstash logstash-grok


【解决方案1】:

由于您的第三个示例包含“ (”,因此我们无法使用它来发现第一行中的更改。

似乎将这些线条联系在一起的唯一想法是“.jpg”。你说它可能不总是jpg,但希望它们都有后缀。

有了这个假设 - 并且路径本身不包含任何句点,这种模式在调试器中有效:

(?<file>[^\.]*\.[^ ]*)

“任何不是句号的,后面跟着一个句号,然后是不是空格的任何东西”。

【讨论】:

  • 感谢您的所有帮助。最后,如果您的解决方案通过使用_grokparsefailure 标记来修复与grok 不匹配的项目,则最终使用了多个。
  • 我不喜欢使用 GPF 进行逻辑控制。您可以将多个模式放在同一个 grok 中。
  • 我可能会探索这种方法,感谢您的提醒。将有助于稍微调整配置。
猜你喜欢
  • 2020-04-09
  • 1970-01-01
  • 2021-10-24
  • 2014-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-18
  • 1970-01-01
相关资源
最近更新 更多