您好我是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中它不起作用。
任何人都可以帮忙吗?
答案 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}
我希望我很清楚这对你有所帮助。