匹配字符串与前缀和后缀使用Logstash grok模式

时间:2017-07-06 09:41:49

标签: regex logstash-grok

我有一个ELK集群来保存我的日志,我想在日志使用logstash grok中提取一些字段。

[info ][170703 10:34:38.998686/832]acct ok,deal_time=122ms;ACCESS_PORT=216179383538692472&ACCESS_TYPE=2&ACCOUNT=07592111916&Acct-Status-Type=3;

这是我的格鲁克模式。

%{SYSLOG5424SD}\[%{DATA:[@metadata][timestamp]}\/%{NUMBER}\]%{WORD:type}\ %{WORD:status}\,%{GREEDYDATA}%{NUMBER:dealtime}ms\;%{GREEDYDATA}(?<acct>(?<=ACCOUNT=).*)

我想提取一些字段的值并将其提供给事件变量。 例如。 acct = 07592111916

我使用(?(?&lt; = ACCOUNT =)。*&amp; $)来提取值,但不起作用,我的问题在哪里?

我调试此站点中的代码。 http://grokdebug.herokuapp.com

1 个答案:

答案 0 :(得分:1)

我认为你需要以这种方式提取:

(?<acct>(?<=ACCOUNT=)[^&]+)