Установка и настройка Icinga2 и Icinga Web 2 на Ubuntu 20.04

Icinga — бесплатный и открытый инструмент мониторинга для дата-центров и инфраструктуры. Это приложение для мониторинга систем и сети: проверяет доступность ресурсов, оповещает об отказах, собирает данные о производительности и поддерживает высокую доступность и распределённый мониторинг с помощью встроенного кластера.
Icinga возник как форк Nagios в 2009 году, затем был переработан на C++ и стал одной из популярных систем мониторинга. Название “Icinga” происходит от языка зулу и означает «он ищет», «он просматривает», «он проверяет».
В этом руководстве показано, как установить и настроить Icinga2 и Icinga Web 2 на сервере с Ubuntu 20.04 LTS. Мы используем официальные репозитории Icinga и показываем интеграцию с MySQL и Apache/PHP для веб-интерфейса.
Кому это полезно
- Сисадминам, разворачивающим мониторинг на новых серверах.
- Инженерам DevOps, которым требуется интеграция Icinga в существующую инфраструктуру.
- Тем, кто мигрирует с Nagios и хочет современный стек.
Предпосылки
- Ubuntu 20.04 LTS (Focal Fossa).
- Минимум 2 ГБ оперативной памяти для тестовой установки; для крупных развёртываний — больше.
- Доступ root или пользователь с sudo.
- Открытые порты HTTP/HTTPS для доступа к Icinga Web 2.
Важно: в этой инструкции мы используем PHP 7.3 (PPA) потому что на момент написания Icinga Web 2 может быть несовместим с более новыми версиями PHP без дополнительной проверки.
Что мы сделаем
- Установим Icinga2 и плагины Nagios
- Установим и настроим MySQL
- Установим модуль Icinga IDO для MySQL
- Установим Apache2 и PHP 7.3
- Установим и настроим Icinga Web 2
- Выполним пост-настройку и проверку
Шаг 1 — Установка Icinga2 и плагинов Nagios
Сначала добавим репозиторий Icinga для Ubuntu 20.04 и установим пакеты icinga2 и monitoring-plugins.
Добавим GPG-ключ репозитория Icinga:
curl https://packages.icinga.com/icinga.key | apt-key add -Перейдите в каталог источников APT и создайте файл репозитория:
cd /etc/apt/sources.list.d/
vim icinga-focal.listВставьте конфигурацию репозитория:
deb http://packages.icinga.com/ubuntu icinga-focal main
deb-src http://packages.icinga.com/ubuntu icinga-focal mainОбновите индексы и установите пакеты:
sudo apt update
sudo apt install icinga2 monitoring-plugins
После установки запустите службу и включите автозапуск:
systemctl start icinga2
systemctl enable icinga2Проверьте статус сервиса:
systemctl status icinga2
Если сервис активен — продолжаем.
Шаг 2 — Установка и настройка MySQL
Установим MySQL Server и настроим базовую безопасность и пароль root.
Установка:
sudo apt install mysql-server mysql-clientЗапуск и автозапуск:
systemctl start mysql
systemctl enable mysqlЗапустите инструмент повышения безопасности:
mysql_secure_installationПри выполнении следуйте подсказкам: задайте надёжный пароль root и ответьте “Y” для рекомендаций удаления анонимных пользователей, запрета удалённого логина root, удаления тестовой БД и т.д.
Пример диалога:
Press y|Y for Yes, any other key for No:
Please set the password for root here.
New password:
Re-enter new password:
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
После этого MySQL сконфигурирован с базовым уровнем безопасности.
Шаг 3 — Установка и настройка модуля Icinga IDO для MySQL
Модуль IDO (Icinga Data Output) сохраняет данные мониторинга в БД. Установим пакет и создадим пользователя.
Установка пакета:
sudo apt install icinga2-ido-mysqlВо время установки вы будете приглашены включить функцию ido-mysql — подтвердите “Yes”.

При установке также будет запущен dbconfig-common для создания БД — подтвердите и введите пароль для нового пользователя DB (например, для пользователя icinga2).

Введите и повторите пароль для пользователя icinga2 в MySQL:


После установки пользователь MySQL “icinga2” будет создан. Чтобы гарантировать совместимость с текущей версией MySQL, переключите метод аутентификации на mysql_native_password.
Войдите в MySQL Shell:
mysql -u root -pВыполните запрос для изменения плагина аутентификации и обновления привилегий (замените пароль на собственный и безопасный):
ALTER USER icinga2@localhost IDENTIFIED WITH mysql_native_password BY 'aqwe123@#$';
flush privileges;Затем выйдите:
exitВключите фичу ido-mysql в Icinga2 и проверьте список фич:
icinga2 feature enable ido-mysql
icinga2 feature listПерезапустите службу Icinga2 для применения изменений:
systemctl restart icinga2
Шаг 4 — Установка Apache2 и PHP 7.3
Icinga Web 2 требует веб-сервера и PHP. На Ubuntu 20.04 используем PHP 7.3 из PPA, если стандартный репозиторий содержит только более новые версии.
Добавим PPA и установим нужные пакеты:
sudo apt install python3-software-properties
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install apache2 php7.3 php7.3-common php7.3-gd php7.3-ldap php7.3-intl php7.3-curl libapache2-mod-php7.3 php7.3-mysql php7.3-pgsql php7.3-xmlОтредактируйте php.ini (для Apache):
vim /etc/php/7.3/apache2/php.iniВключите часовой пояс и установите timezone (пример — Asia/Singapore). Установите cgi.fix_pathinfo=0:
date.timezone = Asia/Singapore
cgi.fix_pathinfo=0Перезапустите Apache и включите автозапуск:
systemctl restart apache2
systemctl enable apache2Проверьте статус Apache:
systemctl status apache2
Шаг 5 — Установка Icinga Web 2
Установим пакеты icingaweb2 и icingacli, затем создадим базу данных для веб-приложения.
sudo apt install icingaweb2 icingacliСоздайте токен установки для веб-интерфейса (сохраните значение — он потребуется в браузере):
icingacli setup token createПример вывода:
The newly generated setup token is: 9b871ead0a60c94fСоздайте базу данных и пользователя в MySQL для icingaweb2 (замените пароль на надёжный):
mysql -u root -p
create database icingaweb2;
create user icingaweb2@localhost identified with mysql_native_password by "icingaweb2pass";
grant all privileges on icingaweb2.* to icingaweb2@localhost with grant option;
flush privileges;
exit
Шаг 6 — Постустановка Icinga2 и Icinga Web 2 через браузер
Откройте в браузере:
http://
Вставьте ранее сгенерированный setup token и нажмите “Next”.

Выберите модуль Monitoring (оставьте по умолчанию) и нажмите “Next”.

Проверьте требования окружения — все необходимые модули должны быть зелёными, кроме опционального PostgreSQL, и нажмите “Next”.

Выберите тип аутентификации Database и нажмите “Next”.

Введённые данные БД icingaweb2 проверьте кнопкой “Validate Configuration”. При успехе — “Next”.

Выберите backend-ресурс для аутентификации и укажите пользователя-администратора для веб-интерфейса.

Введите имя администратора и пароль для доступа к Icinga Web 2 и продолжите.

На этапе Application Configuration можно оставить настройки по умолчанию.

Подтвердите финальные параметры и нажмите “Finish”.

Затем настройте backend мониторинга: задайте имя, тип IDO и укажите параметры подключения к БД Icinga2.

Проверка подключения к БД Icinga2 и выбор транспорта команд (Local Command File по умолчанию).


Подтвердите настройки безопасности мониторинга и завершите установку.

После успешной установки нажмите “Login to Icinga Web 2” и войдите под созданной учётной записью.



Поздравляем — базовая установка и конфигурация Icinga2 и Icinga Web 2 завершены.
Расширенные рекомендации и лучшие практики
Мини-методология развёртывания
- Подготовьте отдельную тестовую среду, повторяющую продакшен по конфигурации.
- Автоматизируйте установку (Ansible/Chef/Puppet) для воспроизводимости.
- Разверните мониторинг в несколько этапов: базовый стек → интеграции → алерты.
- Наблюдайте за потреблением ресурсов и масштабируйте БД IDO по необходимости.
Чек-лист по ролям
Системный администратор:
- Проверил обновления OS и установил пакеты.
- Настроил firewall для портов 80/443.
- Обеспечил резервное копирование конфигурации и БД.
DBA:
- Создал базы icinga2 и icingaweb2 и проверил привилегии.
- Настроил регулярный бэкап и мониторинг размера логов.
ДевОпс-инженер:
- Добавил мониторинг ключевых сервисов и проверил алерты.
- Интегрировал с системой уведомлений (SMTP/Slack/PagerDuty).
Критерии приёмки
- Служба icinga2 запущена и в статусе active.
- Icinga Web 2 доступен по HTTP(S) и позволяет авторизоваться.
- События мониторинга записываются в БД IDO.
- Алёрты доставляются в тестовый канал уведомлений.
Сценарии отказа и быстрый Recovery
- Если Icinga2 не стартует — проверьте логи:
journalctl -u icinga2 -b
/var/log/icinga2/icinga2.log- Проблемы с подключением к MySQL — проверьте, что пользователь, пароль и плагин аутентификации корректны.
- Если веб-интерфейс не открывается — проверьте статус Apache и наличие модулей PHP.
Частые ошибки и способы их устранения
“Cannot connect to database” в Icinga Web 2
- Проверьте host, порт, имя БД, пользователя и пароль.
- Убедитесь, что пользователь имеет нужные привилегии.
- Проверьте, что MySQL слушает на localhost или нужном интерфейсе.
Проблемы аутентификации MySQL (пустой пароль или неверный плагин)
- Выполните ALTER USER … IDENTIFIED WITH mysql_native_password BY ‘…’ для пользователей Icinga.
Несовместимость версии PHP
- Используйте рекомендованную версию PHP (в данном руководстве — 7.3) или проверяйте совместимость Icinga Web 2 с вашей версией PHP.
Плохая производительность при большом потоке данных
- Перенесите IDO в выделенную БД-серверную ноду.
- Настройте индексы и мониторинг медленных запросов.
Резервный план и откат изменений
Если новая конфигурация вызывает нестабильность, выполните следующие шаги:
- Отключите службу Icinga Web 2: systemctl stop apache2
- Откатьте конфигурационные файлы (если храните версионно).
- Восстановите дамп БД из бэкапа:
mysql -u root -p icinga2 < icinga2_backup.sql
mysql -u root -p icingaweb2 < icingaweb2_backup.sql- Перезапустите службы: systemctl restart mysql icinga2 apache2
Безопасность и ограничения доступа
- Настройте HTTPS для веб-интерфейса (Let’s Encrypt или корпоративный сертификат).
- Ограничьте доступ к панели управления через firewall и VPN.
- Используйте сильные пароли и ротацию ключей/паролей.
- Включите аудит и логирование доступа к Icinga Web 2.
Совместимость и пути миграции
- При обновлении с Ubuntu 20.04 на 22.04 учтите возможные изменения версий PHP и MySQL. Планируйте тестовую миграцию и проверьте совместимость модулей Icinga.
- Для крупных инсталляций стоит вынести БД IDO на отдельный сервер и использовать репликацию и регулярные бэкапы.
Краткое руководство по тестированию и приёмке
Тестовые случаи:
- После установки: вход в Icinga Web 2 под админом — ожидается успешная авторизация.
- Добавление тестового хоста и проверки — статус “UP” для корректного хоста.
- Генерация искусственного падения сервиса — проверка, что алерт создаётся и отправляется.
Критерии успешного приёма описаны выше в разделе “Критерии приёмки”.
Малые советы и эвристики
- Всегда храните токен установки icingaweb2 в защищённом месте до завершения процесса.
- Автоматизируйте установку — это минимизирует человеческие ошибки.
- Для больших сред рассмотрите разделение ролей: веб на одном сервере, Icinga2 Master на другом, IDO на отдельной БД.
1‑строчный глоссарий
- Icinga2: основной демон мониторинга.
- Icinga Web 2: веб-интерфейс для просмотра статусов и управления.
- IDO: модуль сохранения данных мониторинга в БД.
- icingacli: утилита командной строки для управления Icinga Web 2.
Итог
В этом руководстве показана пошаговая установка Icinga2 и Icinga Web 2 на Ubuntu 20.04 с использованием MySQL, Apache и PHP 7.3. Следуя рекомендациям по безопасности, резервному копированию и тестированию, вы получите надёжную систему мониторинга, готовую к интеграции в корпоративную инфраструктуру.
Важное
- Тестируйте все изменения в изолированной среде перед применением в продакшене.
- Не забывайте про регулярные бэкапы конфигураций и БД.
Ссылки
- Официальная документация Icinga: https://icinga.com/docs/
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента