Анализаторы журнала веб-сервера (например, Urchin) часто отображают несколько «сеансов».Сеанс определяется как серия посещений / кликов страниц, выполненных отдельным лицом в течение ограниченного непрерывного отрезка времени.Предпринята попытка идентифицировать эти сегменты с использованием IP-адресов и часто дополнительной информации, такой как пользовательский агент и ОС, а также порогового значения времени ожидания сеанса, например 15 или 30 минут.
Для определенных веб-сайтов и приложений пользовательможет быть авторизован и / или отслежен с помощью cookie, что означает, что сервер может точно знать, когда начинается сеанс.Я говорю не об этом, а об эвристическом выводе сессий (" реконструкция сессий "), когда веб-сервер их не отслеживает.
Я мог бы написать некоторый код, например, на Python, чтобы попытатьсяреконструировать сеансы на основе вышеупомянутых критериев, но я бы не стал изобретать велосипед.Я просматриваю файлы журналов размером около 400 тыс. Строк, поэтому я должен быть осторожен в использовании масштабируемого алгоритма.
Моя цель - извлечь список уникальных IP-адресов из файла журнала.и для каждого IP-адреса - количество сеансов, выведенных из этого журнала.Абсолютная точность и точность не нужны ... довольно хорошие оценки в порядке.
На основании этого описания :
новый запрос помещен всуществующий сеанс, если выполняются два условия:
- IP-адрес и пользовательский агент совпадают с запросами, уже вставленными в сеанс
, - запрос выполненменее чем через пятнадцать минут после последнего вставленного запроса.
теоретически было бы просто написать программу на Python для создания словаря (с ключом по IP) словарей (по ключу пользователя).агент), значение которого равно паре: (количество сеансов, последний запрос последнего сеанса).
Но я бы предпочел использовать существующую реализацию, если она доступна, так как в противном случае я мог бы рискнуть потратить много временинастройка производительности.
К вашему сведению, чтобы кто-то не спросил пример ввода, вот строка нашего файла журнала (санированная):
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status
2010-09-21 23:59:59 215.51.1.119 GET /graphics/foo.gif - 80 - 128.123.114.141 Mozilla/5.0+(Windows;+U;+Windows+NT+5.1;+en-US;+rv:1.9.2)+Gecko/20100115+Firefox/3.6+(.NET+CLR+3.5.30729) http://www.mysite.org/blarg.htm 200 0 0