Zenoss и искусство сетевого мониторинга

Оригинал: Zenoss and the Art of Network Monitoring
Автор: Jeramiah Bowling
Дата: 1 августа 2008
Перевод: Александр Тарасов aka oioki
Дата перевода: 18 декабря 2008

Если в лесу упадет дерево, и падения никто не услышит, можно ли
говорить о звуке? Это классический коан Дзен, призванный перевести ум
читателя в состояние успокоения. Хотите вы слышать падение дерева или
нет, но если вы админстратор, то наверняка хотите слышать падение
сервера. Во многих организациях для слежения за сетевыми устройствами
вовсю задействуется протокол SNMP (Simple Network Management Protocol).
Он позволяет сразу видеть, когда с устройством происходит что-то не то.

На простейшем уровне для своей работы SNMP требует двух
элементов: управляющий сервер и управляемое устройство (или
устройства). Управляющий сервер периодически снимает данные о статусе и
производительности с управляемых устройств и сохраняет информацию в
таблице. На управляемых устройствах работают локальные SNMP-агенты.
Именно они и уведомляют управляемый сервер о происходящих событиях (к
примеру, ошибки или «ловушки»). В результате получаем точный механизм
отчетов о падениях служб, работающий в реальном времени. Однако
протокол SNMP не оговаривает, как именно эти данные хранятся в таблицах
и как представляются конечному пользователю. Именно эту задачу и решает
свободная программа для мониторинга компьютерных сетей Zenoss.

Zenoss можно запустить в большинстве дистрибутивов Linux. Он как раз основан
на протоколе SNMP и способен справляться со сложными большими компьютерными
окружениями. Версия Zenoss Core, о которой мы поговорим в этой статье, свободно
распространяется по условиям лицензии GPLv2. Есть также коммерческие версии
Professional и Enterprise, с дополнительными функциями и поддержкой. Для этой
статьи мы установили Zenoss на систему CentOS 5.1. Для симуляции сети с
разнородными серверами были использованы следующие системы: почтовый сервер
с Postfix на базе Fedora, веб-сервер с Apache на Ubuntu и Windows-сервер со
службой печати и файловым хранилищем. В этой статье будет рассказано лишь
об установке сервера Zenoss на CentOS. Насчет управляемых систем мы обсудим лишь установку и настройку SNMP-агентов.

Установка сервера Zenoss

Начнем с выбора аппаратного обеспечения. У Zenoss нет определенных требований
к компьютеру, но он активно использует MySQL, поэтому в первом приближении
стоит опираться на требования MySQL. Рекомендации могут быть такими: самый
быстрый процессор, 1 Гб памяти, быстрый винчестер и сетевая карточка Gigabit
Ethernet. Я провел несколько тестов, компьютера хватило на сеть средних
размеров (около 100 узлов/устройств). Для простоты установки в тестовом
окружении были выключены все файрволлы и системы SELinux. Если в вашей сети
есть файрволлы, нужно будет открыть порты 161 (SNMP), 8080 (страница
администрирования Zenoss) и 514 (если захотите интегрировать syslog в Zenoss).

Установите CentOS 5.1 на сервер в соответствии со своими предпочтениями.
К примеру, я устанавливал сервер без системы X Window и, соответственно, без
менеджеров рабочего стола. Назначьте компьютеру статический IP-адрес и все
остальные сетевые параметры (DNS-серверы и прочее). После установки ОС нужно
добавить в систему некоторые пакеты, с помощью следующей команды:

yum install mysql mysql-server net-snmp net-snmp-utils gmp httpd

Службы mysqld и httpd могут не запуститься сразу после установки,
поэтому возможно понадобится запустить их вручную и настроить, чтобы
они запускались при загрузке компьютера автоматически. Затем нужно
скачать последнюю версию (на момент написания статьи версия 2.1.3)
Zenoss Core в виде rpm-пакета с сайта Sourceforge.net, и установить, к
примеру, с помощью команды rpm из командной строки. После завершения
установки Zenoss нужно запустить всех его демонов, с помощью следующей
команды:

service zenoss start

Откройте в веб-браузере страницу Zenoss-сервера, указав его IP-адрес и порт
8080 (к примеру, http://192.168.142.6:8080). Для входа введите
стандартный логин admin с паролем zenoss. Откроется главная
панель. Она представляет собой несколько блоков, отображающих состояние ваших
управляемых устройств. Если вам не нравится стандартное расположение блоков,
можно пересортировать и настроить их по вашему желанию. Рекомендую поместить
на панель портлет Production States, чтобы видеть состояние тестовых систем
сразу после их добавления.

Управление устройствами в Zenoss связано с понятием классов. С
их помощью можно создать бесчисленное количество обобщений систем,
процессов или служб, за которыми нужно следить. Перед тем, как
добавлять устройства, нужно прописать community-строки протокола SNMP в
классе верхнего уровня /Devices.
Community-строки SNMP — это подобие пароля, который используется для
аутентификации трафика между устройствами. Когда одно устройство хочет
передать данные другому, они оба должны иметь совпадающие
community-строки. Во многих предприятиях администраторы пользуются
стандартной community-строкой public (и/или private),
что является существенной угрозой безопасности. Нужно изменять значение
этих строк. Рекомендуется, чтобы строка содержала как цифры, так и
буквы, чтобы ее было сложнее взломать или угадать, однако я предпочитаю
фразы — их легче запомнить.

Нажмите на пункте Devices в навигационном меню слева, откроется окно
с заголовком /Devices. Выберите вкладку zProperties и прокрутите
страницу вниз до поля zSNMPCommunity. Здесь надо ввести ту самую строку. В моем тестовом окружении я использовал community-строку whatsourclearanceclarence.
Для разных подклассов систем или отдельных устройств можно пользоваться
разными community-строками. Если укажете строку в классе /Devices, она будет использоваться для всех подклассов, если не будет указано иначе. Также можно указать несколько строк в параметре zSNMPCommunities классе /Devices.
Тогда в процесе обнаружения (о нем мы поговорим чуть позже) будут
участвовать эти разные строки. Убедитесь, что в этом списке
присутствует ваша community-строка (zSNMPCommunity).

Установка Net-SNMP на Linux-машины

Теперь нужно настроить наши Linux-системы, чтобы они могли общаться с
нашим сервером Zenoss. После установки и настройки самих операционных
систем на требуемых машинах, нужно будет на каждой из них установить
пакет Net-SNMP. К примеру, на сервере Ubuntu нужно отдать следующую
команду:

sudo apt-get install snmpd

На сервере Fedora потребуется ввести:

yum install net-snmp 

После установки пакетов Net-SNMP сотрите имеющиеся строки в секции Access Control файла /etc/snmp/snmpd.conf и добавьте следующие:

## sec.name source community
com2sec local localhost whatsourclearanceclarence
com2sec mynetwork 192.168.142.0/24 whatsourclearanceclarence

## group.name sec.model sec.name
group MyROGroup v1 local
group MyROGroup v1 mynetwork
group MyROGroup v2c local
group MyROGroup v2c mynetwork

## incl/excl subtree mask
view all included .1 80

## context sec.model sec.level prefix read write notif
access MyROGroup "" any noauth exact all none none

Но не стирайте строки ниже последней секции Access Control. Выше мы
привели настройки, обеспечивающие среднюю безопасность. Чтобы усилить
безопасность своих систем, обратитесь к руководству файла snmpd.conf
или документации по Net-SNMP. На сервере Ubuntu можно отредактировать
следующую строку файла /etc/snmp/default:

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid'

Это позволит SNMP прослушивать порт на любом адресе компьютера, а не только на локальном loopback:

Установка SNMP на Windows-машины

На сервере Windows отправляйтесь в пункт Установка и удаление программ в Панели управления. Выберите в панели слева Установка компонентов Windows. В списке компонентов нужно будет выбрать Средства управления и наблюдения, после чего нажать кнопку Состав. Отметьте в списке пункт Протокол SNMP и нажмите ОК для запуска установки. Закройте окно Установка и удаление программ и отправляйтесь в Панель управления -> Администрирование -> Службы. Найдите в списке Служба SNMP, нажмите на ней правой кнопкой мышки и выберите Свойства, появится окно настроек службы. Перейдите на вкладку Ловушки и введите в поле Имя сообщества нашу community-строку. В список Адреса назначения ловушки нужно добавить IP-адрес нашего сервера Zenoss. Теперь перейдите на вкладку Безопасность и снимите галочку с пункта Посылать ловушку проверки подлинности, введите community-строку
и установите права доступа в READ ONLY. Нажмите OK и перезапустите службу.

Теперь вернитесь на административную страницу Zenoss. Перейдите в подкласс
/Devices/Servers/Windows и во вкладке zProperties введите имя
пользователя домена и его пароль в поля zWinUser и zWinPassword,
соответственно. С помощью этого аккаунта Zenoss будет получать доступ
к Windows Management Instrumentation (WMI) на ваших Windows-системах. Не забудьте
нажать кнопку Save, чтобы сохранить изменения.

Добавление устройств в Zenoss

Теперь наши устройства поддерживают SNMP, и мы можем добавлять их в
Zenoss. Добавлять устройства можно как по отдельности, так и путем
сканирования сети. Попробуем оба способа. Для добавления сервера Ubuntu
в Zenoss нажмите на Add Device в разделе Management. Нужно будет ввести IP-адрес сервера и community-строку. В Device Class Path выберите /Server/Linux.
Можно добавить и другую информацию об аппаратном и программном
обеспечении, но как минимум требуется ввести IP-адрес и community (см.
рисунок 1). Нажмите кнопку Add Device, и начнется процесс
обнаружения устройства. После окончания процесса нажмите на новом
устройстве, чтобы посмотреть сведения о нем.



Рисунок 1. Добавление устройства в Zenoss

Чтобы просканировать сеть на наличие SNMP-устройств, выберите Networks из раздела Browse By в меню слева. Если вашей сети в списке нет, ее нужно добавить (в CIDR-нотации). Теперь отметьте новую сеть галочкой и выберите Discover Devices
в выпадающем меню (его можно вызвать, нажав на треугольнике в
заголовке). Через некоторое время страница начнет наполняться
сообщениями о процессе поиска устройств. По завершению процесса можно
получить доступ к найденным устройствам, нажимая на ссылки внизу
страницы. Любое найденное устройство помещается в класс /Discovered. В моем случае были найдены сервера Fedora и Windows, поэтому их теперь нужно разнести по классам /Devices/Servers/Linux и /Devices/Servers/Windows соответственно. Это можно сделать во вкладке Status каждого сервера, либо выбрав Manage -> Change Class в выпадающем меню.

Если все шаги прошли успешно, значит, теперь у нас есть вполне
функциональная система SNMP-мониторинга. Она способна отслеживать
доступность (см. рисунок 2) и производительность (см. рисунок 3) наших
серверов. Можно добавить и другие мониторы, однако в нашем случае
остановимся на стандартном мониторе localhost.



Рисунок 2. Панель управления Zenoss



Рисунок 3. Данные о производительности начинают собираться сразу после обнаружения службы

Создание пользователей и настройка оповещений по E-mail

На данном этапе мы можем отслеживать проблемы на управляемых
устройствах с главной панели, и будем оповещены лишь при посещении
сайта сервера. Было бы намного удобнее, если бы оповещения о сбоях
приходили по электронной почте. Для реализации этой идеи нам
потребуется создать отдельную учетную запись, т.к. оповещения не
работают под учетной записью admin. Нажмите на ссылке Setting в секции Management. В выпадающем меню (то, что в заголовке окна) выберите Add User.
Когда спросят, введите имя пользователя и адрес его электронной почты.
Для редактирования свойств нового пользователя щелкните на нем. Введите
пароль для новой учетной записи, и задайте роль Manager. Не забудьте нажать кнопку Save
внизу экрана. Выйдите из системы, и зайдите снова под вновь созданной
учетной записью. Откройте страницу настроек и введите информацию о
вашем SMTP-сервере. После установки SMTP нужно создать правило Alerting Rule для нашего нового пользователя. Нажмите на вкладке Users, и выберите из списка учетную запись, которую мы только что создали. На открывшейся странице щелкните по вкладке Edit и введите адреса электронной почты, по которым нужно рассылать оповещения. Теперь отправляйтесь на вкладку Alerting Rules и создайте новое правило через выпадающее меню. На вкладке Edit открывшегося окна смените поле Action на email, Enabled на True, а формула Severity измените на >= Warning (как на рисунке 4). Не забудьте нажать Save.



Рисунок 4. Создание правила предупреждения

Приведенное выше правило отправляет оповещение, когда на любом сервере из группы Production начнут происходить события уровня Warning
и выше (см. рисунок 5). С помощью фильтра можно создать любое
количество правил, и затем применять их к отдельным устройствам или
группам устройств. Если хотите ограничить период срабатывания правил (к
примеру, рабочими часами), воспользуйтесь вкладкой Schedule окна Alerting Rule.
Если расписание не указано, тогда правило действует круглосуточно. В
каждом правиле может быть оповещен лишь один пользователь. Также можно
создавать группы пользователей на странице Settings, таким
образом можно оповещать сразу нескольких. Либо в свойствах пользователя
можно указать групповой почтовый ящик (адрес рассылки), тогда при
должной настройке вашего почтового сервера эффект будет аналогичным.



Рисунок 5. Предупреждения Zenoss отсылаются на ваш почтовый ящик

Процессы и службы

Можно расширить функциональность нашей системы так, чтобы она
отслеживала наличие определенных процессов и работоспособность служб.
Zenoss понимает процесс как активную программу (обычно демон),
работающую на управляемом устройстве. Для отслеживания наличия процесса
Zenoss использует регулярные выражения.

Чтобы отслеживать работоспособность Postfix на почтовом сервере, давайте определим его как процесс. Перейдите на страницу Processes секции Classes. Из выпадающего меню вкладки Processes выберите Add Process. Введите в качестве идентификатора процесса Postfix. После этого нажмите на вновь созданном процессе. Перейдите на вкладку Edit введите в поле Regex значение master. Нажмите Save. Теперь откройте вкладку zProperties, и убедитесь, что поле zMonitor установлено в True. Еще раз нажмите Save. Перейдите на главную панель Zenoss, выберите наш почтовый сервер, и на вкладке OS выберите пункт Add OS Process
в самом верхнем выпадающем меню. Добавиви процесс, создадим оповещение,
как мы делали раньше. Мы будем извещены, когда процесс Postfix
перестанет работать. Пока находитесь на вкладке OS, поставьте галочку рядом с процессом Postfix, и из выпадающего меню OS Processes выберите Lock OSProcess. В появившемся списке опций выберите Lock from deletion. Это защищает процесс от его перезаписи в случае,
если Zenoss реконструирует сервер.

Службы в Zenoss определяются активными сетевыми портами, а не
запущенными демонами. В комплекте Zenoss есть сведения о множестве
служб, и наверняка в обширном списке найдется и ваша служба. Встроенные
службы разбиты на две категории: IPServices и WinServices. IPServices
используют всевозможные порты диапазона 1-65535 и включают в себя
большинство привычных сетевых приложений/протоколов, таких как SMTP
(порт 25), DNS (53) и HTTP (80). WinServices используются для
отслеживания служб на Windows-серверах (см. рисунок 6).



Рисунок 6. Zenoss может «из коробки» отслеживать работу многих Windows-служб

Добавить службу куда проще, чем процесс, ведь службы в Zenoss уже
предопределены. Для отслеживания HTTP-службы на нашем веб-сервере
перейдите к серверу на главной панели. На вкладке OS в выпадающем меню выберите Add IPService. В поле Service Class введите HTTP. Обратите внимание, что поле автоматически дополняется по мере ввода строки. В качестве протокола выберите TCP. Нажмите ОК, а затем Save. Как и в случае с OSProcess, вернитесь на вкладку OS сервера и отметьте Lock IPService. Теперь наш Zenoss отслеживает доступность веб-службы сервера (см. рисунок 7).



Рисунок 7. Мониторинг HTTP как IPService

Это лишь начало

В Zenoss есть множество других функций, для рассказа о которых статья просто
слишком мала. Среди этих функций такие как Network Maps
(см. рисунок 8), интерфейс к Google Maps для распределенного
мониторинга (см. рисунок 9), а также Zenpacks, предоставляющие
дополнительные средства для мониторинга и измерения производительности
самых распространенных приложений.



Рисунок 8. Zenoss автоматически дорисовывает карту сети



Рисунок 9. Несколько сайтов можно отслеживать с помощью Google Maps API

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

Запись опубликована в рубрике zenoss_i_iskusstvo_setevogo_monitoringa. Добавьте в закладки постоянную ссылку.