Содержание


CFM - мониторинг сетевых устройств

Использование протокола SNMP для анализа состояния сети и систем, работающих под управлением различных ОС

Comments

Серия контента:

Этот контент является частью # из серии # статей: CFM - мониторинг сетевых устройств

Следите за выходом новых статей этой серии.

Этот контент является частью серии:CFM - мониторинг сетевых устройств

Следите за выходом новых статей этой серии.

Описание

Центры обработки и хранения данных и крупные производственные предприятия в своей повседневной работе используют полнофункциональные системы мониторинга и управления сетью, например, OpenView от компании Hewlett Packard  или Tivoli NetView от IBM. Подобные системы дороги в финансовом плане и сложны в освоении. Что делать небольшим и средним предприятиям, которые не могут позволить себе подобное удовольствие, но тем не менее вынуждены содержать довольно большой серверный парк и разветвленную локальную и филиальную сеть? Из данной статьи вы узнаете, как с помощью небольшого проекта CFM можно наблюдать за состоянием сети и любых сетевых устройств, используя протокол SNMP. Данный программный комплекс позволяет значительно упростить работу с протоколом SNMP.

Многие системные администраторы используют протокол SNMP (Simple Network Management Protocol) для получения оперативной информации о состоянии различных устройств, подключённых к локальной сети. Есть множество открытых проектов, предназначенных для этих целей, каждый со своими достоинствами и недостатками, например, Cacti, Zenoss, Zabbix и т. д. В самом простом случае можно использовать MRTG (Multi Router Traffic Grapher) с RRDT для получения, хранения данных и создания графиков. Однако настройка этих приложений представляет из себя довольно нетривиальный процесс. Создаётся впечатление, что в мире Linux ничего не изменилось с момента изобретения командной строки. У каждого из этих проектов множество конфигурационных файлов нетривиального формата, в которые необходимо вручную добавлять опрашиваемое оборудование, параметры опроса и многое другое. Если число устройств, которые необходимо мониторить, превышает несколько сотен, а число параметров приближается к нескольким тысячам, сопровождение данной системы перестаёт доставлять удовольствие. Возникают мысли об автоматизации данной рутины. Кроме того, веб-интерфейс подобных систем, в основном, не переведён на русский язык — особенно это относится к графикам процессов. Конечно, системный администратор должен знать английский язык. Но мы всё-таки живём в России.

В далёком 1994 году, когда в моей организации возникла потребность в мониторинге сетевой инфраструктуры, никаких открытых проектов, кроме MRTG, предназначенных для этих целей, не было. Повозившись с ним и помучившись от нестабильной работы, я решил написать собственную систему. В результате возник проект CFM (Complex for Monitoring) http://trac.opensvn.ru/cfm/browser/tags.  В процессе эксплуатации проекта оказалось, что помимо системного администратора очень многие сотрудники желают иметь на своём рабочем столе постоянный мониторинг каналов связи, серверов, температуры в помещениях и т.д. в соответствии со своими служебными обязанностями. Руководство организации, в которой я работаю, установило в своих кабинетах дополнительные компьютеры, чтобы иметь оперативную информацию о состоянии  инфраструктуры предприятия. Данный факт потребовал разработки интерфейса для пользователей и системы авторизации с разграничением прав доступа к информации.

Краткое описание

CFM — это система мониторинга сетевой инфраструктуры с помощью протокола SNMP. Данный программный комплекс отличается лёгкостью настройки и сопровождения. Вся конфигурация полностью производится в интуитивно понятном графическом интерфейсе администратора. Также доступен ряд сервисных утилит, облегчающих ввод новых устройств для опроса и диагностику возникающих в сетевой инфраструктуре неисправностей. Интерфейс пользователя обеспечивает визуальное представление состояния устройств в режиме реального времени, вывод текущих значений опрашиваемых параметров и графическое представление изменения параметров оборудования во времени посредством графиков. Графические интерфейсы администратора и пользователя выполнены в виде расширения Firefox для достижения платформо-независимости клиентского рабочего места. Все конфигурационные настройки, база данных MIB и результаты опроса хранятся в MySQL.

Серверная часть CFM реализована на Perl и состоит из трёх частей:

  1. Подсистема опроса устройств.
  2. Подсистема оповещения о возникновении критических событий.
  3. Подсистема получения трапов (trap).

Процесс установки подробно описан в документации проекта и трудностей не вызывает. Необходимо отметить, что для работы CFM необходимо наличие предварительно установленного MySQL, Apache и любой почтовой системы.

Настройка опроса сетевых устройств

После установки на рабочем месте администратора расширения для Firefox можно запустить интерфейс администратора CFM: в меню «Инструменты» пункт «CFM admin». Появится окно, представленное на рис.1.

Рис. 1
Рис. 1
Рис. 1

Сразу после запуска меню заблокировано, и вам необходимо ввести имя или IP-адрес сервера и нажать кнопку «Find». Ввод новых устройств и назначение параметров опроса для каждого устройства осуществляется через пункт меню «Правка -> SNMP». Появится окно настройки конфигурации (рис.2).

Рис. 2
Рис. 2
Рис. 2

Если база данных конфигурации пуста (не сконфигурировано ни одного устройства для опроса) или опрос всех устройств отключён, демон опроса не запустится. Вы должны настроить хотя бы одно устройство для опроса. Нажмите кнопку «Добавить» в верхней части окна "Настройка конфигурации". В появившемся окне, представленном на рис.3, введите параметры добавляемого устройства. Поясню значение некоторых полей ввода:

  • Db Size - это период хранения результатов опроса для данного устройства в базе данных CFM в секундах;
  • Частота опроса - у каждого устройства своя частота опроса (от 1 до 9999 секунд);
  • Max Count -  число попыток, после которых устройство считается недоступным;
  • Группа - все устройства разделены на группы (от 0 до 99). Разделение зависит от типа устройства и, соответственно, файла MIB для этого устройства.

В настоящее время стандартно поддерживаются следующие группы устройств:

  • 0 — Температурные датчики;
  • 1 — Источники бесперебойного питания APC;
  • 2 — Источники бесперебойного питания BEST;
  • 3 — Источники бесперебойного питания Chloride;
  • 4 — Оборудование Cisco;
  • 5 — Серверы Windows;
  • 6 — Серверы Linux;
  • 7 — Источники бесперебойного питания Symmetra производства APC;
  • 8 — Принтеры;
  • 9 — Аппаратура HP;
  • 10 — iLO.

Вы можете назначить собственные группы с большими номерами для специфического оборудования и написать свои модули отображения результатов опроса устройств. Как это сделать, подробно описано в документации CFM.

Рис. 3
Рис. 3
Рис. 3

Теперь в верхней части окна "Настройка конфигурации" появилось новое устройство. Нажатие правой кнопки мыши на строке с нашим новым устройством приведёт к появлению всплывающего меню с пунктами:

  • Net-Ping - пропинговать данное устройство;
  • Snmp-Ping - послать одиночный SNMP запрос;
  • Mib tree for host - получить дерево MIB с данного устройства;
  • Опросить узел - быстрый ввод базовых значений опроса;
  • Изменить - редактировать запись;
  • Удалить - удалить данное устройство из конфигурации.

Теперь необходимо ввести параметры snmp-опроса для данного устройства. Наличие стандартных групп обеспечивает быстрый ввод минимального набора параметров (OID) для опроса устройств, входящих в эти группы. Нет необходимости разбирать файл MIB в поиске необходимого параметра (OID). Достаточно щёлкнуть правой кнопкой мыши на строке с новым устройством и из всплывающего меню выбрать пункт «Опросить узел». Появится окно "Опрос узла сети", представленное на рисунке 3.

Рис. 4
Рис. 4
Рис. 4

В данном случае представлено окно опроса сервера с операционной системой Windows (группа 5). Если устройство принадлежит к другой группе, будут отображаться другие OIDs. Для сетевого оборудования типа CISCO (группа 4) будут отображаться номера интерфейсов, их тип, статус, IP и маска подсети. Изначально поле Chk пустое и строки таблицы белого цвета. Необходимо выбрать, что вы желаете опрашивать, и поставить галочки в нужные строки. Затем в меню "Добавить" выбрать "OIDs для опроса". Выбранные OIDs будут занесены в базу данных конфигурации, а в данном окне они окрасятся в зелёный цвет. Если теперь в окне "CFM - настройка конфигурации" (рис. 2) нажать мышью на строке с нашим новым устройством, в нижней части окна появятся записи с описанием нашего snmp-запроса. Для сетевого оборудования типа CISCO заносятся значения IfInOctets, IfOutOctets и IfOperStatus для выбранных интерфейсов.

Если опрашиваемое устройство не принадлежит к стандартной группе или мы желаем добавить другие параметры опроса, необходимые нам для данного устройства, можно всё сделать вручную.

Для облегчения выбора необходимых OID была написана служебная утилита получения дерева MIB с устройства. Для её запуска надо щёлкнуть правой кнопкой мыши на строке с новым устройством и из всплывающего меню выбрать пункт «Mib tree for host». В появившемся окне (рис. 5) введите начальный и конечный OID (или end) и нажмите кнопку "Query". Сервер произведёт опрос дерева MIB указанного устройства с начального по конечный OID или до конца дерева. По окончании опроса выводится иерархическая структура дерева MIB. Двойное нажатие правой кнопки мыши на каком-либо значении дерева вызывает окно с детальным описанием данного OID из базы данных MIB сервера CFM.

Рис. 5
Рис. 5
Рис. 5

После выбора нужных OID, нажимаем левую кнопку мыши в окне "CFM - настройка конфигурации" (рис. 2) на строке с нашим новым устройством. В нижней части окна будут показаны параметры опроса данного устройства. Нажатие на кнопку добавления новой записи вызовет окно, представленное на рисунке 6.

Рис. 6
Рис. 6
Рис. 6

Если у вас уже введено несколько устройств и описаны их параметры опроса, то вы можете скопировать параметры с однотипного устройства, нажав на кнопку "Скопировать параметры с устройства...". Это облегчает работу по вводу однотипных параметров. Останется только подредактировать поля и нажать "OK". В противном случае нужно вводить всё вручную. В поле "Oid Name" заносим символьное наименование snmp-метрики (OID) (от 1 до 40 символов латинского алфавита [a-zA-Z0-9] без пробелов). Это обычно (и лучше всего) название OID из файла MIB. В поле "OID" заносим числовое значение OID. Это справедливо в большинстве случаев, однако для некоторых коммуникационных устройств так не всегда удобно делать. В частности, при опросе оборудования "Cisco", приходится опрашивать интерфейсы по номеру порта, но при перезагрузке роутера происходит динамическая переконфигурация портов. В результате у нас нет полной уверенности, интерфейс с каким IP-адресом мы опрашиваем. Для исключения подобной ситуации поле OID заполняется следующим образом:

.1.3.6.1.2.1.2.2.1.10@194.84.0.22
.1.3.6.1.2.1.2.2.1.16@194.84.0.22

где

  • .1.3.6.1.2.1.2.2.1.10 - входящий трафик;
  • .1.3.6.1.2.1.2.2.1.16 - исходящий трафик;
  • @ - этот символ отделяет метрику от IP-адреса интерфейса;
  • 194.84.0.22 - IP-адрес тестируемого интерфейса.

В этом случае демон опроса cfmd.pl распознаёт символ @ и запрашивает OID ipAdEntIfIndex (.1.3.6.1.2.1.4.20.1.2) с соответствующим IP-адресом. Данный запрос возвращает номер порта этого канала. Затем номер порта подставляется в оригинальный OID, и осуществляется опрос необходимого нам значения.

Выбираем значение "DST". Этот параметр используется для вычисления полученного значения в зависимости от его типа. Принимает значения: GAUGE, COUNTER, DERIVE, ABSOLUTE, и берётся из описания OID. Но если вы внимательно посмотрите на рисунок 2, то увидите ещё одно значение параметра "DST" — это CALC. При опросе устройств по протоколу SNMP часто возникает необходимость получить некое значение состояния устройства, которое не отражено в ветке дерева MIB и, соответственно, его нельзя запросить с данного устройства. Однако можно получить некоторые другие значения и на их основе вычислить нужное. CALC и представляет собой вычисляемое значение. Реально данный OID не существует в дереве MIB, и сервер CFM не производит опрос устройства по данному значению. Сервер опрашивает сетевое устройство по всем метрикам с параметром DST равным COUNTER, GAUGE, DERIVE и ABSOLUTE, после чего производится вычисление метрик с DST=CALC на основе полученных результатов опроса. В записи с DST=CALC Oid Name и OID можно писать любые.

Например, чтобы получить объём свободного пространства на диске C: нашего сервера (в Мбайт), вводим следующую запись:

  • Имя – MyHostName;
  • Oid Name - freeStorageSpace2 (может быть любым, на выбор администратора);
  • OID - .1.3.6.1.2.1.25.2.3.1.6.0 (можно что-нибудь произвольное);
  • DST – CALC;
  • UNITS - (hrStorageSize_2-hrStorageUsed_2)/1048576;
  • Описание – Свободное пространство на диске C: (в Мбайт).

Естественно мы должны перед этим внести записи с hrStorageSize_2 и hrStorageUsed_2, иначе серверу CFM неоткуда будет брать эти значения опроса. Если в поле UNITS вписать 100 - hrStorageUsed2 * 100 / hrStorageSize2 то мы получим то же самое, но в процентах.

В поле UNITS указывается математическая операция (*,/,+,-) и число. Например *8 используется при необходимости преобразовать байты в биты. Это необязательное поле. На рисунке 6 сервер MyHostName с операционной системой Windows выдаёт объём логического диска C: в блоках по 4096 байт. Умножаем это значение на 4096 и получаем объём диска в байтах.

В поле Описание заносим краткое описание данного параметра опроса. Это поле используется при отображении результатов опроса в интерфейсе пользователя - CFM view.

Нажимаем кнопку "OK" для занесения записи в базу данных CFM. В нижней части окна "Настройка конфигурации" появилась запись с описанием нашего snmp-запроса. Нажатие правой кнопки мыши на строке с запросом приведёт к появлению всплывающего меню с пунктами:

  • Snmp-Ping - проверить данный SNMP запрос;
  • Проверка всех OID - проверить все запросы с данного устройства;
  • Изменить - редактировать запись;
  • Удалить - удалить данное устройство из конфигурации.

Теперь, когда у вас есть устройство для мониторинга, можно запустить опрос. Войдите на сервер CFM как root и введите в командной строке /usr/local/cfm/bin/cfmd.pl. Сервер произведёт реорганизацию базы данных CFM: добавит соответствующие записи в конфигурационные таблицы в базе данных конфигурации и создаст таблицу с именем добавленного устройства в базе данных мониторинга для хранения результатов опроса.

Все дальнейшие сообщения о работе демона cfmd и возникающих проблемах заносятся в журнальный файл /var/log/cfm.log. Рекомендуется настроить ротацию данного лог-файла, т.к. в некоторых случаях его размер может быстро расти.

Заключение

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

Подсистема оповещения предназначена для рассылки электронных писем ответственным лицам при возникновении критических событий. Число критических событий для каждого устройства неограниченно.

Графики для собираемых параметров не создаются по умолчанию. Для каждого опрашиваемого устройства их надо настраивать вручную, исходя из ваших потребностей. Описание графиков хранится в базе данных конфигурации. Каждый график может отображать до четырёх различных параметров (три – в виде линии и один – в виде сплошной области). CFM создаёт графики в векторном формате (svg). Это минимизирует затраты вычислительных ресурсов сервера на создание графика и позволяет применять различные эффекты, характерные для данного графического формата. Сервер не хранит сформированные графики, а отправляет их в виде XML-файлов клиенту. Далее клиентское ПО занимается отрисовкой графики. В нашем случае это делает Firefox.

В CFM температурный мониторинг в интерфейсе пользователя выделен в отдельную подсистему. Это сделано для технических служб предприятия, занимающихся системами вентиляции и кондиционирования и используется для оперативного контроля за температурой в технологических помещениях, шкафах с оборудованием, в корпусах устройств и т.д. В подсистеме отображения результатов опроса существуют средства для непрерывного визуального отображения температурного режима. В дополнение к этому разработан модуль для голосового оповещения сотрудников инженерно-технических служб при превышении температуры в технологических помещениях. Оповещение производится по телефону посредством Voice модема.

В CFM ведётся собственная база данных MIB. Она используется для построения дерева MIB и в других утилитах для подмены числовых значений OID на символьные, а также для получения описания конкретного OID. В состав дистрибутива CFM входит большое количество файлов MIB, охватывающее практически все широко распространённые устройства. Однако файлы MIB представлены не в стандартном виде, а в формате SPM (Simple Presentation Mib). SPM — это формат простого представления файлов MIB. Разработан специально для проекта CFM для упрощения программной обработки файлов MIB. Оригинальный формат (описанный в различных RFC) весьма запутан, сложен, нечётко структурирован и плохо поддаётся синтаксическому разбору программным образом. Кроме того, в повседневной работе редко возникает нужда использовать всё, что создатели данного стандарта вложили в него. Формат SPM — это упрощенное представление MIB в формате XML. Для преобразования файлов MIB в формат SPM была написана соответствующая утилита командной строки. Преобразованный файл с помощью графического интерфейса легко добавляется в общую базу MIB на сервере CFM.

В заключение отмечу, что проект постоянно развивается. В настоящее время ведётся работа по автоматическому созданию карт локальных и глобальных сетей. Соответственно будет переработан интерфейс для добавления и настройки опроса устройств и подсистема отображения этих данных для конечного пользователя.

Также, если среди читателей IBM developerWorks есть желающие принять участие в разработке CFM, просим связаться с автором статьи, являющимся автором данного программного проекта.


Ресурсы для скачивания


Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux, Open source
ArticleID=755989
ArticleTitle=CFM - мониторинг сетевых устройств: Использование протокола SNMP для анализа состояния сети и систем, работающих под управлением различных ОС
publish-date=09062011