Мониторинг сетевой активности Linux с помощью vnStat.

Повседневные будни Linux администраторов не ограничиваются исключительно разворачиванием новых программных и аппаратных комплексов. Абсолютное большинство времени тратится на поддержание инфраструктуры, а это возможно только при четком понимании процессов, происходящих в инфраструктуре. Подобное понимание дают нам мощные системы мониторинга, например Zabbix. Но иногда на месте нужно получить оперативную информацию по определенному виду ресурсов. Тогда на помощь спешат маленькие, легкие, но мощные утилиты диагностики. Каждая из этих утилит готова поделиться сокровенной информацией о текущем состоянии системы и ее узких местах. Недавно я писал об одной из них, позволяющей следить за состоянием MySQL, именуемой mytop. Сегодня я расскажу об утилите vnStat, которая отлично справляется с мониторингом сетевой активности.

vnStat получает данные из ядра Linux, т.е. не снифит поток, благодаря чему работает очень шустро и не вызывает вопросов к безопасности. Также она отлично делает свое дело без root привилегий.

Утилита считает трафик для каждого интерфейса отдельно, разделяя входящий и исходящий. Умеет строить наглядные отчеты с графиками нагрузки. Уровни детализации этих графиков: месяц, неделя, день, час. Также всегда можно посмотреть текущую активность в сети.

vmStat работает на всех *nix системах, но традиционно я расскажу про установку, настройку и использование на примере Debian.

Утилита имеется в наличии в стандартном репозитории Debian, так что поставить ее можно простой командой:

1
sudo apt-get install vnstat

Если в нашей системе более одного сетевого интерфейса, в момент установки система сообщит, что сервис vnStat не смог запуститься.

Без паники, достаточно определить, какие интерфейсы нужно мониторить и запустить команду:

1
vnstat -u -i eth0

где eth0 — тот самый интерфейс. Сразу после установки мы можем запустить vnStat.

1
2
~# vnstat
 eth0: Not enough data available yet.

Выданная ошибка по сути ошибкой не является, просто система говорит, что данных нет. Достаточно подождать какое-то время, а пока данные копятся, можем посмотреть, что происходит с сетевым интерфейсом в режиме онлайн:

1
vnstat -l

Итак, пока мы смотрели за активностью интерфейса, данные для старта наверно уже накопились, так что повторим запуск vnStat без параметров:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
~# vnstat
Database updated: Wed Mar 25 19:28:52 2015
 
eth0 since 03/25/15
 
rx: 36.86 MiB tx: 170.42 MiB total: 207.28 MiB
 
monthly
rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
Mar '15 36.86 MiB | 170.42 MiB | 207.28 MiB | 0.79 kbit/s
------------------------+-------------+-------------+---------------
estimated 44 MiB | 212 MiB | 256 MiB |
 
daily
rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
today 36.86 MiB | 170.42 MiB | 207.28 MiB | 24.21 kbit/s
------------------------+-------------+-------------+---------------
estimated 44 MiB | 209 MiB | 253 MiB |

На выходе нам вернулась таблица, в которой отражена активность за последний день и месяц.

Теперь посмотрим отчеты по часам, неделям и месяцам.

Статистику по часам отобразим командой:

1
vnstat -h -i eht0

Мы получили удобный для чтения график с активностью по часам за последние сутки.

Утилита с ключом -m даст нам представление о активности по месяцам.

1
vnstat -m -i eth0

Статистику по неделям можно получить с помощью ключа -w

1
vnstat -w -i eth0

Отчет по дням получим, указав ключ -d

1
vnstat -d -i eth0

Ключ -t поможет получить топ 10 дней по объему трафика.

Сбросить статистику можно ключом -r.

Получить общую статистику по нескольким интерфейсам мы можем, указав имена интерфейсов через знак +. Например:

1
vnstat -i eth0+eth1

Также vnStat умеет выгружать данные в xml.

1
vnstat -i eth0 --xml

На этом все, спасибо за внимание.


Смотрите также

comments powered by Disqus