需要帮助GROK模式

时间:2017-08-02 16:26:45

标签: logstash logstash-grok

您好我是ELK的新手,也是GROK模式,下面是我要创建GROK模式的日志文件行。我需要的字段在Splunk解析的'='之前。

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 ms。

我想出了这种GROK模式,这显然不起作用。

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

根据自定义模式的文档,提到的是(? 模式在这里)

我更新的GROK模式是

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

我在regex101.com1中测试了正则表达式并且它可以工作但是在grok Debugger中它不起作用。

任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

以下grok模式将捕获applicationSystemCode和执行时间。如果需要,您也可以以相同的方式捕获其他字段。

%{MONTHDAY}%{MONTH}%{YEAR}%{TIME}%{LOGLEVEL:loglevel}%{WORD:Activity} [{applicationSystemCode =%{WORD:applicationSystemCode}%{GREEDYDATA:msg}执行时间: %{GREEDYDATA:时间}

希望这有帮助。

答案 1 :(得分:0)

这是我用于调试我的grok模式的在线调试器:https://grokdebug.herokuapp.com/

'\'用于转义特殊的正则表达式字符。

这是一个例子,但我相信你可以从这里继续:

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

我希望我很清楚这对你有所帮助。