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

уникальные посетители на нескольких серверах

У меня есть журналы доступа apache нескольких серверов (несколько серверов обслуживают один домен). Какой самый простой способ подсчитать количество уникальных посетителей за определенный период. Я использую Linux, поэтому решение среды Linux предпочтительнее

Я не хочу сейчас устанавливать AWStats только для того, чтобы получить данные. Или это действительно самый простой способ?

Трудно отслеживать уникальных посетителей с помощью журналов доступа Apache, но если вам нужна быстрая грубая оценка, которую вы можете сделать с помощью оболочки, я использовал и протестировал следующее.

Итак, за 3 дня ноября, по данным аналитики, на мой сайт было 1586 уникальных посетителей.

Этот кусок ракушки дает мне 1402 посетителя, что не за горами, учитывая все обстоятельства. В итоге, бревна трудно пройти, но это грубо и относительно быстро.

Это работает только с комбинированным форматом Apache, вам нужно изменить его, если это не то, над чем вы работаете

Я отформатировал его здесь на несколько строк, чтобы лучше объяснить.

awk -F'"' '{print $1,$6}' < log | \
    sed -e 's/\[\([0-9]\+\/[A-Za-z]\+\/[0-9]\+\).*\]/\1/' | \
    awk '{print $4, $0}' | \
    sort | uniq | \
    awk '{print $1}' | \
    uniq -c

СТРОКА 1: печатает IP-адрес, метку времени и пользовательский агент клиента из журнала доступа.

СТРОКА 2: удалите временную часть метки времени, чтобы мы могли сгруппировать строки по дате

СТРОКА 3: переместите дату в начало строки, чтобы мы могли отсортировать по дате (это не обязательно для одного файла журнала, но вы можете изменить сценарий, чтобы использовать несколько файлов и сортировать по дате, здесь это помогает)

СТРОКА 4: сортировка | uniq в основном сортирует все строки и удаляет дубликаты (то есть несколько обращений с одного IP-адреса в один и тот же день с одним и тем же пользовательским агентом теперь засчитываются как 1 попадание - это волшебство)

СТРОКА 5: Распечатать только дату

СТРОКА 6: Используйте функцию подсчета uniq, чтобы сгруппировать эти строки по дате и сообщить нам, сколько в ней строк

Пример вывода:

538 16/Nov/2009
559 17/Nov/2009
305 18/Nov/2009

Это очень грубо, но легко, быстро и легко объединить несколько файлов журналов.

Вы не можете определить фактических уникальных посетителей-людей из журнала доступа. Если вы хотите сделать предположение, что каждый уникальный IP-адрес клиента является уникальным посетителем, вы можете просто заполнить все журналы за период времени, который вы хотите пройти. cut -d ' ' -f 1 |sort -u |wc -l (при условии стандартного формата журнала, в котором IP-адрес клиента является первым полем). При этом не учитываются мониторинг, пауки, NAT, прокси-серверы или динамические IP-адреса, но вы не можете добиться большего, не затрачивая (намного) больше времени, чем на настройку awstats.