Получить уникальный счетчик путем совпадения частичной строки в журналах - PullRequest
0 голосов
/ 30 сентября 2011

Я хочу узнать, сколько пользователей имеют синие цвета и сколько из них имеют красный цвет для всех уникальных пользователей?

[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

В журнале выше я должен получить всех отдельных пользователей, а затемдля каждого пользователя мне нужно получить идентификатор его сессии, и они должны соответствовать ему в строке, содержащей DEBUG, и проверить, если redColor = true или нет.

Так, в вышеприведенном случае вывод должен быть:

Количество пользователей с красным цветом = 1 (Примечание: 237D3B5A5F198F81A405858E6A5AA09F не соответствует ни с чем, следовательно, не учитывается, даже если его красный флаг имеет значение true) Нет пользователей с синим цветом = 2

Возможно лив разгаре?

1 Ответ

0 голосов
/ 18 января 2012

Во-первых, вы извлекли поле для 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 и т. Д. Я настроил, чтобы вы могли проверить это таким образом. Кроме того, замените ваш тип источника на соответствующий тип источника ваших данных.

...