Развёртывание и настройка Icinga 2 на Debian 8.6. Часть 2. Установка Icinga Web 2

В прошлый раз мы выполнили установку ядра Icinga 2 на Debian 8.6. В этой части будет рассмотрена процедура установки веб фронт-энда для нашего сервера Icinga 2 — современного модульного веб-интерфейса Icinga Web 2.

Основной опорный документ, описывающий процесс установки можно найти по ссылке GitHub — Icinga / icingaweb2 / doc / 02-Installation.md.

Согласно этого документа, предварительные требования, которые должны быть соблюдены для возможности установки и использования Icinga Web 2 таковы:

  • Установленная Icinga с активированным DB IDO модулем.
  • Веб-сервер, например Apache или NGINX.
  • PHP версии 5.3.0 и выше с поддержкой gettext, intl, OpenSSL, MySQL (ранее мы использовали именно эту СУБД для установки DB IDO), cURL

Первый пункт мы выполнили в прошлый раз, а второй и третий выполним далее в этой части.

 

Установка веб-сервера Apache

Так как в планах есть задумка настроить прозрачную доменную аутентификацию (SSO в домене Active Directory), то выбор сделан в сторону веб-сервера Apache. Устанавливаем его:

# apt-get install apache2

Разрешим в iptables подключения на порты веб-сервера:

# iptables -A INPUT -p tcp --dport 80 -i eth0 -j ACCEPT
# iptables -A INPUT -p tcp --dport 443 -i eth0 -j ACCEPT
# iptables-save > /etc/iptables.conf

 

Активация расширения Icinga – command (External Command Pipe)

Активируем ещё одно расширение Icinga 2, которое нам пригодится в дальнейшем. Это дополнительный командный модуль с именем «command» для возможности взаимодействия веб-интерфейса с ядром Icinga:

# icinga2 feature enable command

После активации также перезапустим главную службу icinga2 и убедимся в отсутствии ошибок при её запуске:

# service icinga2 restart

Согласно документации, в конфигурации по умолчанию доступ на чтение/запись к pipe-файлу (/var/run/icinga2/cmd/icinga2.cmd), используемому данным расширением, в разных дистрибутивах Linux может ограничиваться группой icingacmd или nagios. В некоторых случаях может потребоваться добавить пользователя, от имени которого работает служба веб-сервера, в эту группу, чтобы разрешить подключение к pipe-файлу из веб-интерфейса Icinga 2, который мы будем настраивать в дальнейшем. В нашем случае служба веб-сервера работает от имени пользователя www-data, а доступ к pipe-файлу уже настроен таким образом, что члены группы www-data (в которую входит пользователь www-data) уже имеют доступ на запись:

# cat /etc/apache2/apache2.conf | grep APACHE_RUN

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

# cat /etc/apache2/envvars | grep APACHE_RUN

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
...

# ls -la /var/run/icinga2/cmd/icinga2.cmd

prw-rw---- 1 nagios www-data 0 Nov  7 16:19 /var/run/icinga2/cmd/icinga2.cmd

Чтобы убедиться в том, что пользователь, от имени которого работает служба веб-сервера, действительно сможет отправлять данные в pipe, попробуем провести один нехитрый тест. Выполним от имени этого пользователя отправку в pipe какой-нибудь команды, например на перезапуск службы:

# sudo su -s "/bin/sh" -c "/bin/echo '[`date +%s`] RESTART_PROCESS' >> /var/run/icinga2/cmd/icinga2.cmd" www-data

Во время выполнения команды будем наблюдать за логом /var/log/icinga2/icinga2.log:

# tail -f /var/log/icinga2/icinga2.log

...
[2016-11-07 17:16:22 +0300] information/ExternalCommandListener: Executing external command: [1478528182] RESTART_PROCESS
[2016-11-07 17:16:24 +0300] information/Application: Got reload command: Starting new instance.
[2016-11-07 17:16:24 +0300] information/Application: Received request to shut down.
[2016-11-07 17:16:25 +0300] information/Application: Shutting down...
[2016-11-07 17:16:25 +0300] information/CheckerComponent: Checker stopped.
[2016-11-07 17:16:25 +0300] information/ConfigItem: Activated all objects.
[2016-11-07 17:16:25 +0300] information/DbConnection: Resuming IDO connection: ido-mysql
[2016-11-07 17:16:25 +0300] information/IdoMysqlConnection: MySQL IDO instance id: 1 (schema version: '1.14.1')
[2016-11-07 17:16:25 +0300] information/IdoMysqlConnection: Finished reconnecting to MySQL IDO database in 0.018914 second(s).

Как видим, команда отправленная в pipe пользователем www-data успешно принимается сервером Icinga и выполняется, значит установленных разрешений достаточно.

 

Установка PHP и его расширений

Устанавливаем PHP 5 и расширения, необходимые для работы Icinga Web 2:

# apt-get install php5 php5-mysql php5-gd php5-curl php5-json php5-ldap php5-intl php5-imagick

После установки проверим возможность работы веб-сервера с PHP. Для этого создадим в корневой папке сайта по умолчанию php-скрипт, например, с именем testphp.php:

# nano /var/www/html/testphp.php

Скопируем в файл вызов функции вывода текущей конфигурации PHP:

<?php
phpinfo();
?>

Проверим возможность открытия скрипта с сайта по ссылке типа http://{servername}/testphp.php

После успешной проверки не забываем удалить скрипт:

# rm /var/www/html/testphp.php

 

Установка Icinga Web 2

В документации обозначено, что для установки пакета icingaweb2 для Debian предлагается использование репозитория Icinga Repository, хотя данный пакет нам уже доступен из ранее подключённого репозитория Debian Monitoring Project. Поэтому сразу выполняем установку пакета:

# apt-get install icingaweb2

После установки пакетов убедимся в том, что пользователь, от имени которого работает служба веб-сервера (www-data), добавлен в группу icingaweb2, которая была создана в системе в ходе установки пакета icingaweb2:

# id www-data

uid=33(www-data) gid=33(www-data) groups=33(www-data),117(icingaweb2)

Перезапустим службу веб-сервера apache2:

# systemctl restart apache2

Переходим в веб-браузере по ссылке, где нас ждёт мастер первичной настройки Icinga Web 2:

http://{servername}/icingaweb2/setup

Ознакомимся с инструкциями изложенными на веб-странице и, в соответствии с этими инструкциями, выполним команду создания каталога конфигурации:

# icingacli setup config directory --group icingaweb2

Successfully created configuration directory /etc/icingaweb2

Затем сгенерируем ключ (токен) для защиты конфигурационной сессии:

# icingacli setup token create

The newly generated setup token is: 3481b2e2cdef4d10

Если по какой-то причине во время установки потребуется закрыт браузер и вы забудете ключ, то посмотреть текущий ключ можно командой:

# icingacli setup token show

The current setup token is: 3481b2e2cdef4d10

Введём сессионный ключ на веб-странице мастера настройки Icinga Web 2 и нажмём кнопку Next:

Далее нам будет представлен набор модулей, которые обнаружила Icinga Web 2 в нашей инсталляции Icinga 2. Из предложенных модулей по умолчанию отмечен только Monitoring, чего вполне достаточно. Дополнительно я выбираю Doc и Test, затем Next.

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

Переходим в файл /etc/php5/apache2/php.ini, находим параметр date.timezone (в секции Date) и задаём его значение, выбрав из онлайн-списка нашу зону:

...
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Moscow
...

После этого перезапустим службу веб-сервера:

# systemctl restart apache2

Затем вернёмся на веб-страницу мастера конфигурации Icinga Web 2 и обновим её (F5). Статус выполнения предварительного требования должен измениться:

 

 

Из прочих предварительных требований ещё два требования в моём случае были подкрашены жёлтым цветом. Эти требования были бы справедливы в том случае, если бы в качестве СУБД для DB IDO была выбрана PostgreSQL. В моём же примере для этого используется MySQL, поэтому данные два требования можно проигнорировать. Жмём Next

 

На следующем шаге настройка аутентификации. На данном этапе оставим предложенную по умолчанию аутентификацию с хранением учётных данных в БД – Database (аутентификацию с помощью LDAP рассмотрим позже в одной из последующих частей)

Далее нам потребуется указать параметры базы данных для хранения учётных данных Icinga Web 2, но для начала её нужно создать. Перейдём в консоль сервера и создадим новую пустую БД MySQL, например с именем icingawebdb, к которой предоставим доступ специально создаваемому mysql-пользователю, например icingawebdb-usr:

# mysql -u root -p

mysql> CREATE DATABASE icingawebdb;
mysql> GRANT ALL PRIVILEGES ON icingawebdb.* TO 'icingawebdb-usr'@'localhost' identified by 'Ic1ngaWebDBU$RPas$w0rd';
mysql> quit

После того, как база данных создана, загрузим в неё схему Icinga Web 2:

# mysql -u root -p icingawebdb < /usr/share/icingaweb2/etc/schema/mysql.schema.sql

Затем вернёмся на веб-страницу мастера конфигурации Icinga Web 2 и введём информацию о только что созданной базе данных и учётных данных пользователя для доступа к ней, после чего нажмём кнопку Validate Configuration:

В верхней части экрана должна появиться надпись об успешной проверке подключения, после чего можно переходить к следующему шагу:

На следующем шаге имя провайдера аутентификации оставляем предложенное по умолчанию..

Зададим имя и пароль для учётной записи администратора, с помощью которой мы в дальнейшем будем подключаться к веб-интерфейсу Icinga Web 2:

Значения для работы веб-приложения Icinga Web 2 можно оставить предложенными по умолчанию. Я предпочёл изменить тип логирования с записи в Syslog на запись в выделенный лог-файл и уровень логирования с Error на Warning:

При этом на сервере нам нужно будет создать соответствующий каталог для лог-файлов и дать разрешения на запись в него:

# mkdir /var/log/icingaweb2
# chown www-data:icingaweb2 /var/log/icingaweb2

Далее будет выведено сообщение об успешной конфигурации сервера со сводной информацией по определённым нами ранее параметрам

Следующим шагом будет настройка модуля monitoring:

Тип получения информации Icinga Web 2 из Icinga – IDO, то есть оставляем предложенные по умолчанию настройки, жмём Next:

Укажем информацию о базе DB IDO, которую мы создали ранее и нажмём кнопку проверки конфигурации Validate Configuration:

В верхней части экрана должна появиться надпись об успешном подключении к базе данных:

После этого снова жмём кнопку Next и переходим к настройкам передачи команд через pipe-файл (напомню, что в начале этой заметки мы настроили расширение command). Предложенные здесь параметры можно также оставить без изменений и снова нажать кнопку Next

На следующем шаге нам будет предложено изменить (пополнить при необходимости) перечень названий переменных для полей в разных веб-формах, в которых может отображаться парольная информация. Такие поля будут отображать свои значения в виде «звёздочек». Я оставил данный параметр без изменений: 

На следующем шаге просмотрим итоговую конфигурацию со всеми заданными ранее параметрами для модуля мониторинга и нажмём Finish

Конфигурация будет сохранена и нам будет предложено подключиться к веб-интерфейсу Icinga Web 2:

Переходим на веб-страницу Icinga Web 2. Для входа используем учётные данные административного пользователя (в нашем случае icingawebadmin), которые мы задали ранее.

Перед нами предстанет сводная статусная панель Icinga Web 2 – Dashboard, где мы сможем увидеть информацию о текущих проблемах в нашей инфраструктуре мониторинга. На данный момент нам пока доступна информация только о состоянии базовых показателей мониторинга нашего сервера:

***

На этом пока всё. В следующей части мы рассмотрим процесс расширения функциональности  Icinga Web 2 модулем Icinga Director.

Дополнительные источники информации:

Добавить комментарий