The Multi Router Traffic Grapher

1. Поставленная задача.

Необходимо графически отображать загруженность сетевых интерфейсов, Internet канала, модема и т.п.

Данные для постройки графиков снимаються с показания счетчиков фаервола.



2. Правила и отказ от обязательств.

Всё, что описано в данном тексте вы используете на свой страх и риск. Я, как автор за ваши действия и любые потери, связанные с ними ответственности не несу. Кое-что для этого how-to я взял из how-to Bog BOS: Мониторинг загрузки каналов (и не только) MRTG linux.perm.ru/doc/net/mrtg.html, пусть не обижаются - я не присваиваю авторство.




3. Что это такое MRTG.

MRTG - позволяет строить графики загрузки, использования, наличия того или иного предмета в системе (пользователи, память и прочее), так же позволяет забирать данные как по SNMP, так и через саморучно написанные программы.

Так же если неохота заморачиваться с БД для подсчета и учета трафика, то можно так же воспользоваться данным пакетом.

mrtg начиная с RH 7.3 есть в дистрибутиве и устанавливается как правило по умолчанию.



4. Настройка MRTG.


Конфиг находиться /etc/mrtg/mrtg.cfg

Необходимо прописать следующее:

WorkDir: /var/www/html/mrtg # Рабочий каталог, в котором будут сохраняться файлы с картинками и html, обычно это один из каталогов web-сервера.

Language: russian # Язык формирования отчетов (русский).

Target[mail-lan]: `/usr/local/script/mail` #Это целеуказание mrtg, благодаря которому он знает, от куда брать информацию.

MaxBytes[mail-lan]: 2048000000 #Показывает, сколько максимум будет число, которое измеряется на этом узле ( в данном случае - это максимальная скорость соответствующего внешнего канала).


XSize[mail-lan]: 600 # Задает размер рисунка по горизонтали.

YSize[mail-lan]: 160 # Задает размер рисунка по вертикали.

Options[mail-lan]: growright, bits # Показывает, что графики надо рисовать движущимися не слева, а справа.

Directory[mail-lan]: mail-lan # Директория куда будут складываться данные (в данном примере полный путь будет /var/www/html/mrtg/mail/mail.html).

Title[mail-lan]: TrafficAnalysis 192.168.0.Х # Указывает заголовок для страницы с графиками.

PageTop[mail-lan]: Statsforour 192.168.0.Х # С этой строки и ниже заголовок для страницы, на которой будут вывешиваться графики за день, неделю, месяц и год




Так же можно настроить для снятия данный с другого скрипта для этого продолжим конфиг.

Target[squid-lan]: `/usr/local/script/squid`

MaxBytes[squid-lan]: 2048000000

XSize[squid-lan]: 600

YSize[squid-lan]: 160


Options[squid-lan]: growright, bits

Directory[squid-lan]: squid-lan

Title[squid-lan]: Traffic Analysis 192.168.0.Y

PageTop[squid-lan]: Stats for our 192.168.0.Y



5. Скрипт для снятия статистики с правил фаервола для MRTG.




#!/bin/bash

SEC=300 # Устанавливаем переменную SEC равной 300 сек, что равно 5 мин.

if [ -f /tmp/traffic-dump ] Начало цикла

then

currenttime=$(date +%s) # Задаем переменной currenttime значение равное числу секунд истекших с `00:00:00 1970-01-01 UTC' (GNU расширение)


locktime=$(date -r /tmp/traffic-dump +%s) # Задаем значение переменной locktime равное дате создания файла в заданном формате.

secondsdiff=$(expr $currenttime - $locktime) #Задаем переменной secondsdiff значение равное разнице переменных currenttime и locktime

[ $secondsdiff -ge $SEC ] #Проверяем условие в котором значение переменной secondsdiff должно быть больше либо равно переменной SEC

/sbin/ipchains -L -v -x -n >/tmp/traffic-dump #Снимаем показания счетчиков фаервола

/sbin/ipchains -Z # Обнуляем счетчики.

fi


else

/sbin/ipchains -L -v -x -n >/tmp/traffic-dump

fi # Конец цикла

out=$(cat /tmp/traffic-dump |grep "192.168.0.X 192.168.0.0/24") # Присваиваем переменной out значение вывода следующих комманд. С помощью cat выводим содержание указанного файла и перенаправляем ее вывод команде grep, которая ищет строки содержащие регулярные выражение.

out=$(echo $out |cut -d" " -f2) # перенаправляем вывод значения переменной out на вход cut, которая присваивает новое значение переменной out равное второму полю.

in=$(cat /tmp/traffic-dump |grep "192.168.0.0/24 192.168.0.X") #Тоже самое что и в описании переменной out


in=$(echo $in|cut -d" " -f2)

echo $in # Выводим значение in для mrtg.

echo $out # Выводим значение out для mrtg.

echo 0 # тоже самое.

echo 0




6. Запускаем MRTG

Запуск MRTG производиться cron каждые 5 минут, но чтобы не ждать 5 минут запустим mrtg вручную, для этого дадим команду mrtg /etc/mrtg/mrtg.cfg после того как команда отработает она на экран выдаст предупреждение. Запускаем mrtg еще раз и количество предупреждений уменьшилось. На третий раз mrtg перестает ругаться.



В красной шапке и манграгоре MRTG устанавливаеться по умолчанию из rpm пакета и автоматом запускаеться через cron, так что дополнительно ни чего прописывать ненужно.

Если mrtg устанавливать из сырцов, то соответственно необходимо выбрать способ запуска, либо через cron (добавим в crontab нужные записи) либо в конфиге mrtg прописать

RunAsDaemon: Yes


Interval: указываем интервал запуска mrtg (по умолчанию 5 мин).


Источник - http://linuxportal.ru

Автор - Crion

Похожие новости

Комментариев 0