2017-08-02 255 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过滤器,它像冠军一样工作。 :) –