суббота, 5 января 2013 г.

 Система мониторинга Zenoss Core

http://www.tux.in.ua/articles/2906
Системы мониторинга наблюдают за состоянием устройств в сети и позволяют предупредить проблемы еще до их появления. Zenoss даст фору многим проприетарным продуктам.
В сетях даже небольших организаций насчитывается не один десяток устройств, самого разного назначения. Некоторые из них должны быть доступны 24 часа 7 дней в неделю, другие время от времени. Но выход из строя или проблемы с любым из них означает прерывание бизнес-процессов, потерю или недовольство клиентов, а значит упущенную прибыль. Постоянный мониторинг сервисов и ресурсов позволяет определить большую часть проблем и среагировать еще до того как произойдет сбой. Если же аварийная ситуация произошла, то подобные системы автоматически оповестят админа, который может среагировать раньше, а значит и недовольных будет меньше. Поискав в Интернет можно найти несколько системы мониторинга доступные под открытой лицензией — NagiosGroundWork MonitorCacti, Zabbix и другие. Каждая из них обладает интересными возможностями, имеют многочисленных как сторонников так и противников. Но возможность выбора это всегда хорошо, особенно, что касается OpenSource, всегда можно подобрать наиболее подходящее для конкретных условий решение. В статье познакомимся с возможностями и основными настройками системы мониторинга Zenoss Core (http://community.zenoss.org/).

Возможности Zenoss Core

Распространяемая под лицензией GPL система мониторинга сетевой инфраструктуры Zenoss Core, не смотря на бесплатность представляет собой серьезное решение уровня предприятия. Начало разработок датируется 2002 годом, новый проект позиционировался как открытая альтернатива таким популярным решениям как IBM Tivoli, HP OpenView, BMC Patrol. Но в открытом доступе на SourceForge.net Zenoss Core появился лишь спустя 4 года, когда была уже практически готова версия 1.0, с тех пор различные релизы с этого сайта скачаны более 1 миллиона раз, что косвенно подтверждает популярность и доверие пользователей. За этот период была образована Zenoss Inc., которая впоследствии стала продвигать коммерческую ветку продукта Zenoss Enterprise, отличающуюся наличием дополнительных модулей и официальной поддержкой. Кстати Zenoss Enterprise используется в таких известных компаниях как VMware, NASA, Motorola, ATI. Также Zenoss Inc. обеспечивает финансовую поддержку и разработку GPL версии системы.
Кроме оригинальных разработок, в Zenoss Core для сбора и анализа информации используются другие открытые решения — Net-SNMP,RRDtool, Twisted. Написан на языке Python с использованием сервера приложений Zope, данные хранятся в MySQL.
Система, построенная на Zenoss Core, обеспечивает следующие возможности:
  • мониторинг сетевых устройств при помощи SNMP, SSH, WMI, JMX, Ping/ICMP и Syslog
  • мониторинг сетевых сервисов — HTTP, POP3, NNTP, SNMP, FTP
  • мониторинг системных ресурсов популярных операционных систем
  • мониторинг производительности устройств
  • система оповещения с настраиваемыми событиями, реакцией и обнаружением взаимосвязи
  • возможность расширения функциональности за счет плагинов собственной разработки ZenPack и плагинов системы мониторинга Nagios
Функция автообнаружения позволяет быстро собрать информацию обо все активных системах в сети. При этом ядро Zenoss умеет анализировать среду, что дает возможность быстро разобраться с большим количеством специфических устройств. Параметры собранные разными способами нормализуются с использованием шаблонов и приводятся к единому виду.
В случае обнаружения проблем, Zenoss может не только отправить сообщение администратору, но и например выполнить команду на перезапуск сервиса.
Список ZenPacks кто они такие? Там выше в перечислении есть доступных на сайте проекта довольно внушительный и насчитывает более 200 наименований. Здесь можно найти расширения для мониторинга ряда устройств (APC, Cisco, Dell), сервисов (Asterisk, VMware, Ganglia, MySQL, Microsoft IIS) и многих других. Относительно недавно в этом списке появились ZenPacks добавляющие возможность управления и мониторинга удаленных систем при помощи Puppet и Cfengine .
Для установки сервера Zenoss потребуется компьютер, работающий под управлением Linux, FreeBSD, Solaris/OpenSolaris, Mac OS X или VMware Appliance.
На клиентских компьютерах программа-агент не устанавливается, это упрощает развертывание. Для построения карт сетей и обнаружения систем и сервисов применяется автоматическое сканирование. Управление производится при помощи веб-интерфейса. Полностью поддерживаются браузеры Firefox 3 и Internet Explorer 7 и 8, для остальных заявлена лишь частичная совместимость. При написании статьи автор несколько дней работал с Chromium 9.0, особых проблем не заметил. Интерфейс в настоящее время не локализован, вероятно потому что в этом нет особого смысла. Все термины общеупотребляемы, поэтому человек с базовым английским может разобраться с настройками в Zenoss без особого труда. При желании локализацию можно провести самостоятельно.
Чтобы получать сообщения в реальном времени на рабочий стол, отдельно устанавливаются специальные аплеты Zapplet или ZenTrayIcon. При этом работа Zapplet возможна только на Linux (в будущем планируется порт под Windows), ZenTrayIcon протестирован под Fedora 7 и Windows XP.
Также хочется отметить вполне подробную документацию на английском языке и наличие своего канала на YouTube.

Установка Zenoss в Ubuntu 10.04 LTS

На сайте Zenoss кроме исходных текстов доступны x86 и x64 пакеты пакеты под популярные дистрибутивы Linux: RHEL, CentOS, Fedora, Ubuntu, Debian, Debian и SUSE/openSUSE в двух вариантах: Stack и Native. Их функциональность одинакова, но Stack — это двоичный универсальный.bin-инсталлятор, позволяющий задать в процессе дополнительные параметры. И имеющий в том числе и графический интерфейс. Вариант Native это собой обычный deb или rpm пакет, устанавливаемый при помощи штатного пакетного менеджера дистрибутива. Кроме того, для Debian/Ubuntu, разработчики предлагают репозитарий, подключаемый в /etc/apt/sources.list строкой:
deb http://dev.zenoss.org/deb main stable
Будет рассмотрена установка и в варианте Stack, и Native, и начнем со Stack, как с более универсальной.
Минимальные системные требования, которые даны на сайте проекта 2х ядерный CPU, 4 Гб RAM и 300 Гб жесткий диск, соответствуют мониторингу 1 – 250 устройств.
В дальнейшем рассмотрим установку Zenoss в Ubuntu 10.04 LTS.
При помощи APT ставим MySQL и компоненты SNMP:
$ sudo apt-get install mysql-server snmpd snmp
Настроим SNMP
$ sudo cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
Генерируем файл, копируем его на место и перезапускаем сервис.
$ sudo snmpconf
$ sudo cp snmpd.conf /etc/snmp/
$ sudo service snmpd restart
Проверяем работу.
$ snmpwalk -v2c -c public 127.0.0.1 system
Скачиваем по ссылке на сайте проекта установочный файл и запускаем.
$ chmod +x zenoss-stack-3.0.3-linux-x64.bin
$ sudo ./zenoss-stack-3.0.3-linux-x64.bin
Появляется мастер установки, продвигаясь по шагам указываем каталог в который устанавливается Zenoss (по умолчанию /usr/local/zenoss) и пароль доступа пользователя root к MySQL. После этого начнется процесс распаковки пакета, установка и создание базы данных.
Cкрипт с расширением bin удобен тем, что поддерживает несколько дополнительных ключей и режимов. Полный список, можно получить при помощи параметра -help. Так по умолчанию для управления Zenoss через веб-интерфейс используется порт 8080, в случае если он свободен, скрипт не выдаст запрос, иначе одним из шагов установки предстоит указать номер порта. Используя ключ “—zope_server_port” номер порта можно указать сразу на этапе установки, при работе в текстовом терминале используется —mode=text. Также возможно использование подготовленного файла ответов.
Если выбран deb пакет, то команда стандартна:
$ sudo dpkg -i ./zenoss-stack-3.0.3_x64.deb
При использовании репозитария следует просто установить пакет zenoss-stack:
$ sudo apt-get update
$ sudo apt-get install zenoss-stack
Если сервер MySQL установлен на другом компьютере, следует указать его данные при помощи ключей -mysql* (для bin) или вручную прописать данные в файле zenoss/bin/zenoss_init_pre.
# environment variable
export OS_USERNAME="zenoss"
export OS_UID="1001"
export ZENHOME="/usr/local/zenoss/zenoss"
export MYSQLHOST="localhost"
export MYSQLPORT="3307"
export MYSQLROOTUSER="root"
export MYSQLROOTPASSWD="myslq_passwd"
export MYSQLUSER="zenoss"
export MYSQLPASS="zenoss"
Данные, указанные в MYSQLUSER и MYSQLPASS в Zenoss устанавливаются по умолчанию, в целях безопасности пароль лучше изменить.
Также документация проекта рекомендует увеличить значения некоторых системных параметров в /etc/sysctl.conf:
$ sudo nano /etc/sysctl.conf
net.core.rmem_default=1048576
net.core.rmem_max=1048576
net.core.wmem_default=1048576
net.core.wmem_max=1048576
В правилах межсетевого экрана следует отрыть порты 8080 (веб-интерфейс Zenoss), 514 (Syslog) и 162 (SNMP).
Проверяем, слушается ли нужный порт:
$ netstat -ant | grep 8080
Если нет, то запускаем Zenoss:
$ sudo service zenoss-stack start
И обеспечиваем автозапуск:
$ sudo update-rc.d zenoss-stack enable S

Открываем в веб-браузере страницу Zenoss — http://localhost:8080/ и приступаем к предварительным настройкам. Необходимо пройти всего два шага. Выбираем Get Started и на Set Up Initial Users вводим пароль администратора (admin) и создаем новую учетную запись обычного пользователя.

Следующий шаг позволяет добавить устройства для мониторинга. Здесь доступны два варианта: ручной (Manually find devices) и автоматический (Autodiscover devices) поиск. В первом случае необходимо указывать имя или IP-адрес системы и в окне справа выбрать типSNMP (Linux ServerWindows Server или Generic Switch/Router). В случае автоматического поиска устройств, необходимо задать диапазон IP, указать пароль root для доступа к Unix-системам через SSH или пароль администратора Windows. Локальная система будет добавлена автоматически. При желании можно отказаться на этом этапе от добавления устройств. Подтверждаем выбор, после чего загрузится панель Zenoss.


Если для работы выбрана образ VMware , всего этого нет, для регистрации через веб-интерфейс используем логин root и пароль zenoss.

Панель администрирования Zenoss

Панель Zenoss состоит из нескольких меню. После регистрации пользователь попадает в Dashboard, в котором выводится основная информация. Состоит Dashboard из сменных панелей — портлетов (portlets), которые можно удалять, устанавливать и настраивать по своему усмотрению. По умолчанию это панели: Welcome (ссылки на документацию), Device Issues (статистика по устройствам) и Locations(показывает расположение устройств на Google Maps). Для корректности работы последнего потребуется ключ Google Maps API.



В правом углу портлета находится кнопка, нажатие на которую вызовет меню настроек, откуда можно в том числе и удалить портлет с панели. Расположение портлетов изменяется при помощи кнопки Configure Layot, при нажатии Add portlet получим список из 9 возможных портлетов а почему именно из 9 — это жесткое ограничение? Их всего там 9, просто выбираем нужный, он появляется в поле и затем перетаскиваем на свое место.
Список портлетов доступных пользователям с разными правами, настраивается в Advanced — Setting — Portlets.

Добавляем устройства

Начинать работу следует с меню Infrastructure в котором собраны все системы и устройства, известные Zenoss. Для удобства они разбиты по классам (автоматически), группам, системам и расположению. Напротив каждого устройства показывается значок, говорящий о его состоянии. Чтобы добавить новое устройство или компьютер, достаточно нажать кнопку с изображением знака +, выбрать вариант (один или несколько компьютеров) и затем указать параметры поиска. Всплывающая подсказка сообщит, что новое задание выполняется. По завершению можно получить доступ к найденным устройствам, просто выбрав их в окне программы. По умолчанию все системы автоматически распределяются по классам (Device Classes), в случае ошибки класс можно изменить, просто перетащив ярлык на свое место, захватив мышкой.
В подменю Modelles Plugins при помощи перетаскивания можно добавить дополнительные параметры, которые будут отслеживаться при помощи текущего шаблона.
Также в Overview заполняем тэги, редактируем параметры производителя устройства, данные ОС и прочие. Все это позволит Zenoss правильно группировать системы.
Чтобы начать получать данные необходимо подключить Zenoss к SNMP, для этого выберем в Devices устройство и затем пункт Configuration Properties. Здесь очень много настроек с назначением которых предстоит разобраться, иначе мы не получим полную информацию. Назначение большинства из них понятно из контекста и примеров. Так параметры для подключения к SNMP-демону прописываются в zSnmpCommunity иzSnmpPrivPassword, данные для удаленного выполнения команд через SSH — в zCommandUsername и zCommandPassword. Убедитесь также что в zSnmpCommunities прописано значение из zSnmpCommunity.
Также стоит проверить значения шаблонов локальных параметров zLocalIpAddresseszLocalInterfaceNameszHardDiskMapMatch и других. И хотя значения установленные по-умолчанию подходят для большинства ситуаций, в правилах бывают и исключения. Есть и специфические параметры. Например в zNmapPortscanOptions указываются параметры для утилиты сканирования nmap.
В подменю Administration редактируются команды, которые затем можно вызвать выбрав в меню Commands. Результат выполнения будет показан в отдельном прозрачном окне.
В подменю Network настраиваются сети: вы просто добавляете вручную IP подсети с указанием сетевой маски, в последующем в этих сетях Zenoss будет производить автопоиск устройств.



Создание правила для отправки почтового сообщения

Обработка событий

В меню Events собраны все события с добавленных систем и устройств. Так как количество сообщений может быть большим, предусмотрены фильтры по статусу, важности, по каждой колонке, плюс сортировка по алфавиту и колонкам. Двойной щелчок позволяет просмотреть подробности, в которые администратор может добавить свои пометки. Предусмотрен также экспорт выбранных событий в файлы формата XML и CSV. В других подменю доступна история, управление классами и подклассами событий и настройка кэширования. Отдельно хочу отметить подменю Event Manager, где настраиваются дополнительные поля таблиц базы данных, в которых будут записаны события, подключение к MySQL и триггеры (команды администратора выполняемые при наступлении события).



Настройка мониторинга IP сервиса


Триггер создается в два этапа. Вначале в поле Event Manager — Command добавляем название новой команды, просто прописав ее в поле и нажав кнопку Add. Теперь выбираем ее в списке и редактируем, указав собственно команду, которая должна выполниться, время задержки, повтора, и условие (система, событие, устройство, адрес и т.п.). По окончании устанавливаем Enabled в True и сохраняем результат.
После того как все устройства и сервисы будут добавлены, и начинает поступать информация, администратору необходимо отслеживать критические вопросы. Для этого Zenoss содержит большое количество готовых отчетов. Все они расположены в меню Reports. Отчеты разбиты по нескольким категориям — устройства, производительность, события, пользователи и другие. Естественно предустановок скорее всего будет недостаточно, но добавить новый отчет очень просто. Нажимаем на значок с изображением + и в меню выбираем вариант отчета (Custom Device Reports, Graph и Multi-Graph Reports).
И, наконец, перейдя в Advanced, мы можем настроить подключение к SMTP-серверу (для отправки почтовых уведомлений), установить параметры приоритета, роли администрирования, настроить пользовательские команды, просмотреть журналы работы демонов, создать резервную копию базы данных.

Учетные данные и оповещения

Учетные записи пользователей и групп создаются в подменю Advanced — Users. Процесс, в общем, прост. Вначале указываем логин пользователя и его почтовый адрес, затем переходим к редактированию, где заполняем предложенные поля (пароль, роли и объекты к которым будет иметь доступ). Чтобы пользователь получал оповещение, необходимо создать правило в подменю Alerting Rules. Принцип тот же. Нажимаем кнопку с плюсом и вводим название, затем приступаем к редактированию записи. Добавляем задержку по времени (а вдруг оживет?), альтернативный почтовый адрес, в поле Action устанавливаем значение email, затем в Where набираем правило. Указав условия и фильтр при помощи раскрывающегося списка, меняем Enabled на True и сохраняем правило.
Локализация Zenoss
До недавнего времени разработчики не представляли удобных средств для локализации интерфейса. Возможно в этом не было острой необходимости, ведь Zenoss ориентирован прежде всего на специалистов, которые обычно владеют необходимой терминологией. Но теперь все необходимое есть. Процесс локализации стандартен для приложений, использующих GNU Gettex. Все файлы собраны в каталоге $ZENHOME/zenoss/Products/ZenUI3/locales/ по умолчанию здесь два подкаталога en и fr, содержание которых можно взять за основу. Создаем подкаталог ru/LC_MESSAGES в который копируем файл zenoss.po из французского перевода (в английском его нет). Формат записи внутри прост.
msgid «Reports»
msgstr «Отчеты»
Переводим последовательно все термины, затем компилируем в файл понятного Zenoss формата.
msgfmt -o zenoss.mo zenoss.po
Администратор может создать любое количество правил, специфических для разных устройств. Чтобы сообщения отправлялись нескольким пользователям, следует использовать групповой адрес или создать группу, для которой затем создать свои Alerting Rules. На сайте доступны расширения, позволяющие отправлять оповещения в твиттер или СМС. Кроме того практически все настройки и правила можно легко импортировать в ZenPack, чтобы затем быстро повторить на другой системе или выложить в открытый достукп.
По умолчанию правила работают круглосуточно, но зайдя в Schedule окна Alerting Rule можем указать время его действия.
Для упрощения развертывания системы мониторинга разработчики подготовили наборы шаблонов, в которых прописано, как и с какими параметрами опрашивать различные типы устройств, графики и так далее. Их полный список доступен в Advanced — Monitoring Templates. Опытный администратор может самостоятельно создать готовые шаблоны под любые условия. Процесс максимально упрощен. Вначале необходимо выбрать шаблон который станет основой, затем заполнить источники, указать порог и данные для построения графиков. Конечно, здесь понадобится некоторый опыт, но все равно это на много проще чем самостоятельно писать правила для SNMP и RRDTool.


Графики производительности Zenoss

Мониторинг процесса

Мониторинг общих параметров сервера, конечно интересен, но администратору в большинстве случаев необходимо знать состояние конкретного сервиса. Выбираем устройство и переходим в меню Devices, в котором находим несколько подменю, где можно настроить контроль сервисов по состоянию процесса или по ответу, полученному с сетевого порта. После установки в IP Services и Windows Servicesдоступно около 4000 готовых, шаблонов позволяющих судить о состоянии сервиса Unix и Windows машин соответственно. Просто в настройках сервера выбираем Add IPService и указываем предопределенный параметр.
В Processes создаются правила, позволяющие отслеживать состояние отдельного процесса. Здесь поступаем аналогично другим настройкам. Добавляем новое название, например httpd, после чего вызываем окно редактирования. Основным параметром здесь является Regex, который определяет шаблон имени процесса, вводим httpd. Проверяем, чтобы zMonitor был установлен в True, теперь осталось создать оповещение как говорилось выше и администратор будет уведомлен о проблемах.
Как уже говорилось на сайте проекта доступны расширения. Устанавливаются они очень просто. Скачиваем файл и затем указываем на него в Advanced — ZenPacks

***

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