Настройка mrtg с помощью bsnmp
Рано или поздно каждый администратор сталкивается с задачей выяснения загруженности своего канала связи. Не важно для чего он используется – только для доступа в интернет или по нему идет связь с многочисленными филиалами по VPN. Имея инструмент, наглядно показывающий загрузку канала в реальном режиме времени, гораздо легче принять решение об урезании сетевого трафика тех или иных серверных программ. На моем сервере под управлением FreeBSD 7.2-RELEASE мною было принято решение использовать средство для формирования графиков загрузки сетевых подключений MRTG (Multi Router Traffic Grapher). На момент написания статьи это была версия mrtg-2.16.2. |
Во FreeBSD 7.2-RELEASE есть встроенный SNMP расширяемый демон bsnmpd. Он будет нам необходим для работы mrtg. Рассмотрим и внесем изменения в его конфигурационный файл по пути /etc/snmpd.config:
# nano -w /etc/snmpd.config location := "IT" # измените на номер любой комнаты или помещения contact := "some_user@your_domain.ru" # укажите тут ваш контактный e-mail system := 1 # FreeBSD - ваша система, оставьте без изменения traphost := localhost # демон будет слушать на localhost, или укажите необходимый IP сервера trapport := 162 # стандартный порт SNMP # Change this! read := "some_text" # укажите тут ключевую фразу (она понадобиться в дальнейшем) # Uncomment begemotSnmpdCommunityString.0.2 below that sets the community # string to enable write access. write := "mytrap" # т.к. демон будет работать на localhost, эту и следующую trap := "mytrap" # строчки оставьте без изменения
Остальные настройки можно не трогать.
Не забываем внести в наш /etc/rc.conf запись о разрешении запускать демон SNMP:
# nano -w /etc/rc.conf ... bsnmpd_enable="YES" ...
Произведем запуск демона SNMP и проверку его работы:
# /etc/rc.d/bsnmpd start # ps -A | grep bsnmpd 26767 ?? Ss 0:01,35 /usr/sbin/bsnmpd 28096 p0 S+ 0:00,00 grep bsnmpd # sockstat -4 | grep bsnmpd root bsnmpd 26767 3 udp4 127.0.0.1:50440 127.0.0.1:162 root bsnmpd 26767 5 udp4 *:* *:* root bsnmpd 26767 6 udp4 *:161 *:*
Если вывод работы этих команд у вас примерно такой же, то демон SNMP вы настроили и запустили правильно.
Теперь нам необходимо настроить и запустить mrtg.
# cd /usr/ports/net-mgmt/mrtg # make config # make install clean
Не забываем внести в наш /etc/rc.conf запись о разрешении запускать mrtg:
# nano -w /etc/rc.conf ... mrtg_daemon_enable="YES" ...
В составе пакета mrtg существует команда cfgmaker, которая при соответствующих флагах создаст конфигурационный файл mrtg.cfg. Но сперва нам необходимо создать несколько каталогов на нашем web-сервере, в котором будут храниться логи работы программы mrtg и где мы разместим простейшие html-файлы web-страницы, которые будут отображать нам сетевую статистику.
# mkdir /path_to_yuor_web-server/mrtg # mkdir /path_to_yuor_web-server/mrtg/img # chown -r www:www /path_to_yuor_web-server/mrtg # mkdir /var/log/mrtg
В папке, где расположены файлы нашего web-сервера мы создали подпапку mrtg, а в ней img для хранения картинок. Дали права для apache2 на доступ в эти папки. А заодно создали в каталоге системных логов подпапку mrtg, куда будут складываться логи работы программы.
Теперь нам необходимо дать команду на формирование конфигурационного файла mrtg.cfg:
# cfgmaker --ifref=ip --global 'WorkDir: /path_to_yuor_web-server/mrtg' --global 'LogDir: /var/log/mrtg' --global 'ImageDir: /path_to_yuor_web-server/mrtg/img' --global 'Language: russian1251' --global 'Options[_]: growright,bits' --output /usr/local/etc/mrtg/mrtg.cfg some_text@127.0.0.1
Разберем флаги данной команды:
- —ifref=ip – данный флаг создаст в конфигурационном файле ссылки на интерфейсы в виде их IP-адресов, а на просто пронумерует, как по-умолчанию (с флагом —ifref=nr);
- —global ‘WorkDir: /path_to_yuor_web-server/mrtg’ – укажем рабочий каталог для mrtg;
- —global ‘LogDir: /var/log/mrtg’ – укажем каталог для логов работы программы mrtg;
- —global ‘ImageDir: /path_to_yuor_web-server/mrtg/img’ – укажем каталог, где хранить картинки генерируемой mrtg web-страницы;
- —global ‘Language: russian1251’ – укажем язык генерируемой mrtg web-страницы;
- —output /usr/local/etc/mrtg/mrtg.cfg – вывод работы программы cfgmaker мы сохраняем в указанный файл;
- some_text@127.0.0.1 – и наконец указываем расположение работы демона bsnmpd, где some_text – фраза, указанная вами в конфигурационном файле настройки демона SNMP – /etc/snmpd.config (см.выше).
Просмотрите созданный в результате работы команды cfgmaker конфигурационный файл для mrtg:
# less /usr/local/etc/mrtg/mrtg.cfg
Вы увидите, что данная команда определила все ваши сетевые подключения, их IP-адреса, используемые сетевые карты, их MAC-адреса, скорости подключения. Если вам необходимо будет что-то добавить, по образу и подобию теперь будет легко это сделать.
Нам осталось сгенерировать на основе этого файла web-страницу. Делается это так:
# indexmaker /usr/local/etc/mrtg/mrtg.cfg > /path_to_yuor_web-server/mrtg/index.html
И собрать статистику. Я делаю это запуском команды mrtg через cron, которая собирает статистику каждые 5 минут.
# crontab -l MAILTO=user@yuor_domain.ru SHELL=/usr/local/bin/bash HOME=/var/log #minute hour mday month wday command */5 * * * * /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg --logging /var/log/mrtg/mrtg.log
А можно mrtg настроить, чтобы она выполнялась как демон и собирала статистику через указанное в конфигурационном файле время. Пример конфигурационного файла mrtg.cfg вы можете посмотреть по пути:
# less /usr/local/etc/mrtg/mrtg.cfg.sample
Теперь перейдите с помощью браузера на свой работающий web-сервер и посмотрите на результат вашей работы!
Пример работы mrtg вы можете увидеть по этой ссылке.
Все, удачи!