up
ГлавнаяБлогБезопасностьЖелезоПрограммированиеАдминистрирование
CentOSCPUDebianHDDRAMPerlBashPHPMySQLFreeBSDLinuxBenchmarkSSDHTML

Популярные статьи
Категория “Администрирование

Подсчет трафика по доменам

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

Дле решения этой задачи нам понадобится отредактировать слегка конфиг веб-сервера nginx, и выполнить выборку из лога данных.

Открываем конфиг /etc/nginx/nginx.conf, ищем там "log_format  main" и добавляем [$host]. У меня получился следующий формат:

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" [$host] $request_time';

Ниже должна быть строка, указывающая на запись в лог-файл:

access_log  /var/log/nginx/access.log main;

Все другие access_log удаляем комментируем. И перезапускам веб-сервер:

service nginx restart
 
Далее нам нужно сделать выборку из лога. Не буду расписывать что к чему, предоставляю готовый вариант:
grep 'server_name ' /etc/nginx/nginx.conf | awk '{print $2}' | sed -e 's/;//' | while read domain
do
    tail -10000 /var/log/nginx/access.log | grep $domain | awk -F\" '{print $3 $9}' | awk '{print $3" "$2}' | awk '{ sum+=$2 } END { printf ($1" %d%s\n", sum/1024/1024, " MB") }'
 
done | grep -v '0 MB'

 

Для небольших лог-файлов можно заменить tail -10000, делающий выборку последних 10 тыс. строк, на cat, чтобы прочесть весь файл.
Пример вывода трафика по доменам
Thursday, 16 October 2014, 01:11Прочитано 36 раз
Ссылка на страницу:

comments powered by Disqus

Чаще всего ищут

Статистика блога
Статтей: 177
Безопасность: 9
Железо: 19
Программирование: 14
Администрирование: 134