我有一个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
答案 0 :(得分:1)
我认为你需要以这种方式提取:
(?<acct>(?<=ACCOUNT=)[^&]+)