2017-07-06 104 views
0

我有一個ELK羣集讓我的日誌保持在下面,並且我想在log中提取一些使用logstash grok的字段。帶有前綴和後綴的匹配字符串使用Logstash grok pattern

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

這裏是我的grok模式。

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

我想提取一些字段的值並將其賦予事件變量。 例如。 acct = 07592111916

我使用(?(?< = ACCOUNT =)。* & $)來提取值,但不起作用,我的問題在哪裏?

我調試在這個網站的代碼。 http://grokdebug.herokuapp.com

+0

下面是否爲你工作的答案? –

+0

@WiktorStribiżew是的,它的工作原理。 – Kizer

+0

如果您有其他問題,請發佈。 –

回答

1

我認爲你需要提取這種方式:

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

+0

謝謝,它的工作原理。我怎麼走得更遠,例如,檢查「ACCOUNT =」字符串是否存在,如果不跳過該模式。 – Kizer