Главный Каталог Статей РФ
86001 авторов, размещено 47108 статей, сейчас на сайте пользователей: 48 Статистика
Аватар 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
Лучшие авторы
Аватар eyesky
Информационно-развлекательный портал eyesky.ru при...

Читать

Аватар Olga-Olga
Заказать СЕО-статью здесь - olgaobogrelova@mail.ru

Читать

Аватар eurof
Эффективное продвижение статьями!

Читать

Аватар demnn
Люблю рыбалку.

Читать

Аватар Павел Скачков
Профессионально занимаюсь массажем.

Читать

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

Читать

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

Читать

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

Читать

Ой, шутник.

Читать

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

Читать

Напишите нам