1

我有一个 log4j 服务器日志,其中多行格式类似于以下内容:

"10.1.1.1" "AUTH-USER" "22/Jul/2013:22:42:42 -0700" "GET /source1/resources/RESOURCE/ENDPOINT/1111/start HTTP/1.1" 200 4 
"10.1.1.1" "auth2" "22/Jul/2013:22:43:03 -0700" "PUT /source1/resources/RESOURCE/ENDPOINT HTTP/1.1" 200 4
"10.40.16.254" "auth2" "22/Jul/2013:22:43:03 -0700" "PUT /source1/resources/secure/RESOURCE/v1/ENDPOINT?var1=A&var2=01-01-2013&var4=Allison HTTP/1.1" 200 4

其中 RESOURCE 是资源列表,ENDPOINT 表示端点列表。

我想计算日志文件中存在一对不同的 RESOURCE:ENDPOINT 的次数,以了解每个 Web 服务在特定时间轴中被调用的次数。

我知道我可以执行以下搜索来返回所有值:

(“/RevWebServices/resources/*/* HTTP/1.1”或“/RevWebServices/resources/secure/*/*/v*/* HTTP/1.1”)

但是如何将值提取到可以计数的键值对中?

4

1 回答 1

1

我认为以下步骤会有所帮助:

  1. 使用字段提取创建名为“RESOURCE”和“ENDPOINT”的自定义字段。字段提取可以在 splunk UI 或 props.conf(transforms.conf 中的高级配置)中完成。

  2. 在搜索过程中创建一个临时字段并使用搜索命令对它进行计数,例如“... | eval pair = RESOURCE.”:“.ENDPOINT | stats count by pair | ...”

于 2013-08-12T02:45:11.183 回答