开发者

Get unique count by matchin partial string in logs

开发者 https://www.devze.com 2023-04-09 10:13 出处:网络
I want to find out how many users have blue colors & how many of them have red color for all unique users?

I want to find out how many users have blue colors & how many of them have red color for all unique users?

[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

In above log, I've to get all distinct users & then for each user, I need to get their session id & them match it within the line that contains the DEBUG & check if redColor=true or not.

So, in above case, the output should be:

No开发者_运维知识库 of users with red color = 1 (Note: 237D3B5A5F198F81A405858E6A5AA09F does not match with anything, hence not counted even though its red flag is true) No of users with blue color = 2

Is this possible within splunk?


First, have you extracted a field for sessionid? In my example below, I am assuming it is available

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

I'd suggest that you try just the first line of the search first. If that works, run the first 2 lines, then 3, etc. I set up so you could test it out that way. Also, replace yoursourcetype with the appropriate sourcetype of your data.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号