Archive

Posts Tagged ‘trafic statistics for linux’

VnStat + vnStat PHP frontend: связка в коллекцию домашнему роутеру

November 28th, 2011 No comments

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

 

Устанавливаем 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 хранится в зашифрованном виде 🙂