Оптимизация мониторинга MRTG графиков

в 8:29, , рубрики: мониторинг сети, Сетевые технологии, системное администрирование, метки:

Думаю никому из нынешних сетевиков не нужно объяснять, что такое MRTG. Этот софт можно встретить практически в любой средней компании, имеющей собственные каналы в Интернет, а всякого рода провайдеры вообще не обходятся без пары-тройки дежурных инженеров, постоянно смотрящих на множество графиков, и поднимающих тревогу в случае отклонения каких-либо показателей.

Для дорогих коллег, работающих в сфере IT, но не знакомых с суровыми буднями сетевиков, поясню. MRTG – Open Source пакет, устанавливаемый на Windows, чаще на Linux-машины, который ходит по вашим коммутаторам/маршрутизаторам/серверам протоколом SNMP, снимает нужную вам информацию (чаще всего – загрузку сетевых интерфейсов), и строит приятные глазу графики из собранной информации. Вот такие:

image
(Пример графика с официальной странички MRTG http://oss.oetiker.ch/mrtg/)

MRTG весьма полезен, но он сухо рисует свои графики, не анализируя саму информацию, т.е. в случае спада какого-либо важного трафика, он просто будет рисовать свой график, не крича на весь сетевой отдел «Эй! Интернет пропал! Паника! Паника!». Продуктов, которые это умеют, уже написано огромное количество, но многие компании продолжают использовать старый добрый MRTG. Толи потому что лень переносить конфиги, откатанные годами, толи из-за простоты.

Не редко случаются ситуации, когда инженер не замечает вовремя отклонения в графике. У дежурных инженеров, взявших на себя грешок уснуть во время ночного дежурства, это может вызывать особенно неприятные последствия.

Что же делать, если MRTG дорог сердцу, а от графика зависит не только здоровый сон руководителя сетевого отдела, но и прибыль, имидж компании?

Не секрет что MRTG собирает информацию в log-файл, а на основе информации из этого файла каждый раз заново перерисовывает графики. Log-файл хранится в той же директории на Web-сервере, в которой хранятся HTML файлы MRTG, а также сами графики в формате PNG. Скажем, мы настроили MRTG для мониторинга канала в Интернет, и так его и назвали в конфигурации MRTG – Internet. После первого успешного сбора информации, MRTG создаст следующие файлы в своем корне:

  • Internet.html
  • Internet.log
  • Internet.old
  • Internet-day.png
  • Internet-week.png
  • Internet-month.png
  • Internet-year.png

Первый файл – HTML страничка данного графика. Для нас пока интереса не представляет. Следующий файл, Internet.log, наиболее интересен – в него добавляется свежая порция показателей счетчиков каждый раз после успешного сбора информации, при этом файл каждый раз бэкапится в файл Internet.old. Оставшиеся файлы – собственно сами графики, рисуются из информации хранящейся в файле Internet.log. Получается, что активно анализируя log-файл, можно контролировать состояние тех или иных показателей, и обнаруживать проблему еще до того, как она проявится на графике MRTG. Задача есть, осталось написать софт. Так в перерывах между траблшутингом и конфигурацией сети, родилась маленькая утилита MRTG Watchdog.

Оптимизация мониторинга MRTG графиков

Идея проста – кроме живых людей, за графиками следит эта программа. Каждые n-минут, она скачивает часть log-файла тех графиков, на мониторинг которых ее настроили, и анализирует цифры.

Настройки отслеживания показателей каждого графика достаточно гибкие, а именно:

  1. Зависание графика. Бывает такое, что MRTG не может снять информацию с сетевого устройства, и график «зависает». Выглядит все хорошо, но данные не обновляются. Опасная ситуация? Конечно!
  2. Нижние и верхние пороги, в байтах, отклонение в процентах от предыдущего значения. MRTG Watchdog может оперативно заметить снижение или повышение трафика, температуры, и т.д., благодаря возможности установить пороги, как точные значения, так и в процентном отношении.
  3. Отклонение в процентах от показателей снятых n-секунд назад. Например, можно сравнивать текущий Интернет трафик с тем, что был 1 час назад, или 24 часа назад.

Оптимизация мониторинга MRTG графиков

В данном примере, MRTG Watchdog будет анализировать log-файл сразу на несколько критериев:

  • Зависание графика (включен Stale sensor)
  • Падение канала в Интернет (Incoming lower limit sensor установлен в 0)
  • Превышение порога скорости доступа в Интернет (Incoming upper limit sensor выставлен в 8мбит/с)
  • Резкое увеличение входящего трафика, вызванное например DDoS атакой (Incoming deviation sensor выставлен в 30%)
  • Переполнение исходящего канала (Outgoing upper limit sensor выставлен в 1мбит/с)

При срабатывании какого-либо условия, можно выводить предупреждающее сообщение, как в виде окна, так и в виде всплывающей подсказки из панели задач.

Оптимизация мониторинга MRTG графиков

MRTG Watchdog уже прошел испытание боем в нашей сети, и в сетях друзей, согласившихся взять его на проверку. Из известных проблем пока одна – MRTG безжалостно агрегирует и усредняет показатели за прошедший день, неделю, и т.д. для уменьшения размера log-файла. В связи с этим, сравнение текущего значения с историческим (день, неделя назад) может быть не совсем верным для сильно плавающих данных (трафик в сети), которые при усреднении сильно отклоняются от максимума/минимума. Но эту функцию можно выгодно использовать для данных, которые не сильно изменяются при усреднении (температура, занятая оперативная память маршрутизатора и т.д.)

Прошу простить за то, что интерфейс на английском. Я хочу сделать эту небольшую, но надеюсь полезную утилиту доступной широкой публике без каких либо лицензий и в Open Source. Ведь не каждый сетевой инженер решится запустить у себя неизвестное ПО с закрытым кодом, вдруг оно будет собирать информацию о его каналах и слать ее конкурентам? А c открытым исходным кодом, программы становятся как-то добрее. Пока выкладываю так как есть, для тебя, хабр, а после рефакторинга, исправления найденных багов (с твоей помощью) и комментирования кода выложу на хостинг Open Source проектов, и, конечно, сообщу об этом здесь.

MRTG Watchdog написан полностью на Microsoft Visual C# 2010 Express, специально для изучения возможностей этого языка.

Архив с бинарным файлом с исходным кодом: http://tux.kz/habr/mrtg-watchdog.zip

Автор: Imple

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js