|
| ||||||||||||
| ||||||||||||
|
2007 г.
Мониторинг загрузки канала интернет-шлюза на FreeBSDВ этой небольшой статье я постараюсь описать простой и часто необходимый способ постороения графиков загрузки интернет-канала (общий график, график www, график pop3, график smtp). Это может быть полезно системным администраторам для того, чтобы они знали, в какое время их офис потребляет много интернета, забита ли их полоса пропускания постоянно или только перед обедом, на что именно расходуется полоса пропускания канала – на просмотр сайтов (тогда, возможно, кто-то качает всякую фигню), на получение почты (тогда, возможно, надо рассмотреть вопрос настройки собственного почтового сервера), на отправку писем (возможно, какой-либо компьютер заражен вирусом и рассылает спам). Применений этому может быть множество. Итак, приступим. Требованияrrdtool - установка и настройка см. http://bozza.ru/?c=230&p=content и http://bozza.ru/?c=231&p=content (англ.) брандмауэр на шлюзе – в нашем случае рассмотрим ipfw в составе ОС FreeBSD. В общем случае подойдет любая система, которая может считать пакеты и отдавать их значения нашим скриптам. apache – веб-сервер для просмотра сгенерированных изображений. Впрочем, это не обязательно, нам главное сгенерировать изображение, а что с ним делать – решать вам. Будем считать, что rrdtool установлена, apache – тоже, брандмауэр, полагаю, был всегда, так что самое время описать работу нашей схемы. БрандмауэрИтак, нам необходимо четыре правила брандмауэра, которые будут считать трафик www (входящий), pop3 (входящий), smtp (исходящий) и общий входящий. Вот они: pif="xl0" # внешний интерфейс cmd="ipfw -q add" # Count # Out mail $cmd 0010 count tcp from any to any 25 out via $pif # In mail $cmd 0011 count tcp from any 110 to any in via $pif # WWW $cmd 0012 count tcp from any 80,443 to any in via $pif # ALL $cmd 0013 count all from any to any in via $pif Первые две строки – объявления макросов, остальные – понятно, считают соответствующий трафик. После включения этих правил проверим, считают ли они трафик, идущий через шлюз. freebsd-host# ipfw show 13 Выдает нам нечто похожее: Нас будет интересовать третья цифра – 109248471 – количество байт, сосчитанное правилом 13, которое в нашем случае считает общий входящий трафик. rrdtoolСчитаем rrdtool установленным и, желательно, проверенным хотя бы на тестовом примере, который весьма неплохо описан на странице http://bozza.ru/?c=231&p=content. Не поленитесь, просмотрите эту статью, несмотря на то, что она на английском. Я не могу сказать про себя, что английский знаю даже средне, но мне там все было понятно. СкриптыНам будут необходимы следующи скрипты:
Сразу приведу их содержимое: network_usage_create.sh #!/bin/sh network_usage.sh #!/bin/sh network_usage_graph2.sh #!/bin/sh network_usage_update_rrdtool.sh #!/bin/sh Описывать подробно я не буду, так как здесь проще действовать, щупая все руками. На мой взгляд, в таких скриптах проще разобраться, если пробовать менять значения в них, перезапускать и смотреть, что поменялось. Порядок работыnetwork_usage_create.sh Значит, создаем базу rrdtool, запуская скрипт network_usage_create.sh. Проверяем, появился ли файл /var/rrdtool/db/network_usage.rrd. Если появился, переходим к следующему шагу. Если нет, то проверяем пути запуска rrdtool (возможно, у вас rrdtool запускается не такой командой /usr/local/bin/rrdtool, а как-нибудь иначе). В любом случае, пока база rrdtool не будет создана, дальше идти нельзя. network_usage.sh Здесь все просто, запускаем скрипт раз в пять минут и особо с ним проблем не должно быть. network_usage_graph2.sh Позволю себе небольшой коментарий макросов: WWWPREFIX=/var/www/rrdtool/images – путь до директории, где будет храниться картинка network.png. Отредактируйте этот путь в соответствии с вашим веб-сервером apache или любым другим. RRDPREFIX=/var/rrdtool/db – путь до директории, где лежит база данных rrdtool. Наш скрипт отображает загрузку канала за последние 12 часов: Данный скрипт необходимо запускать раз в пять минут. network_usage_update_rrdtool.sh Для простоты дела, дабы не запускать network_usage.sh и network_usage_graph2.sh раз в пять минут по отдельности, можно запускать раз в пять минут этот скрипт. Еще лучеш поместить его в cron: # crontab –e */5 * * * * /var/rrdtool/script/network_usage_update_rrdtool.sh ЗаключениеВот, собственно и все. До помещения чего-либо в cron, лучше проверить в ручном режиме. Разумеется, многое из того, что я описал, я взял из примеров, разбросанных по сети, многое отредактировал сам. Надеюсь, статья будет полезна многим. С уважением, BOZZA.RU Обсуждение статьи ведется на сайте OpenNET.ru. |
|
CITForum © 1997–2025