Главный Каталог Статей РФ
85990 авторов, размещено 47108 статей, сейчас на сайте пользователей: 143 Статистика
Аватар billybons2006

Мониторинг загрузки канала интернет-шлюза на FreeBSD

Категория:  ПО и игры  | Автор:  billybons2006 | Опубликовано: 25.07.2007

В этой небольшой статье я постараюсь описать простой и часто необходимый способ постороения графиков загрузки интернет-канала (общий график, график 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

Выдает нам нечто похожее:
00013 146322 109248471 count ip from any to any in via xl0


Нас будет интересовать третья цифра – 109248471 – количество байт, сосчитанное правилом 13, которое в нашем случае считает общий входящий трафик.


RRDTOOL


Считаем rrtool установленным и, желательно, проверенным хотя бы на тестовом примере, который весьма неплохо описан на странице http://bozza.ru/?c=231&p=content. Не поленитесь, просмотрите эту статью, несмотря на то, что она на английском. Я не могу сказать про себя, что английский знаю даже средне, но мне там все было понятно.


СКРИПТЫ


Нам будет необходимы следующий скрипты:



  1. network_usage.sh – обновляет базу. Запускается периодиески. Для нашего примера, раз в 5 минут.
  2. network_usage_create.sh – создает базу данных для четырех счетчиков, описанных выше. Запускается один раз.
  3. network_usage_graph2.sh – рисует графики загрузки канала. Запускается раз в 5 минут.
  4. network_usage_update_rrdtool.sh – фактически, этот скрипт просто запускает раз в пять минут network_usage.sh и network_usage_graph2.sh. Его содержимое самое очевидное.

Сразу приведу их содержимое:


network_usage_create.sh

#!/bin/sh

rrdtool create /var/rrdtool/db/network_usage.rrd \
--start 1176595200 \
DS:input_mail:COUNTER:600:U:U \
DS:output_mail:COUNTER:600:U:U \
DS:www:COUNTER:600:U:U \
DS:all:COUNTER:600:U:U \
RRA:AVERAGE:0.5:1:600 \
RRA:AVERAGE:0.5:6:700 \
RRA:AVERAGE:0.5:24:775 \
RRA:AVERAGE:0.5:288:797 \
RRA:MAX:0.5:1:600 \
RRA:MAX:0.5:6:700 \
RRA:MAX:0.5:24:775 \
RRA:MAX:0.5:288:797

network_usage.sh

#!/bin/sh

input_mail=`/sbin/ipfw show 0011 | awk '{print $3}'`
output_mail=`/sbin/ipfw show 0010 | awk '{print $3}'`
www=`/sbin/ipfw show 0012 | awk '{print $3}'`
all=`/sbin/ipfw show 0013 | awk '{print $3}'`
/usr/local/bin/rrdtool update /var/rrdtool/db/network_usage.rrd \
N:$input_mail:$output_mail:$www:$all

network_usage_graph2.sh

#!/bin/sh

WWWPREFIX=/var/www/rrdtool/images
RRDPREFIX=/var/rrdtool/db

/usr/local/bin/rrdtool graph $WWWPREFIX/network.png \
--width 500 --height 500 --imgformat PNG \
--start -43200 \
--title "Bandwidth graph for last 12 hours" --rigid --color BACK#FAFAFA \
--vertical-label Kbit/sec \
DEF:ifino=$RRDPREFIX/network_usage.rrd:input_mail:AVERAGE \
DEF:ifouto=$RRDPREFIX/network_usage.rrd:output_mail:AVERAGE \
DEF:www=$RRDPREFIX/network_usage.rrd:www:AVERAGE \
DEF:all=$RRDPREFIX/network_usage.rrd:all:AVERAGE \
CDEF:pop3=ifino,128,/ \
CDEF:smtp=ifouto,128,/ \
CDEF:www1=www,128,/ \
CDEF:all1=all,128,/ \
VDEF:sumpop3=ifino,TOTAL \
VDEF:sumsmtp=ifouto,TOTAL \
VDEF:sumwww=www,TOTAL \
VDEF:sumall=all,TOTAL \
VDEF:maxpop3=pop3,MAXIMUM \
VDEF:maxsmtp=smtp,MAXIMUM \
VDEF:maxwww=www1,MAXIMUM \
VDEF:maxall=all1,MAXIMUM \
VDEF:avgpop3=pop3,AVERAGE \
VDEF:avgsmtp=smtp,AVERAGE \
VDEF:avgwww=www1,AVERAGE \
VDEF:avgall=all1,AVERAGE \
AREA:all1#CCCCCC:"ALL" \
GPRINT:maxall:"Max=%lf%s" \
GPRINT:avgall:"Avg=%lf%s" \
GPRINT:sumall:"Sum=%lf %sbytes\l" \
LINE1:www1#FF6600:"WWW" \
GPRINT:maxwww:"Max=%lf%s" \
GPRINT:avgwww:"Avg=%lf%s" \
GPRINT:sumwww:"Sum=%lf %sbytes\l" \
LINE1:pop3#0000FF:"POP3" \
GPRINT:maxpop3:"Max=%lf%s" \
GPRINT:avgpop3:"Avg=%lf%s" \
GPRINT:sumpop3:"Sum=%lf %sbytes\l" \
LINE1:smtp#FF0000:"SMTP" \
GPRINT:maxsmtp:"Max=%lf%s" \
GPRINT:avgsmtp:"Avg=%lf%s" \
GPRINT:sumsmtp:"Sum=%lf %sbytes\l" \

network_usage_update_rrdtool.sh

#!/bin/sh

/var/rrdtool/script/network_usage.sh
/var/rrdtool/script/network_usage_graph2.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 часов:
--start -43200 – время в секундах.


Данный скрипт необходимо запускать раз в пять минут.



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


оригинал статьи, rrdtool - установка и настройка, rrdtool - установка и настройка (англ.)
Комментарии
Аватар billybons2006 billybons2006

Всем привет. Написал эту статью сегодня, полагаю, комментарии должны появиться, я открыт для обсуждения :)

billybons2006 | 25.07.2007
У нас гости не могут комментировать статьи. Пожалуйста авторизуйтесь или зарегистрируйтесь, чтобы прокомментировать.
Интересные статьи по теме
Аватар Виталий Эмула
Ретро игры-онлайн на игровом портале Коллекция игр от ретро консолей – это игры формата NES(известная как Денди), SMS(Sega Master System) и GBA(GAME BOY ADVANCE). ...
Категория: ПО и игры | Автор: Виталий Эмула | Добавлено: 24.08.2021
Аватар fly_e135
Настройка телефона Fly Мобильные телефоны есть почти у каждого в нашей стране,да и в мире тоже! Телефон - это сложный механизм, к которому нужно относиться бережно и тогда он будет служить долго. Прежде чем начать использов...
Категория: ПО и игры | Автор: fly_e135 | Добавлено: 25.11.2010
Аватар Anastasya
DVD-Audio авторинг с помощью DigiOnAudio2 Pro. Часть I Методология DVD-Audio авторинга в программе DigiOnAudio2 Pro. Детально рассмотрена технология создания навигации для DVD-Audio, от инсталляции DigiOnAudio2 Pro до записи проекта на лазерный диск....
Категория: ПО и игры | Автор: Anastasya | Добавлено: 17.02.2010
Аватар Excelskype
Excel – то, что нужно знать и уметь всем! Восемь самых востребованных возможностей программы Excel.Это необходимый минимум, которым должен владеть каждый, кто ежедневно использует Excel.Используй эти приемы, чтобы повысить эффективность своей...
Категория: ПО и игры | Автор: Excelskype | Добавлено: 05.04.2015
Аватар Maxim Sherbina
Как StarCraft 2 скачать и можно ли в него играть без battle.net? Все ждут и игру StarCraft 2! А что же она из себя представляет? Давайте вместе пробежимся по статье и узнаем много ценной информации как и для поклонников этой игры, так и для игроков всего мира!...
Категория: ПО и игры | Автор: Maxim Sherbina | Добавлено: 04.04.2010
Лучшие авторы
Аватар Seofox
На самом деле самого дела нет. В самой деятельност...

Читать

Аватар FedorenkoDA
Магистр высшей математики, математической и теорет...

Читать

Аватар mzhelvis82
Занимаюсь продвижением своего сайта на отзовик. Пл...

Читать

Аватар georgi58
Человек простой, кто бы хотел научится любит всех.

Читать

Аватар dacor
Нашему рекламному агентству « DeCor» претит однооб...

Читать

Свежие комментарии
Нормальная тема.

Читать

Талантливый человек талантлив во всём! Будь как Паша! А ещё ты можешь ...

Читать

Можно выбрать.

Читать

Ой, шутник.

Читать

https://priornews.ru/zastrojshhik-iz-hmao-sravnil-ufas-s-prestupnoj-gr...

Читать

Напишите нам