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 мин). |