Уже несколько раз пытался пытать Google своей проблемой, но ответа он мне так и не дал, поэтому прошу совета от опытного сообщества пользователей.
Есть сервер на Debian с apache 2.x, на нем около 20 virtualhost-ов. Для каждого виртуалхоста свой пользователь, папка /home/user, сайт /home/user/public_html и свои логи в папке /home/user/logs.Хотелось бы получить статистику популярности этих хостов друг относительно друга.
Т.е. какой сайт чаще запрашивали, какой больше трафика съел, желательно в наглядном виде (например, pie chart). Подскажите кто знает - каким образом это можно реализовать? Перерыл весь инет, но так и не нашёл способа.
Везде предлагают awstats и webalizer, но это не то - они делают статистику по конкретному домену, а мне нужно именно сравнение, чтобы выявить сайты, которые дают наибольшую нагрузку на сервер (хотя бы по кол-ву запросов в access_log).
Наткнулся на более-менее подходящий пример статистики: http://people.apache.org/~vgritsenko/stats/daily.html раздел "Hosts Stats"Только я там не нашёл описания каким способом это реализовано. Кто знает какими средствами и как можно реализовать такую статистику или хотя бы просто получить эти данные в цифрах (а в график оформить можно уже самому)?
Как насчет однострочника или коротенького скрипта на перле? Пример привести не могу ибо неизвестно в каком формате у вас логи и в каком виде хотите получить результат. Общая идея в том, чтобы получить из stdin список директорий(или файлов, если у вас нет ротации) логов, и по каждому логу суммировать количество записей и объем в байтах. При желании можно и по ip сгруппировать дабы получить хиты.
>Как насчет однострочника или коротенького скрипта на перле? Пример привести не могу
>ибо неизвестно в каком формате у вас логи и в каком
>виде хотите получить результат. Общая идея в том, чтобы получить из
>stdin список директорий(или файлов, если у вас нет ротации) логов, и
>по каждому логу суммировать количество записей и объем в байтах. При
>желании можно и по ip сгруппировать дабы получить хиты.Коротенький скрипт с разбором логов написать можно, только ещё придется интерфейс визуализации этих данных писать.
Например, следующим образом можно примерно посчитать кол-во запросов:
- ищем все файлы access_log в папке home и подпапках
- вытаскиваем название виртуалхоста на основе папки
- считаем кол-во строк и приписываем к этому хосту
- пишем всё это в файл/базу и визуализируем.
Вот так:
#!/bin/sh
logfiles=`find /home -name "access_log" -print`
echo "queries vhost"
for lf in $logfiles ; do
nl=`cat $lf | wc -l`
echo "$nl $lf"
doneНо всё же хотелось бы что-нибудь уже готовое использовать с подстройкой под себя. Ведь не у меня одного наверно такая потребность есть, а у каждого админа сервера с несколькими сайтами.
Например, отобразить такую статистику по дням, по неделям, по часам, отсортировать по кол-ву запросов или по трафику, а для особо интересного виртуалхоста - посмотреть график загрузки в течение дня.
>Но всё же хотелось бы что-нибудь уже готовое использовать с подстройкой под
>себя.RRDTOOLS используйте для этого.
Пишите все данные туда, а от туда за любой период выводите своим скриптом красивые графики.