LINUX

Мониторин загрузки каналов

1. Введение
Данный документ описывает один из методов визуального контроля (мониторинга) загрузки канала с использованием программного обеспечения, генерирующего .html страницу с графиками загрузки канала. Предназначен в основном для начинающих администраторов и описывает процесс установки и конфигурирования программного обеспечения "от и до". Создание данного документа обусловлено тем, что автор не нашел весь нужный материал на русском "в одном флаконе", хотя почти все, что написано ниже можно прочитать в нескольких источниах, приведенных в конце документа. Автор не несет ответственности за возможный нанесенный ущерб при выполнении действий, описанных в данном документе. Так что используйте на свой страх и риск. Если непонятно то или иное действие, лучше обратится к первоисточникам, указанным в конце документа.

2. Постановка задачи
При администрировании информационных каналов таких, как каналы доступа в интернет, нередко возникает необходимость в наглядном отображении статистики по загрузке канала. Это особенно удобно при необходимости удаленно следить за загрузкой, а также когда не особо сведующее начальство любит "держать руку на пульсе" . Одним из возможных решений является построение графиков скорость/время и отображение их через ВЕБ-интерфейс. Однако следует сразу отметить, что визуальный способ недостаточно точен. Для получения точных данных необходимо использовать другие методы.

3. Установка необходимого пограммного обеспечения
Одной из самых распостраненных программ для построения графиков загрузки канала и генерирования соотвествующих .html станиц является MRTG (Multi Router Traffic Grapher) http://www.mrtg.org. Скачиваем самую свежую версию программы с указанного сайта.

# wget http://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/mrtg-2.9.22.tar.gz

Также для работы необходимы следующие пакеты:
Скачиваем библиотеку libgd с http://www.boutell.com/gd/ если не установлена.

# wget http://www.boutell.com/gd/http/gd-1.8.3.tar.gz

Скачиваем Perl с http://www.perl.com/ если не установлен.
Для возможности работы с .png файлами скачиваем libpng c http://www.libpng.org/pub/png/src/ если не установлен.

# wget http://www.libpng.org/pub/png/src/libpng-1.0.12.tar.gz

Для компрессии созданных libpng файлов скачиваем библиотеку zlib с http://www.gzip.org/zlib/ если не установлена.

# wget http://www.gzip.org/zlib/zlib-1.1.4.tar.gz

Для упрощения процесса конфигурирования скачиваем программку cban, которая будет общаться с интерфейсами напрямую, минуя конфигурирование через community.

# wget http://panic.eu.org/linux/cban/cban-0.1.8-0.tgz

Компилируем библиотеки.
Обычно их устанавливают в /usr/local/src.

zlib

# gunzip -c zlib.tar.gz | tar xf -
# mv zlib-?.?.?/ zlib
# cd zlib
# ./configure
# make

libpng

# gunzip -c libpng-*.tar.gz |tar xf -
# rm libpng-*.tar.gz
# mv libpng-* libpng
# cd libpng
# make -f scripts/makefile.std CC=gcc ZLIBLIB=../zlib ZLIBINC=../zlib rm *.so.* *.so

libgd

# gunzip -c gd-1.8.3.tar.gz |tar xf -
# mv gd-1.8.3 gd
# cd gd
# make INCLUDEDIRS="-I. -I../zlib -I../libpng" LIBDIRS="-L../zlib -L. -L../libpng" LIBS="-lgd -lpng -lz -lm"

Установка MRTG

# cd /usr/local/src
# gunzip -c mrtg-2.9.22.tar.gz | tar xvf -
# cd mrtg-2.9.22

Для уверенности в том, что компиляция пройдет с поддержкой всех необходимых библиотек, выполняем

# ./configure --prefix=/usr/local/mrtg-2 --with-gd=/usr/local/src/gd --with-z=/usr/local/src/zlib --with-png=/usr/local/src/libpng
# make
# make install

Если все прошло без ошибок то должна появиться директория /usr/local/mrtg-2.

Устанавливаем cban

# tar zxvf cban-0.1.8-0.tgz
# cp cban /usr/sbin/cban

4. Конфигурирование

Определяем где будет храниться файл конфигурации, например /home/byte/stats/mrtg.cfg . Определяем где mrtg будет хранить свои данные и куда будет помещать результаты расчетов, например ничего страшного не будет если все "свалить в одну кучу" и задать такой каталог /home/byte/public_html/stats/ . Имеет смысл пререписать *.png из директории images в каталог где будут храниться данные.
Создаем файл /home/byte/stats/mrtg.cfg . Ниже представлен пример такого файла с пояснениями.

##################################################################
WorkDir: /home/byte/public_html/stats #задает размещение журнала, рабочих файлов и
генерируемых страниц

RunAsDaemon: Yes #запускаться как демон; иначе необходимо запускать
через определенное время через cron

Language: russian #выводить пояснения на русском языке
#Stats from eth0
Title[eth0]: Загрузка на eth0 (Игровой зал) #заголовок для html-страницы
MaxBytes[eth0]: 1250000 #значения переменных, которые больше
этого числа, игнорируются

AbsMax[eth0]: 1250000 #если используется сжатие, то
возвращаемое значение может превосходить MaxByte

Options[eth0]: gauge, nobanner # опции; если несколько, то пишутся через запятую; в данном случае:
gauge - интерпретировать полученные значения как абсолютные значения.
По умолчанию, mrtg трактует полученные
значения как увеличивающийся счетчик (т.е. отрисовывает разницу между предыдущим и
текущим значением, деленную на прошедший интервал времени);
nobanner - не показывать банера MRTG

Target[eth0]: `/usr/sbin/cban -i eth0 -m` #указывает откуда брать данные для для
отображения; указываем что данные передает cban c указанием интерфейса и в понятной для MRTG форме

PageTop[eth0]: Загрузка канала на eth0 (игровой зал)#надпись, отображаемая сверху страницы
YLegend[eth0]: Bytes/s #текстовая строка для обозначения вертикальной шкалы
ShortLegend[eth0]: B/s #текстовая строка, используется для указания размерности вне графика
Legend1[eth0]: Входящий трафиик
Legend2[eth0]: Исходящий трафиик
Legend3[eth0]: Максимальный входящий траффик
Legend4[eth0]: Максимальный исходящий траффик
LegendI[eth0]: In:
LegendO[eth0]: Out:
WithPeak[eth0]: ymwd #показывать в недельном, месячном и годовом
графиках не только средние, но и пиковые значения

##################################################################


Интерфейсов можно указывать более одного. Для этого достаточно описать правила для другого символического имени, например eth1

Target[eth1]: `/usr/sbin/cban -i eth0 -m`
PageTop[eth1]: <H1>Загрузка канала на eth1 (VIP зал)</H1>
[/PHP]
и т.д.

Запускаем MRTG следующей коммандой

# usr/local/mrtg-2/bin/mrtg /home/byte/stats/mrtg.cfg

Если в конфигурационном файле не ставить директиву

RunAsDaemon: Yes

то тогда необходимо обеспечить вызов MRTG каждые, скажем, 5 минут. Для этого выполняем

# crontab -e

и прописываем строку

*/5 * * * * usr/local/mrtg-2/bin/mrtg /home/byte/stats/mrtg.cfg

Для успешной русификации необходимо в каталог ../mrtg-2/lib/mrtg-2/ переписать файл russsian.pmd

Если программа запущена как демон, то тогда необходимо в стартовых скриптах прoписать запуск программы. В Slackware правится
/etc/rc.d/rc.local

#starting MRTG
cd /usr/local/mrtg-2/bin && ./mrtg --user=mrtr /home/byte/stats/mrtg.cfg --logging /var/log/mrtg.log

Здесь
--user=mrtg
запускать с правами пользователя mrtg. В таком случае необходимо создать данного пользователя;
logging /var/log/mrtg.log - вести лог по указанному пути

Настройка веб-сервера Apache.
Врядли Вы хотите, чтобы любой мог просматривать статистику без Вашего ведома. Посему имеет смысл ограничить доступ к страничке с статистикой. Для этого в каталоге /home/byte/public_html/stats создаем файл .htaccess в котором прописываем:


AuthType Basic
AuthName &quot;Byte&quot;
AuthUserFile /home/byte/stats/.htpasswd
AuthGroupFile /home/byte/stats/.htgroup
<Limit GET POST>
order deny,allow
require group oper
</Limit>
[/PHP]

В файле /home/byte/stats/.htpasswd прописываем имя пользователя и зашифрованный пароль через двоеточие:

byte:$1$kQLR$8.ADZRn5DA8QnLRlem7D1

Пароль можно &quot;утащить&quot; из /etc/shadow. Пароль находится в строке, начинающейся с имени пользователя, между двумя первыми двоеточиями. А можно воспользоваться программкой htpasswd.
В файле /home/byte/stats/.htgroup прописывается название группы, двоеточие и через пробелы имена пользователей, отенесенных к той или иной группе.

oper: byte boss

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

# indexmaker [options] mrtg.cfg [other.cfg ...]

Список опций можно посмотреть http://people.ee.ethz.ch/~oetiker/webtools/mrtg/indexmaker.html. А можно и написать свою страницу. Преимущество - нет ограничения на полет фантазии

5. Источники.
Более подробную информацию можно найти по ссылкам:
http://www.mrtg.org
http://linux.yaroslavl.ru/docs/conf/MRTG.html
http://panic.eu.org/linux/cban

   
  Rambler's Top100