Управление сервисами в большой гетерогенной сети задача не из простых. Необходимо не только обновлять, отслеживать их состояние и все изменения. Со всем этим может справиться открытая система RHQ.
Вообще задача администратора укладывается в набор стандартных операций – установить, обновить и контролировать. В случае единичного сервиса это не сложно, но когда серверов и приложений много это становится проблемой. Уследить за всем при помощи штатных средств становится тяжелее, а доступные специализированные, как правило, решают лишь одну задачу. Например, Cacti, Zabbix ориентированны на мониторинг, Puppet и Cfengine – централизованное управление. Конечно, чтобы отслеживать все изменения в конфигурационных файлах можно задействовать одну из систем контроля версий, но в итоге мы сталкиваемся с ситуацией, что средств управления становится слишком много и они разобщены.
Возможности RHQ
Открытая система RHQ (
Для решения своих задач используются агенты, устанавливаемые на всех подчиненных серверах. Такой подход упрощает развертывание, так как агенты после установки обнаруживаются автоматически и возможности по управлению и инвентаризации удаленных систем практически не ограничены.
Все настройки и собранная информация доступна через веб-интерфейс, базирующийся на фрэймворке SmartGWT и функционирующий с использованием технологии Ajax. Забегая на перед скажу, что в настоящее время интерфейс не локализован, работы по переводу только начаты. Очевидно, администраторы того уровня, на который рассчитан RHQ должны владеть английским на минимальном уровне. Назначение большинства параметров очевидно, поэтому особых неудобств в освоении быть не должно.
Так как в интерфейсе объектов может быть собрано много, используется некоторая иерархия. Ресурсы подразделяются по типам (достаточно общий термин описываемый в плагинах) и категориям. В настоящее время используется три категории – платформа, операционная система и сервис. С их помощью строится иерархия ресурсов, то есть описание зависимостей. Администратор может просмотреть список приложений на определенном сервере или выбрать однотипные приложения. Кроме этого вручную присваиваются тэги и объекты можно самостоятельно распределять по группам. То есть в итоге быстро отобрать приложения по некоторому критерию очень легко.
Одной из важных функций RHQ является настройка ресурсов при помощи интерфейса. Среди них — конфигурационные файлы PostgreSQL, MySQL, JBOSS, Apache и некоторые другие. Поддержка такой возможности реализована в плагине, поэтому теоретически управлять можно любым приложением. При наличии нескольких серверов это более чем удобно. Поддерживается контроль версий и всегда можно просмотреть, кто и что изменил и при необходимости откатиться к старым настройкам.
Кроме этого часть ресурсов поддерживают так называемые операции, то есть возможность управления его работой, например запуск и остановка сервиса. Их список также определяется плагином, но для разных версий одного и того же приложения доступные операции могут отличаться. Администратор выбрав в интерфейсе нужный объект получает список всех доступных для него действий, которое можно выполнить немедленно или по расписанию, указав однократное или многократное повторение. Вне зависимости от времени исполнения, все операции проходят через планировщик, который связываясь с менеджером управления отдает команду агенту на исполнение и контролирует состояние. Результат сохраняется и в последующем может быть использован для анализа.
Еще одной функцией является измерение времени отклика приложения (по умолчанию отключена). После активации RHQ будет собирать данные по каждому веб-запросу в результате можно получить полную картину, какие URL обрабатываются быстрее, а какие с задержкой. Собранные данные выводятся, в том числе и в виде наглядной диаграммы.
Установленный агент собирает все связанные события, которые затем отправляются на сервер, где могут быть просмотрены и отобраны с помощью фильтров. Собранная в одном месте информация позволяет лучше видеть картину и при необходимости получить данные за любой период.
На основе событий, которые проходят через ряд фильтров, корреляцию и прочую обработку строятся оповещения (Alerts). При этом различаются связанные события, группировка однотипных событий и необходимость участия администратора в решении одного или нескольких событий. Администратор может самостоятельно задавать условия для активации оповещения, например наличие свободного места на разделе жесткого диска в абсолютном, относительном или процентном значении, с учетом конкретной платформы или группы (название/версия ОС, дистрибутив, архитектура и т.п.). В настоящее время поддерживается уведомление администратора по электронной почте.
Еще одна из полезных функций RHQ – распространение файлов на удаленной системе. Администратор указывает файл или архив который затем распаковывается агентом. Таким образом можно быстро обновить сайт или установить Java приложение. Поддерживается установка приложений при помощи пакетного менеджера YUM и jar файлов и т.п.Реализован контроль версий, поэтому если новый релиз работает не так, легко сделать откат к старым настройкам.
Возможна работа сервера RHQ в High Availability кластере. Для обмена между сервером и агентом используется TLS и X509. Управление может осуществляться несколькими администраторами, ролевая система доступа позволяет назначить действительно необходимые права вплоть до отдельного ресурса. Поддерживается внутренняя база данных пользователей, возможна синхронизация с LDAP.
Документацию проекта можно назвать достаточной. Написана она “под себя” и на английском языке, объяснены основные принципы построения и работы с RHQ, многие вопросы будут интересны скорее разработчикам, чем администраторам. Но часто вместо статей представлены просто “заглушки” в описании часто отсутствуют некоторые тонкости, мелочи без которых новичку будет не просто справиться с первоначальной настройкой. Хотя все проблемы преодолимы. В качестве плюса можно отметить несколько видеоуроков показывающих основные моменты установки и настройки. Сами плагины являются jar файлами которые можно распаковать для изучения внутренностей.
Установка RHQ
Актуальной является версия 4.4, которую и буде далее рассматривать. Сервер и агент RHQ может быть установлен на платформах подерживающийх Java 6. Официально поддерживаются Linux или Windows, архитектура x86, x64 и ia64. Из Linux дистрибутивов судя по всему сами разработчики отдают предпочтение Fedora, в частности в RHQ поддерживается лишь YUM. Но RHQ отлично работает на Ubuntu, Debian и других дистрибутивах. При этом все 64 битные ОС за исключением Linux должны быть в режиме 32 битной совместимости. Время на компьютерах в сети должно быть синхронизировано. Особо отмечается, что GNU libgcj не поддерживается.
Вся информация сохраняется в базе данных. В поставке дистрибутива имеется встроенная СУБД H2, которую можно использовать лишь в тестовой среде. В реальной сети следует подключить внешнюю базу данных, в качестве которых рекомендуется PostgreSQL, Oracle или Microsoft SQL Server. Хотя есть вероятность, что можно адаптировать и любую другую СУБД. В статье все примеры буду приводить применительно к Ubuntu/Debian.
Устанавливаем необходимые компоненты.
$ sudo apt-get install sun-java6-jre postgresql
После установки PostgreSQL следует поправить механизм аутентификации. В файле /etc/postgesql/8.4/main/pg_hba.conf меняем значения:
local all all trust
host all all 127.0.0.1/32 trust
Кроме этого необходимо изменить настройки в postgresql.conf, если этого не сделать, то даже на локальной системе RHQ немного “думает”:
listen_addresses = '*'
shared_buffers = 80MB # по умолчанию 24MB
work_mem = 2048 # по умолчанию 1MB
statement_timeout = 30s # по умолчанию 0s
checkpoint_segments = 10 # по умолчанию 3
# в процессе работы RHQ использует около 55 подключений к базе данных, плюс часть необходимо зарезервировать для администратора.
max_connections = 60 # по умолчанию 100
superuser_reserved_connections = 5 # по умолчанию 3
max_prepared_transactions = 60
Перезапускаем сервер и создаем учетную запись и базу данных:
$ sudo service postgresql restart
$ createuser -h 127.0.0.1 -p 5432 -U postgres -S -D -R rhqadmin
$ createdb -h 127.0.0.1 -p 5432 -U postgres -O rhqadmin rhq
Скачиваем архив с исходными текстами по ссылке с сайта проекта и распаковываем:
$ sudo unzip rhq-server-4.0.1.zip –d /opt
$ cd /opt/rhq-server-4.0.1/bin
Чтобы сервер нашел исполняемый файл, перед его запуском следует установить переменную RHQ_SERVER_JAVA_HOME или RHQ_SERVER_JAVA_EXE_FILE_PATH в файле rhq-server.sh. Там же устанавливаем RHQ_SERVER_HOME указывающую на рабочий каталог сервера:
$ sudo nano rhq-server.sh
RHQ_SERVER_HOME=/opt/rhq-server-4.4
RHQ_SERVER_JAVA_HOME=/usr/lib/jvm/java-6-sun
JAVA_HOME =/usr/lib/jvm/java-6-sun
В других параметрах файла rhq-server.sh можно указать специфические переменные для запуска виртуальной машины Java и сервера RHQ, установить отладку и некоторые другие. При первых настройках делать это необязательно. Кроме этого некоторые установки производятся в файлах rhq-server.properties и rhq-server.security-policy. В частности в rhq-server.properties прописывается подключение к БД, работа в НА-кластере, номера портов для подключения в частности HTTP и HTTPS используемых в веб-консоли, работа с плагинами, автоустановка сервера и многие другие. Пока в их непосредственной правке нет необходимости, большую их часть можно будет изменить в окне программы установки.
Запускаем сервер.
$ sudo ./rhq-server.sh start
Trying to start the RHQ Server...
RHQ Server (pid 6459) is starting
Для перехода к программе установки следует набрать в веб-браузере http://localhost:7080/. В открывшемся окне доступны ссылки на всю необходимую документацию по развертыванию сервера и агентов. Нажимаем ссылку “Click here to continue the installation” и в следующем окне получаем три группы параметров. Некоторые из них отмечены как “Restart Required”. Последовательно проходим каждую и уточняем настройки, которые обычно подхватываются автоматически. Вначале — тип базы данных и параметры подключения.
При выборе нужной СУБД в списке Database Type, будут автоматически заполнены все поля для подключения на локальной системе. Поэтому их следует лишь проверить, изменять придется лишь если база данных запущена на другом компьютере. Сразу же следует проверить соединение, нажав кнопку Test Connection. Если все нормально возле кнопки появится зеленый флажок. Далее, установка имени сервера и номеров портов для подключения к интерфейсу администрирования, параметры подключения к SMTP серверу. Если сервер имеет несколько сетевых карт, но нужно прослушивать только один в “Server Bind Address” указываем IP-адрес этого интерфейса.
Если значение параметра не понятно, то для получения справки достаточно нажать на имя параметра. Более тонкую настройку сервера производят при активации флажка “Show Advanced Setting”. В последующем изменить установки можно напрямую отредактировав файл rhq-server.properties. При развертывании нескольких серверов можно создать заранее шаблон, который и копировать на удаленные сервера. При установленных в auto параметрах rhq.autoinstall.* весь процесс будет происходить автоматически.
Мониторинг самого сервера RHQ можно производить при помощи агента встроенного в сервер агента или внешнего, разворачиваемого обычным образом в качестве отдельного приложения. Первый вариант активируется установкой в Yes параметра “Embedded Agent Enabled” или соответствующими опциями в конфигурационном файле (группа Embedded RHQ Agent). Но в данный момент внутреннего агента рекомендуется использовать исключительно в ознакомительных целях, в промышленной среде лучше выбрать внешнее приложение.
Когда всё установлено, можно начинать собственно установку. Нажимаем кнопку “Install Server!” и ждем окончания процесса, который займет некоторое время. Разработчики предусмотрели индикатор показывающий, что дело движется.
Чтобы организовать автозагрузку сервера в Fedora достаточно использовать chkconfig внутри rhq-server.sh есть всё необходимое. В Debian для этих целей можно прописать путь к скрипту в /etc/rc.local или создать необходимые для update-rc.d записи по примеру (http://wiki.debian.org/LSBInitScripts).
Для входа в консоль управления используем логин и пароль rhqadmin (кстати, но об этом в документации ни где не сказано).
Установка агентов
Теперь можно приступать к развертыванию агентов. Причем установка и обновление выполняется аналогичным образом. Для доступа к исполняемому файлу агента следует использовать ссылку http://rhq-server:7080/agentupdate/download и сохранить полученный jar файл. Как вариант нужная ссылка находится в интерфейсе управления сервера в Administration > Downloads. По умолчанию установка производится в подкаталог rhq-agent текущего каталога, поэтому лучше указать нужный путь принудительно.
$ sudo java -jar rhq-enterprise-agent-4.4.jar —install=/opt/rhq-agent
В установках по умолчанию агент и плагины обновляются автоматически. Вручную это можно сделать использовав ключ —update, список всех параметров можно просмотреть введя —help.
При запуске агент задаст несколько вопросов, которые затем будут сохранены в конфигурационном файле conf/agent-configuration.xml. Вначале необходимо ввести уникальное имя агента, по умолчанию используется сетевое имя системы, но можно выбрать любое. Затем DNS имя или IP-адрес компьютера агента, порт на котором принимает соединения и наконец имя или IP и порт RHQ сервера. Доступны сокращения. Так вместо того чтобы вводить системный параметр можно использовать комбинацию ‘!*’, остановить вопросы с сохранением результата — ‘!+‘, получить помощь — ‘!?‘. После подключения к серверу будет доступна командная строка управления. Все параметры можно получить введя help.
В процессе установки агент подключится к серверу, одним из шагов будет получение всех плагинов, которые будут сохранены в подкаталоге plugins (после распаковки он пуст).
Настройки агента
Файл agent-configuration.xml хорошо комментирован, кроме этого на сайте доступно подробное описание. Чтобы упростить развертывание следует заранее подготовить этот файл и перепаковать jar файл. Установка внутри rhq.agent.configuration-setup-flag в «true» заставит агента запускаться без вопросов. Другие интересные параметры:
- rhq.agent.name – полное FQDN имя агента, при установке будет получено автоматически.
- rhq.agent.server.bind-address и rhq.agent.server.bind-port — адрес и порт сервера к которому должен подключаться агент;
- rhq.communications.connector.* — набор настроек для входящих запросов на клиенте, по умолчанию используется порт 16163;
- rhq.agent.server-auto-detection – при true агент автоматически пытается найти ближайший RHQ сервер и определить его состояние. В случае отсутствия сервера переходит в автономный режим. Более эффективно, но в этом случае используются широковещательные пакеты и увеличивается нагрузка на сеть.
- rhq.agent.register-with-server-at-startup – автоматическая регистрация агента при загрузке, лучше оставить в true иначе придется делать это вручную.
- rhq.communications.connector.security.* и rhq.agent.client.security.* — набор параметров для организации защищенного соединения.
Все плагины на агенте включены, но бывает ситуация когда необходимо отключить ненужный, для этого его имя достаточно прописать в параметре rhq.agent.plugins.disabled.
Настройки мониторинга
Интерфейс управления RHQ состоит из нескольких вкладок. После регистрации пользователь попадает в информационную панель (Dashboard) в которой собрано несколько вкладок отображающих основные события. Панель полностью перенастраиваемая, можно добавить новые портлеты отвечающие за вывод специфической информации, изменить число колонок, создать несколько Dashboard. Также текущие важные сообщения (например, о доступности тех или иных параметров) выводятся чуть ниже под меню и выделяются красным или зеленым цветом. Если, что-то непонятно, нажав Help можно получить справку по выбранному пункту.
Данные инвентаризации находятся в меню Inventory. После установки агента, все системы автоматически появятся в подпункте Auto Discovery Queue. Нажав знак возле имени агента + можно просмотреть список запущенных приложений, в поле Type показывается тип приложения, в Inventory Status — статус. При первом добавлении все сервисы будут иметь статус New. Для удобства отбора внизу доступен фильтр.
Не все приложения бывают интересны для мониторинга, чтобы их убрать, следует отметить и нажать кнопку Ignore. Для активации отмечаем нужные, и нажимаем кнопку Import. После этого данные будут доступны в остальных подменю Inventory — All Resources, Platforms, Servers, Services и Unavaiable Servers. Таблицы, в которых собрана вся информация, опять же полностью настраиваемые, можно указать сортировку объектов, добавить или убрать столбцы. Нажав на ссылке соответствующей отдельному приложению или серверу, получим полную информацию о нем. Текущий статус показывается при помощи флажка в правом верхнем углу. Зеленый означает доступность ресурса и значит его настроек. Все свойства объектов собраны в нескольких вкладках, назначение которых очевидно из названия — Summary, Inventory, Alerts, Monitoring, Events, Operations, Configuration. Причем в зависимости от применяемого плагина т.е. приложения количество вкладок может быть различным. Например, для SSH вкладки Events и Operations недоступны. В каждом подпункте могут быть также вкладки и кнопки для настройки. Часть операций с выбранным объектом (настройка ресурсов, конфигурация и другие) можно произвести при помощи контекстного меню вызываемого на его имени в левом окне. Теперь пройдемся по пунктам, чтобы рассмотреть их более подробно.
Текущая конфигурация и история настроек доступны в подменю Configuration. Причем RHQ производит анализ и выводит данные в удобном виде. Например, для cron все задания разбиты по периодичности час, день, неделя и месяц. Там где возможно применены переключатели, позволяющие не вводить, а выбрать готовую настройку. Для быстрого перехода можно использовать подменю Jump to Section. Просмотр истории правок доступен в подменю History.
В подменю Operations показываются и создаются действия. По умолчанию список пуст, нажимаем кнопку New и заполняем параметры. Все доступные действия для выбранного объекта показываются в выпадающем списке Operations. Просто выбираем нужное, и в случае доступности вводим дополнительные параметры в открывшейся ниже строке.
Далее указывается время исполнения, повторяемость, задержка и опционально описание. По окончанию нажимаем кнопку Shedule, о том новом задании будет выведено сообщение вверху страницы.
Как говорилось выше, предусмотрено использование тэгов и групп позволяющих администратору самостоятельно группировать сервисы или системы. Тэг можно задать при выборе соответствующего объекта. Группы создаются в отдельном подменю Groups. Принцип простой. Нажимаем кнопку New, указываем название группы и на следующем шаге мастера отбираем объекты которые будут в нее входить. На этом этапе можно воспользоваться готовыми фильтрами.
Все события собираются в меню Reports, здесь найдем все тэги, изменения конфигураций, оповещения, а также сборная информация о платформах и инвентаризации.
Все операции по распространению файлов на удаленных системах производятся в панели Bundle при помощи понятного мастера. В качестве параметра указывается файл, который вручную загружается с локальной системы или с URL. После загрузки пакет будет показан в окне Bundle, где при нажатии кнопки Deploy можно начать его распространение.
Вкладка Administration состоит из трех подразделов. В Security создаются учетные записи и указываются роли. После установки в системе присутствуют две роли- администратора и доступа ко всем ресурсам без возможности администрирования сервера RHQ. При необходимости можно создать любое количество ролей с заданными правами.
В подменю Topology показывается вся топология сети – серверы, агенты, группы, события. Все настройки сервера, шаблонов и плагины производятся в подменю Configuration. И в Content создаются источники файлов. Доступно четыре типа – удаленный URL, HTTP через прокси, локальный дисковый и YUM.
***
Знакомство с RHQ показало, что это очень интересное решение, позволяющее администратору всегда быть в курсе событий происходящих на подчиненных серверах и дающее удобные инструменты для управления.