我们转发了来自不同主机和不同来源的应用程序日志到splunk。
Thread1 requestId=aUniqueID1 table=Table1
Thread1 size=2gb
Thread2 requestId=aUniqueID5 some other log
Thread1 requestId=aUniqueID1 some other log
Thread2 size=5gb
Thread1 requestId=aUniqueID2 table=Table2
Thread1 size=4gb
Thread1- requestId=aUniqueID3 table=Table3
这里我想要一个请求Id和大小的表格
aUniqueId1 2gb
aUniqueId2 4gb
aUniqueID5 5gb
基本上,每个主机的线程名称保持不变,但一旦请求完成,就会重用相同的线程。
有人能帮忙写一个Splunk查询吗?
当请求到来时,可以使用线程名称(Thread1、Thread2等(来标识日志
基本上,对于事务,大多数日志语句都有requestId
,我知道开始和结束时间,因此我知道该时间范围内的大小(按主机、源类型和线程名称(
这里有一个在任何地方运行的示例,说明如何做到这一点。
| makeresults | eval data="Thread1 requestId=aUniqueID1 table=Table1
Thread1 size=2gb
Thread1 requestId=aUniqueID1 some otherlog
Thread1 requestId=aUniqueID2 table=Table2
Thread1 size=4gb
Thread1 requestId=aUniqueID3 table=Table3" | eval data=split(data,"
") | mvexpand data | eval _raw=data
```Everything above sets up test data. Omit when using live data```
```Combine requestId and size lines```
| transaction startswith="requestId" endswith="size"
```Parse the results```
| extract kvdelim=" ", pairdelim="="
```Display request ID and corresponding size```
| table requestId size