Назад | Перейти на главную страницу

Индексирование отдельных файлов cookie с помощью Logstash

Я работаю над анализом логов Apache. Наши журналы собирают файлы cookie, которые браузер передает, и мы записываем их вместе с запросом. Прямо сейчас я могу импортировать эту длинную строку в порядке, однако мне интересно, есть ли способ иметь массив переменной длины для каждой строки, который позволяет мне искать или выполнять согласования для отдельных файлов cookie.

Итак, на основе этой строки сообщения

"message" => "x.x.x.x - - [30/Oct/2014:20:05:01 -0400] \"GET /js/plugins/backbone/backbone.modelbinding.min.js HTTP/1.1\" 304 - \"https://www.website.com/view/home\" \"Mozilla/4.0 ( compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E; .NET CLR 3.5.30729; .NET CLR 3.0.30729)\" \"AUSERID=5286; SERVICEID=08130xx; JSESSIONID=xxxx; AgencyUserSession=xxxx; _ga=GA1.2.xxx; __utma=xxx ;" + 304/304 1146/213/0 29420/47188900045680 0/5011 -/-/- \"x.x.x.x|-|-|x.x.x.x\"",

Я могу разобрать файл cookie и полностью поместить его в собственное поле. Однако есть ли способ разбить пары ключ / значение и сохранить их в массиве, связанном с записью строки журнала?

["auserid" = "5286", "serviceid" = "08130xx" и т. д.

Спасибо.

Вы можете использовать logstash кв фильтр для анализа файлов cookie.

Если у вас есть поле cookie это продолжение "AUSERID=5286; SERVICEID=08130xx; JSESSIONID=xxxx; AgencyUserSession=xxxx; _ga=GA1.2.xxx; __utma=xxx;"

вы можете написать в своем logstash.conf что-то вроде:

kv {
    source => "cookie"
    prefix => "cookie_"
    trim => ";"
}

Это даст вам поля:

cookie_AUSERID => 5286
cookie_SERVICEID => 08130xx
...

Но я предпочитаю явно указывать файлы cookie, которые я хочу преобразовать в поля (некоторые системы создают много файлов cookie, которые для меня не имеют значения, они только загрязняют журналы):

kv {
    source => "cookie"
    prefix => "cookie_"
    trim => ";"
    include_keys => [ "AUSERID", "SERVICEID" ]
}