7 апр. 2009 г.

Считаем трафик на интерфейсах сервера

Дано:
Почтовый сервер на базе Ubuntu 8.10
Четыре сетевых интерфейса

Необходимо:
Считать трафик на каждом интерфейсе, вести статистику.

Решение:
vnstat - маленький консольный пакет, который считает трафик на указанных интерфейсах и не загружает систему. Статистика считается отдельно для каждого интерфейса, трафик по ip-адресам и портам не делится. Статистика выводится по запросу с детализацией по часам, дням, неделям и тд.

Хранится статистика в файлах в каталоге /var/lib/vnstat.
Занимает места мало - у меня за три дня работы 4кб для каждого интерфейса, итого 12кб для трех наблюдаемых интерфейсов.

Устанавливаем vnstat:
#apt-get install vnstat

Инициализируем базу данных для каждого необходимого интерфейса:
#vnstat -u -i eth0
#vnstat -u -i eth1
#vnstat -u -i eth2

Далее необходимо сказать vnstat запустить мониторинг интерфейса.
Это можно сделать путем ifdown/ifup для каждого интерфейса,
либо, если нет желания разрывать соединения выполнить для каждого:
#IFACE=eth${i}
#export IFACE
#/bin/sh -x /etc/network/if-up.d/vnstat

где ${i} порядковый номер интерфейса.

Все, мониторинг готов, теперь по прошествии нескольких минут можно смотреть статистику
#vnstat -q

3 комментария:

Murz комментирует...

А она только общий трафик считает или умеет разделять по направлениям (например, локалка, внутригородское кольцо и внешка). Хотелось бы как раз с разделением по направлениям считать, но что-то готового найти не удалось, восновном целые пакеты с кучей настроек, биллингом, mysql-базой и т.п.
А мне нужно всего лишь считать кто сколько накачал с этих подсетей за месяц.

GrayCat комментирует...

интересно, а где хранится информация и в каком объёме ?

Unknown комментирует...

Правильные вопросы задаете! На все ответил в тексте статьи. :)