Продолжая эпопею считалок и мониторилок сетевых интерфейсов и трафика, рассмотрим утилиту vnstat. Vnstat — консольная утилита для учета сетевого трафика. Сохраяет историю сетевого трафика для выбранных интерфейсов. Трафик считается отдельно для каждого интерфейса (как входящий, так и исходящий). Доступна различная детализация отчетов: час, день, неделя, месяц… Проект свежий и живой.
Выполняем установку:
# pkg install vnstat |
После установки утилита «любезно» предупредила, что необходимо внести значение основного сетевого интерфейса в конфигурацию. Ну а если нас заинтересует информация о утилите, необходимо посетить ресурс http://humdi.net/vnstat/, либо же воспользоваться справочной системой FreeBSD.
Начинаем попытки «подружиться» с утилитой. Для начала скопируем пример конфигурационного файла непосредственно в рабочий конфигурационный файл:
# cp /usr/local/etc/vnstat.conf.sample /usr/local/etc/vnstat.conf |
Следующим шагом редактируем /usr/local/etc/vnstat.conf, подстраивая его под свои нужды. Я же изменил только название интерфейса, на котором будем «слушать» трафик. Потом в конфигурационном файле находим опцию DatabaseDir, и согласно указанному значению, создаем базу данных (в моем частном случае это /var/db/vnstat, поскольку настройки по умолчанию этого параметра я не изменял) и прописываем права на эту папку.
# mkdir /var/db/vnstat # chown vnstat /var/db/vnstat |
Добавляем службу в автозапуск в rc.conf:
vnstat_enable=»YES» |
Теперь проинициализируем интерфейсы, для которых будем собирать статистику:
# vnstat -u -i tun0 Error: Unable to read database «/var/db/vnstat/tun0». Info: -> A new database has been created. # >vnstat -u -i re0 Error: Unable to read database «/var/db/vnstat/vlan8». Info: -> A new database has been created. |
Также, есть возможность воспользоваться vnStat PHP Frontend — написанный на PHP web-интерфейс для vnStat. Переходим в каталог /usr/local/www и скачиваем архив web-интерфейса:
https://github.com/bjd/vnstat-php-frontend
Скачиваем, распаковываем скачанный архив:
https://github.com/bjd/vnstat-php-frontend/archive/refs/heads/master.zip |
Потом переименовываем каталог с vnStat PHP Frontend в более «дружелюбное» название: vnstat
Правим конфигурационный файл web-интерфейса /usr/local/www/vnstat/config.php до следующего состояния:
# cat /usr/local/www/vnstat/config.php
<?php |
Создадим каталог для дампа:
# mkdir /usr/local/www/vnstat/dumps |
Потом добавлем в cron следующие строки:
*/5 * * * * root /usr/local/bin/vnstat --dumpdb -i vlan8 > /usr/local/www/vnstat/dumps/vnstat_dump_vlan8
*/5 * * * * root /usr/local/bin/vnstat --dumpdb -i tun0 > /usr/local/www/vnstat/dumps/vnstat_dump_tun0
После измнений перестартовываем cron:
# killall -1 cron |
Далее добавляем в конфигурационный блок Apache следующий блок:
Alias /vnstat/ "/usr/local/www/vnstat/" <Directory "/usr/local/www/vnstat/"> Options none AllowOverride All Order Allow,Deny Allow from all </Directory> |
После внесения изменений, необходимо перезапустить Apache:
# apachectl graceful |
Несколько скриншотов:
Смотрим вывод команды vnstatd и запускаем vnstat в режиме служб
root@ws1:/ # vnstatd vnStat daemon 2.6 by Teemu Toivola <tst at iki dot fi> -d, --daemon fork process to background -n, --nodaemon stay in foreground attached to the terminal -s, --sync sync interface counters on first update -D, --debug show additional debug and disable daemon -?, --help show this help -v, --version show version -p, --pidfile <file> select used pid file -u, --user <user> set daemon process user -g, --group <group> set daemon process group --config <config file> select used config file --noadd don't add found interfaces if no dbs are found --alwaysadd always add new interfaces even when some dbs exist See also "man vnstatd". root@ws1:/ # vnstatd -d --config /usr/local/etc/vnstat.conf No interfaces found in database, adding available interfaces... Interface "vtnet0" added with 1000 Mbit bandwidth limit. Interface "pflog0" added with 1000 Mbit bandwidth limit. -> 2 new interfaces found. Limits can be modified using the configuration file. See "man vnstat.conf". Unwanted interfaces can be removed from monitoring with "vnstat --remove". root@ws1:/ #
При попытке посмотреть вывод vnstat, получаем ошибку о недостаточности данных
root@ws1:/ # vnstat rx / tx / total / estimated pflog0: Not enough data available yet. vtnet0: Not enough data available yet. root@ws1:/ #
Проверяем работает ли vnstat
Смотрим вывод спустя минут 10
Добавляем задание в планировщик CRON на запуск каждые 5 минут.
Проверяем изменения в cron
Вывод справки vnStat
Несколько примеров вывода vnstat:
Вывод статистики vnStat по часам в графическом виде
Вывод статистики в реальном времени
Вывод статистики vnStat за последние 5 минут
Просмотр статистики на интерфейсе vtnet0 за день