为grok自定义正则表达式

时间:2017-08-08 14:32:04

标签: regex logstash-grok grok

我的问题是关于logstash中的grok过滤器。对于logstash过滤器,我需要解析日志文件。下面的示例日志声明

  

2017-07-31 09:01:53,135 - INFO   [QuorumPeer [myid = 1] / 0:0:0:0:0:0:0:0:2181:ZooKeeperServer @ 617] -   建立会话0x15d964d654646f4,协商超时5000   客户/10.191.202.89:56232

我想使用正则表达式解析[]之间的语句,但没有取得任何成功?从上面

  1. QuorumPeer [myid = 1] / 0:0:0:0:0:0:0:0:2181 应映射到线程ID。
  2. ZooKeeperServer 应映射到班级名称
  3. 617 应使用行号
  4. 进行映射

    有人可以帮助我使用正则表达式吗?

1 个答案:

答案 0 :(得分:2)

您可以使用

\[(?<threadid>\w+[^/]*/[\d:]+):(?<classname>[^\]@]+)@(?<linenumber>\d+)\]

<强>详情

  • \[ - 文字[
  • (?<threadid>\w+[^/]*/[\d:]+) - 小组&#34; threadid&#34;:1+个字符,然后是除//以外的0 +字符,然后是1个或多个数字或{{ 1}}(请注意,您可以根据需要调整此模式,例如,它也可以写为:,但它不会那么安全)
  • (?<threadid>.*?[\d:]+) - 冒号
  • : - 小组&#34;类名&#34;:除(?<classname>[^\]@]+)]以外的一个或多个字符
  • @ - @字符
  • @ - Group&#34; linenumber&#34;:1位或更多位
  • (?<linenumber>\d+) - 文字\]

grokdebug.herokuapp.com的在线测试结果:

enter image description here