从多行中提取值并合并

  • 本文关键字:合并 提取 splunk
  • 更新时间 :
  • 英文 :


我们转发了来自不同主机和不同来源的应用程序日志到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

最新更新