Сколько ваша машинка, стоящая на линуксе, использует трафика в месяц? Вы никогда не задавались таким вопросом? Всё просто, есть же простые консольные утилиты, которые просто покажут статистику. А если… Построить график и статистику использования? Уже лучше? Тогда поехали!

Устанавливаем VnStat:
# aptitude update && aptitude install vnstat
Для RedHat производных систем:
# yum install vnstat
Всё, vnstat установлен, можно посмотреть, что он делает. По умолчанию он является сучной, но досточно информативной графической утилитой. Обновляем интерфейсы и запускаем сам VnStat:
# vnstat -u -i eth1
# vnstat -u -i eth0
# vnstat
После, увидим что-то вроде этого:
[root@server ~]# vnstat
rx / tx / total / estimated
eth0:
Nov '11 35.71 GiB / 9.26 GiB / 44.97 GiB / 49.10 GiB
yesterday 3.41 GiB / 432.40 MiB / 3.83 GiB
today 4.32 GiB / 1.75 GiB / 6.07 GiB / 12.79 GiB
eth1:
Nov '11 670.68 MiB / 2.56 GiB / 3.21 GiB / 3.50 GiB
11/24/11 9.77 MiB / 49.34 MiB / 59.10 MiB
today 0 KiB / 0 KiB / 0 KiB / --
Достаточно информативно, но мы же не за этим сюда пришли, да? Не буду объяснять смысл вводимых ключей, их всегда можно посмотреть при помощи man или vnstat –help. Само собой разумеется, что у нас должен быть установленный и настроенный вебсервер, что бы установить vnStat PHP frontend. Будем считать, что он уже есть и переходим в каталог с будущим скриптом. У меня это /home/vnstat/ 🙂
# mkdir /home/vnstat/www
создаем VirtualHost у вашего вебсервера, можно и в корень вебсервера скрипты залить, можно просто папкой, дело вкуса, как говорится. Загружаем скрипты:
# wget http://www.sqweek.com/sqweek/files/vnstat_php_frontend-1.5.1.tar.gz
Распаковываем скрипты:
# tar xvfz vnstat_php_frontend-1.5.1.tar.gz
# cp -r vnstat_php_frontend-1.5.1 vnstat
# cd vnstat
Настраиваем конфиги скрипта:
# nano config.php
Нам понадобится пункт $data_dir, отвечающий за расположение файлов баз данных VnStat. Для того, что бы создать базу данных, узнаем, какие сетевые интерфейсы присутствуют у Вас в системе:
# ifconfig
На выходе получаем:
eth0 Link encap:Ethernet HWaddr 00:25:22:7c:24:3f
inet addr:10.0.0.44 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::225:22ff:fe7c:243f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:154390 errors:0 dropped:0 overruns:0 frame:0
TX packets:99387 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:146585928 (139.7 MiB) TX bytes:16879039 (16.0 MiB)
Interrupt:27 Base address:0xa000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:24992 errors:0 dropped:0 overruns:0 frame:0
TX packets:24992 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1260801 (1.2 MiB) TX bytes:1260801 (1.2 MiB)\
На данный момент нам нужен только eth0. Обновляем для него статистику, а после создаем БД:
# vnstat -u -i eth0
# vnstat –dumpdb -i eth0 > /var/lib/vnstat/dumps/vnstat_dump_eth0
И тем самым обновляем БД VnStat. Возвращаемся к нашему config.php и редактируем строчку $data_dir. /var/lib/vnstat/dumps/ является директорией, куда пишется БД.
$data_dir = ‘/var/lib/vnstat/dumps/’;
В принципе, уже можно посмотреть имеющиеся результаты, набрав в адресной строке браузера адрес хоста. Теперь, когда мы убедились, что всё работает, мы автоматизируем обновление БД с помощью crontab:
# cronab -e
# */10 * * * * sudo vnstat -u -i eth0
# */10 * * * * sudo vnstat –dumpdb -i eth0 > /var/lib/vnstat/dumps/vnstat_dump_eth0
Далее, скрипт можно русифицировать ) Создадим новый файл с именем ru.php:
# nano /<ServerRoot>/<vnstat>/lang/ru.php
И вставляем туда код:
<?php
// sidebar labels
$L['summary'] = 'Итог';
$L['hours'] = 'Часы';
$L['days'] = 'Дни';
$L['months'] = 'Месяцы';
// main table headers
$L['Summary'] = 'Итог';
$L['Top 10 days'] = 'Топ-10 нагрузки (дни)';
$L['Last 24 hours'] = 'За последние 24 часа';
$L['Last 30 days'] = 'За последние 30 дней';
$L['Last 12 months'] = 'За последние 12 месяцев';
// traffic table columns
$L['In'] = 'Входящий';
$L['Out'] = 'Исходящий';
$L['Total'] = 'Всего';
// summary rows
$L['This hour'] = 'За этот день';
$L['This day'] = 'За этот час';
$L['This month'] = 'За этот месяц';
$L['All time'] = 'За всё время';
// graph text
$L['Traffic data for'] = 'Информация о передаче данных';
$L['bytes in'] = 'Байт принято';
$L['bytes out'] = 'Байт отправлено';
// date formats
$L['datefmt_days'] = '%d %B';
$L['datefmt_days_img'] = '%d';
$L['datefmt_months'] = '%B %Y';
$L['datefmt_months_img'] = '%b';
$L['datefmt_hours'] = '%l%P';
$L['datefmt_hours_img'] = '%l';
$L['datefmt_top'] = '%d %B %Y';
После отредактируем config.php и приводим переменную $language к виду:
$language = ‘ru’;
Всё, теперь почти всё готово. Бывает, что хочется скрыть от всех статистику. И в этом нам поможет .htaccess 🙂
Создаем в папке со скриптами vnstat файл .htaccess:
# nano .htaccess
Вставляем туда
AuthType Basic
AuthName admin
require valid-user
AuthUserFile //.htpasswd
далее создаем .htpasswd:
# nano .htpasswd
Генерируем логин и пароль с помощью сервиса http://www.htaccesstools.com/htpasswd-generator/
admin:$apr1$E44h.Q1S$k0m/9eqoT/RkFjy6xye4g.
Теперь пароль в .htpasswd хранится в зашифрованном виде 🙂
Recent Comments