В данной заметке я рассмотрю такую утилиту для Ubuntu 12.04.4 Desktop amd64 с помощью, которой можно мониторить сетевой траффик на интерфейсах системы, а статистику смотреть, используя, как командную строку, так и Web-ориентированное представление. Это нужно для того чтобы понимать, как мы задействуем сеть и сколько трафика через интерфейс проходит. Если у вас так же как и у меня выделенная машина занимается предоставлением удаленного доступа в домашнюю систему, то для себя это будет крайне интересно и познавательно. Но довольно лирики, переходим к практическому описанию:
Система обновлена до последнего релиза по заметке:
ekzorchik@udesktop:~$ uname -a && lsb_release -a
Linux udesktop 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.4 LTS
Release: 12.04
Codename: precise
Производим настройки хоста:
ekzorchik@udesktop:~$ sudo nano /etc/hosts
192.168.1.34 udesktop udesktop.polygon.local
ekzorchik@udesktop:~$ sudo nano /etc/hostname
udesktop
Перечитываем настройки хоста:
ekzorchik@udesktop:~$ sudo /etc/init.d/networking restart
ekzorchik@udesktop:~$ hostname -f
udesktop
Далее в основе этой заметке будет консольная утилита – vnstat:
ekzorchik@udesktop:~$ apt-cache search vnstat
vnstat – console-based network traffic monitor
Устанавливаем консольную утилиту — vnstat:
ekzorchik@udesktop:~$ sudo apt-get install vnstat
Далее запускаем сервис, который создаст базу для сетевых интерфейсов в системе:
ekzorchik@udesktop:~$ sudo service vnstat start
За настройку демона отвечает конфигурационный файл: (включаем логирование в файл):
ekzorchik@udesktop:~$ sudo nano /etc/vnstat.conf
UseFileLocking 1
# enable / disable logging (0 = disabled, 1 = logfile, 2 = syslog)
UseLogging 1
# file used for logging if UseLogging is set to 1
LogFile "/var/log/vnstat.log"
ekzorchik@udesktop:~$ sudo service vnstat restart
Проверяем, пишутся ли логи работы демона:
ekzorchik@udesktop:~$ sudo tail -f /var/log/vnstat.log
[2014.04.07 20:34:06] vnStat daemon 1.11 started.
[2014.04.07 20:34:06] Daemon running with pid 2789.
[2014.04.07 20:34:06] Monitoring: eth1
Отобразить доступные интерфейсы в системе:
ekzorchik@udesktop:~$ sudo vnstat --iflist
Available interfaces: lo eth1
Для ведения лога необходимо сначала создать базу данных нужного интерфейса. К примеру, для eth1:
ekzorchik@udesktop:~$ sudo vnstat -u -i eth1
Теперь уже происходит мониторинг за трафиком.
По обзору что и как можно просмотреть посредством консоли советую дабы не повторяться здесь обратиться к заметке применительно описанной для CentOS 6.5
Отлично, с консольным использованием выше все более или менее понятно, но как я сказал, в самом начале заметки к удобному просмотру статистических данных можно настроить Web-ориентированное представление на основе интерфейса из PHP файлов которые обеспечивают работу графического интерфейса.
Устанавливаем в систему Web сервер Apache:
ekzorchik@udesktop:~$ sudo apt-get install apache2 -y
ekzorchik@udesktop:~$ sudo nano /etc/apache2/apache2.conf
ServerName udesktop
Скачиваем vnstat php frontend:
ekzorchik@udesktop:~$ wget -c http://www.sqweek.com/sqweek/files/vnstat_php_frontend-1.5.1.tar.gz
Распаковываю скачанный архив:
ekzorchik@udesktop:~$ tar xvfz vnstat_php_frontend-1.5.1.tar.gz
Перемещаем распакованный архив в каталог /var/www/vnstat:
ekzorchik@udesktop:~$ sudo mkdir -p /var/www/vnstat
ekzorchik@udesktop:~$ sudo mv vnstat_php_frontend-1.5.1/* /var/www/vnstat/
Переходим к редактированию конфигурационного файла config.php:
ekzorchik@udesktop:~$ sudo nano /var/www/vnstat/config.php
И приводим параметры к таким значениям:
$locale = 'en_US.UTF-8';
Статистика отображения берется на основании файлов из каталога /var/www/html/vnstat/lang, но если нужно можно создать свой, поменяв перевод на нужный язык:
$language = 'en';
Комментируем или удаляем, если не используем IPv6:
// $iface_title['sixxs'] = 'SixXS IPv6';
$iface_list = array('eth1');
Сохраняем внесенные изменения в файле.
Теперь создаем дампы для интерфейсов (а):
ekzorchik@udesktop:~$ sudo -s
root@udesktop:~# vnstat --dumpdb -i eth1 > /var/www/vnstat/dumps/vnstat_dump_eth1
root@udesktop:~# exit
exit
Перезапускаем Web-сервис Apache:
ekzorchik@udesktop:~$ sudo service apache2 restart
Далее открываем браузер и в строке адреса указываем, либо FQDN/IP системы с префиксом vnstat для отображения сетевой статистики:
К примеру, у меня: http://192.168.1.34/vnstat
, но как видно страница со статистикой не отобразилась, потому как Web-сервер Apache еще пока не может работать с контентом файлов с расширением “phtml”, исправим это дело:
ekzorchik@udesktop:~$ sudo apt-cache search libapache2-mod-php5
libapache2-mod-php5 – server-side, HTML-embedded scripting language (Apache 2 module)
ekzorchik@udesktop:~$ sudo apt-get install libapache2-mod-php5 -y
Теперь обновив состояние вкладки в браузере увидем статистику по сетевому интерфейсу “eth1” в наглядном виде по сравнению с консольным представлением:
Как видно статистика по использованию наполняется, но хорошо бы было бы закрыть доступ, к данной статистики средствами стандартной apache авторизации и дополнительно ограничим просмотр только с опеределенного адреса в сети (для этого применим директиву Satisfy):
ekzorchik@udesktop:~$ sudo nano /etc/apache2/sites-available/vnstat.conf
Alias /vnstat/ "/var/www/vnstat/"
<Directory "/var/www/vnstat/">
AuthType Basic
AuthName "Private zone network statictics"
AuthUserFile /var/www/vnstat/.htpasswd
Require valid-user
Order allow,deny
Allow from 192.168.1.33
Satisfy all
</Directory>
Сохраняем внесенные изменения в файле
Для справки:
Директива Satisfy определяет способ взаимодействия директив идентификации с директивами доступа.
Satisfy Any → пропускает запрос, если выполнено любое из требований (идентификация или проверка доступа)
Satisfy All → пропускает запрос, только если оба требования выполнены (и идентификация и проверка доступа)
Проверяем, что внесенные изменения в конфиг корректны:
ekzorchik@udesktop:~$ sudo apachectl graceful
Должно быть без ошибок, у меня ошибок нет.
Создаем пользователя для авторизации в приватной области:
ekzorchik@udesktop:~$ sudo htpasswd -c /var/www/vnstat/.htpasswd ekzorchik
New password: 712mbddr@
Re-type new password: 712mbddr@
Adding password for user ekzorchik
Включаем виртуальный хост:
ekzorchik@udesktop:~$ sudo a2ensite vnstat.conf
Enabling site vnstat.conf.
To activate the new configuration, you need to run:
service apache2 reload
Чтобы изменения применились нужно, чтобы демон apache перечил конфиги:
ekzorchik@udesktop:~$ sudo service apache2 reload
Правильно выставляем права на каталог vnstat:
ekzorchik@udesktop:~$ sudo chown -R www-data:www-data /var/www/vnstat/
Теперь при обращении к URL: http://192.168.1.34/vnstat, чтобы получить доступ к статистике нужно указать логин и пароль и IP адрес системы должен заканчиваться на октет 34, если это не так, то результат обращения по этому URL будет следующим:
Теперь обращаемся с адреса 192.168.1.33 и указываем аутентификационные данные:
User name: ekzorchik
Password: 712mbddr@
Статистика отобразится.
Чтобы удалить ссылку в подвале подсчета статистики:
ekzorchik@udesktop:~$ sudo nano /var/www/vnstat/index.php
удаляем строку 192 (клавиатурное сочетание: Ctrl + K)
Сохраняем внесенные изменения.
Вот собственно и всё по данной заметке и практических шагам для установки, настройки и некоторых нюансов, возникающих в работе. Конечно же, возможности данной утилиты vnstat огромны, прочитав справку и немного разобравшись в скриптах можно сотворить многое, если я в последствии и буду это делать, то конечно же новая заметка найдет отражение на моем блоге. А пока удачи и с уважением ekzorchik.