0

我想知道有多少用户是蓝色的,有多少是所有唯一用户的红色?

[2011-09-30 18:15:01:559 GMT+00:00][137D3B5A5F196F81A405858E6A5AA01F.maps-358-thread-1][com.abc.myaction.myfilter] INFO email=abc@hotmail.com userid=1234
[2011-09-30 18:15:01:559 GMT+00:00][237D3B5A5F197F81A405858E6A5AA0WD.maps-158-thread1][com.abc.myaction.myfilter] INFO email=pqr@rff.com userid=4235
[2011-09-30 18:15:01:559 GMT+00:00][337D3B5A5F198F81A405858E6A5AA0GW.maps-258-thread-1][com.abc.myaction.myfilter] INFO email=xyz@abc.com userid=7645
[2011-09-30 18:14:58:768 GMT+00:00][237D3B5A5F198F81A405858E6A5AA09F.http-8080-11][com.pqr.abclogging.mywrapper] DEBUG redColor=true blueColor=false
[2011-09-30 18:14:58:768 GMT+00:00][237D3B5A5F197F81A405858E6A5AA0WD.http-8080-11][com.fff.filter] DEBUG redColor=true blueColor=false
[2011-09-30 18:14:58:768 GMT+00:00][137D3B5A5F196F81A405858E6A5AA01F.http-8080-11][com.xyz.wrapper] DEBUG redColor=false blueColor=true
[2011-09-30 18:14:58:768 GMT+00:00][337D3B5A5F198F81A405858E6A5AA0GW.http-8080-11][com.xyz.wrapper] DEBUG redColor=false blueColor=true

在上面的日志中,我必须获取所有不同的用户,然后对于每个用户,我需要获取他们的会话 ID,并且他们在包含 DEBUG 的行中匹配它并检查 redColor=true 与否。

因此,在上述情况下,输出应为:

红色的用户数 = 1(注:237D3B5A5F198F81A405858E6A5AA09F 不匹配任何内容,因此即使它的红色标志为真也不计算在内)蓝色的用户数 = 2

这在 splunk 中可能吗?

4

1 回答 1

0

首先,您是否为 sessionid 提取了一个字段?在下面的示例中,我假设它可用

sourcetype=yoursourcetype | transaction sessionid | search debug  
| eval redCount = if(isnull(mvfind(redColor,"true")), 0, 1)   
| eval blueCount = if(isnull(mvfind(blueColor,"true")), 0, 1)   
| search redCount > 0 OR blueCount > 0  
| stats avg(redCount) avg(blueCount) by userid   
| stats sum(redCount) as red sum(blueCount) as blue dc(userid) as totalUsers   
| fields + totalUsers red blue

我建议您先尝试搜索的第一行。如果可行,请运行前 2 行,然后运行 ​​3 行,等等。我设置了这样您就可以通过这种方式对其进行测试。此外,将 yoursourcetype 替换为适当的数据源类型。

于 2012-01-18T10:01:24.993 回答