DRD — Мониторим сети Drupal сайтов

DRD - Мониторим сети Drupal сайтов

Давайте будем честными — администрирование Drupal сайтов это сложно, скучно и большей частью непродуктивно, если учитывать миллион других дел, о которых нужно заботиться разработчику. Хорошо, если сайтов несколько, а если их десятки, или сотни? Возникает очевидная потребность в автоматизации рутинных задач, и тут не обойтись без специальных инструментов, многие из которых требуют серьёзных навыков администрирования и программирования (привет DevOps), а некоторые вполне доступны всем без специальной подготовки. Об одном из самых доступных инструментов мы сегодня и поговорим.

Встречаем DRD (Drupal Remote Dashboard) — набор модулей, позволяющих в едином интерфейсе делать такие вещи, как:

  • Мониторинг статуса подключённых сайтов (Status report для каждого сайта в одном дашборде)
  • Выполнение действий на удалённых сайтах — cron, очистка кэша, запуск drush команд и любых скриптов — далеко не полный список.
  • Коммуникация мониторинг-сервера с клиентами по зашифрованному каналу (AES)
  • Мониторинг доступности ресурсов в реальном времени (настраивается через cron), с возможностью уведомлений по email и любым сервисам, к которым удасться подключить Drupal.

Звучит «вкусно»? Давайте попробуем всё настроить и убедимся сами. У меня весь процесс, включая документацию, занял немногим больше часа, поэтому здесь попробую объяснить основные концепты, чтобы не пришлось вам долго гуглить, и пройдёмся по всем этапам вместе.

Терминология

Core (Ядро) или Server (Сервер) - инсталляция Drupal, включающая один или несколько сайтов в мультисайте. Дальше по тексту я иногда буду употреблять термин «удалённый сайт» применительно к ядру.

Domain (Домен) или Site (Сайт) — сайты, расположенные на ядре. В простейшем варианте ядро == сайт. Если у нас мультисайт, то на одном ядре будет несколько сайтов. Один из доменов на ядре придётся выбрать как основной для коммуникации с дашбордом.

Dashboard (Панель управления, или Дашборд) — центральная панель управления ядрами и доменами. Является отдельной Drupal инсталляцией, предназначенной только для целей мониторинга.

Подготовка окружения

Хотя это и не обязательный шаг, но я очень рекомендую выделить под DRD отдельный небольшой сервер, благо стоят они копейки. Дашборд не должен находится на том же сервере, что и сайты. Иначе вся затея не имеет смысла — падает сайт, падает и дашборд.

Я по-быстрому состряпал LEMP окружение на Ubuntu с PHP 5.5.9, настроил файрвол, fail2ban и прочие необходимые меры безопасности — не пренебрегайте ими никогда, особенно на таких критических сайтах!

Кроме стандартных пакетов, идущих с LEMP, нам понадобится php5-mcrypt, ставим его (если у вас Apache, смотрим свою документацию):

sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt
service php5-fpm restart
service nginx restart

Едем дальше — ставим последний Drupal (инструкцию я уж пропущу), и доставляем нужные модули:

drush en aes -y && drush en drd_server -y && drush en chart -y && drush en views -y

Не забудьте проверить Status report — у меня были мелкие проблемы с AES, да и просто убедитесь, что все пункты зелёные.

Крон на сервере, где у нас крутится дашборд, должен отрабатывать не реже чем через каждые 5 минут!

crontab -e

И, например такой синтаксис для его запуска (IP и secret key конечно ваш):

*/5 * * * * wget -O - -q -t 1 http://1.1.1.1/cron.php?cron_key=eXLatmS

Установка и настройка DRD

Наконец, ставим сам дашборд:

drush en drd -y

Идем на /admin/drd и видим такую красоту

Добавление ядра

Теперь всё что осталось сделать, это правильно подключить сайты, которые мы собираемся мониторить.

Нажимаем Add new Drupal core.

Заполняем все поля, чекбокс Support remote installation можно оставить выключенным — позже поймём, зачем он нужен. После отправки формы имеем следующую картинку:

Теперь на удалённом сайте ставим два модуля — aes и drd_server.

drush en aes -y && drush en drd_server -y

Возвращаемся к дашборду и делаем всё по инструкции — закидываем файл drd_server.install.php в корень удалённого сайта, редактируем созданное в дашборде ядро и включаем чекбокс Support remote installation.

На этот раз вместо зелёного сообщения получим красное:

Ничего сложного — делаем всё по инструкции. Входим на удалённый сайт как администратор, кликаем по первой ссылке в красном сообщении на дашборде и добавляем IP адрес дашборда в соответствующее поле. Затем кликаем на вторую ссылку и отправляем ключи на ядро. Для душевного спокойствия можете перезагрузить страницу /admin/config/system/drd_settings и убедиться, что ключи добавлены.

Настройка дашборда

Собственно, всё. Ядро добавлено, осталось только получить информацию с него в дашборд.

Идём в таб All Domains и убеждаемся, что ядро и домен подключены и репортят статус.

Вы спросите — а где же статус репорт и прочие плюшки? Давайте разберёмся.

Идём в только что добавленный домен (см. терминологию выше — именно домен, не ядро) и в выпадающем списке Actions выполняем поочерёдно пункты Update info и List new modules and themes. Затем нужно немного подождать и вся информация появится на домашней странице домена DRD.

Дальше — исследуем сами. Вся документация и issue queue есть на drupal.org. Будет интересно услышать ваши кейсы!