2017-08-02 157 views
0

您好我對ELK和GROK模式都很陌生,下面是我想創建GROK模式的日誌文件行。我需要的字段在Splunk分析的'='之前。需要關於GROK模式的幫助

01 Aug 2017 17:58:19,048 INFO ProfileAspect[{applicationSystemCode=appname, clientIP=10.x.x.x, clusterId=Cluster-Id-NA, containerId=Container-Id-NA, correlationId=536bacc1-1b50-3866-5c8c-8d0efa037f8f, domainName=defaultDomain, hostName=ip-x-x-x.domain.com, messageId=10.x.x.23-e2250a0e-b706-4e95-8e11-5b9bf310eabd, userId=ANONYMOUS, webAnalyticsCorrelationId=66D276FF1489DFF845056FD915664268|F90B27374FD5E26D2566CEE3AFDA3AB0}]: class com.provider.base.v1.HomeBaseApiConsumer.searchTasks execution time: 15 ms 

我還想捕獲在本例中最後顯示的執行時間,即15毫秒。

我想出了這個顯然不起作用的GROK模式。

%{MONTHDAY} %{MONTH} %{YEAR} %{TIME},%{NUMBER:duration} %{WORD:loglevel} %{WORD:Activity} [{%{(「applicationSystemCode」= \w)} 

按照自定義模式的文件中,提到的是(?這裏的 模式)

我的更新神交模式

%{MONTHDAY} %{MONTH} %{YEAR} %{TIME},%{NUMBER:duration} %{WORD:loglevel} %{WORD:Activity} \[\{(?<applicationSystemCode>\W\w+\W\w+) 

我regex101.com1測試的正則表達式,它工程,但在grok調試它不工作。

任何機構都可以提供幫助嗎?

回答

0

下面的grok模式將捕獲applicationSystemCode和執行時間。如果需要,您也可以採用相同的方式捕獲其他字段。

%{MONTHDAY}%{MONTH}%{YEAR}%{TIME}%{LOGLEVEL:loglevel}%{WORD:Activity} [{applicationSystemCode =%{WORD:applicationSystemCode}%{GREEDYDATA:msg} :%{GREEDYDATA:time}

希望這會有所幫助。

+0

謝謝,但我必須捕捉由'='符號分隔的每個字段值對。 –

0

這是在線調試器,我使用的調試我神交模式:https://grokdebug.herokuapp.com/

「\」是轉義特殊字符的正則表達式。

這是一個例子,但我相信你可以繼續從這裏:

%{MONTHDAY} %{MONTH} %{YEAR} %{TIME} %{LOGLEVEL:loglevel} %{WORD:Profile}\[\{applicationSystemCode=%{DATATYPE:NAMEYOUGIVE} 

我希望我是清楚的,這可以幫助你。

+0

謝謝,但我必須捕獲由'='號分隔的每個字段值對 –

+0

不客氣。您可以繼續填充如下格式:%{MONTHDAY}%{MONTH}%{YEAR}%{TIME}%{LOGLEVEL}%{WORD} \ [\ applicationSystemCode =%{WORD:SystemCode},clientIP =% {CHOOSEDATATYPE:ClientIp},clusterId =%{CHOOSEDATATYPE:clusterId},或者我不確定這是否可行,您可以查找kv過濾器。它意味着通過配置過濾器來自動解析。這裏是kv過濾器的鏈接:https://www.elastic.co/guide/en/logstash/current/plugins-filters-kv.html –

+0

非常感謝,我確實使用了KV過濾器,它像冠軍一樣工作。 :) –