Icinga 2 — система мониторинга с открытым исходным кодом, которая проверяет доступность хостов и состояние сервисов, хранит результаты и отправляет уведомления. Она выросла из Nagios, но использует собственный движок конфигурации, API и распределённую модель с зонами. Типичный сценарий — небольшой парк серверов: упал сайт, кончилось место, замолчал агент. Ниже — установка мастера, объекты, подключение агента и диагностика.

Архитектура и что понадобится

В простейшей схеме есть один мастер-узел и несколько агентов. Мастер хранит конфигурацию, выполняет проверки и показывает результат в Icinga Web 2. Агент на удалённой машине запускает локальные плагины и передаёт данные мастеру. История хранится в базе через IDO, уведомления идут по почте или в мессенджер.

  • Сервер с Debian или Ubuntu, 2 ГБ RAM и статическим адресом.
  • Пакеты icinga2, icinga2-ido-mysql, monitoring-plugins.
  • Веб-сервер и PHP для Icinga Web 2.
  • Открытые порты 5665 для API и 80/443 для веб-интерфейса.
  • Настроенный DNS или записи в /etc/hosts.

Установка из репозитория

Пакеты из дистрибутива могут отставать, поэтому проект рекомендует собственный репозиторий. В строке ниже для Debian замените ubuntu на debian.

sudo apt install -y curl gnupg apt-transport-https
curl -fsSL https://packages.icinga.com/icinga.key | sudo gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg
. /etc/os-release
echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/ubuntu icinga-${VERSION_CODENAME} main" | sudo tee /etc/apt/sources.list.d/icinga.list
sudo apt update
sudo apt install -y icinga2 icinga2-ido-mysql monitoring-plugins

После установки проверьте службу и список функций. IDO включают после создания базы и правки конфигурации.

systemctl status icinga2 --no-pager
sudo icinga2 feature list
sudo icinga2 feature enable api
sudo systemctl restart icinga2

Первичная настройка мастера

Мастер настраивается интерактивной командой icinga2 node wizard. Для первого узла выберите режим мастера, укажите общее имя (CN) и зону. Для агента та же команда запускается в режиме подключения к мастеру.

sudo icinga2 node wizard
sudo icinga2 daemon -C
sudo systemctl reload icinga2

Команда daemon -C проверяет конфигурацию без применения. Запускайте её после правок: ошибка в одном объекте блокирует перезагрузку.

Хосты, сервисы и шаблоны

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

object Host "web01" {
  import "generic-host"
  address = "192.0.2.10"
  vars.os = "Linux"
}

apply Service "http" {
  import "generic-service"
  check_command = "http"
  vars.http_uri = "/health"
  vars.http_ssl = false
  assign where host.vars.os == "Linux"
}

apply Service "disk" {
  import "generic-service"
  check_command = "disk"
  vars.disk_wfree = "15%"
  vars.disk_cfree = "7%"
  assign where host.vars.os == "Linux"
}

Файлы удобно держать в /etc/icinga2/conf.d/ или в собственном каталоге, подключённом через include_recursive.

Проверка и применение конфигурации

После добавления объектов проверьте синтаксис и список распознанных сервисов. Если сервис не появился, причина обычно в условии assign where или в том, что хост не прошёл проверку.

sudo icinga2 daemon -C
sudo systemctl reload icinga2
sudo icinga2 object list --type Host --name web01
sudo icinga2 object list --type Service --name "web01!http"

Команда object list показывает итоговые атрибуты после наследования шаблонов. Это лучший способ понять, почему проверка использует не тот интервал или не тот плагин.

Подключение агента

На мастере создаётся билет для агента, затем на удалённой машине запускается мастер настройки. Агент должен доверять сертификату мастера, а мастер — сертификату агента. Время на обоих узлах должно совпадать, иначе TLS-соединение не установится.

sudo icinga2 pki ticket --cn web01
sudo icinga2 node wizard
sudo systemctl restart icinga2
sudo icinga2 object list --type Endpoint

После подключения агент получает зону, а проверки выполняются на нём. Если статус стал UNKNOWN, сначала проверьте связь по 5665 и системное время, а уже потом конфигурацию сервисов.

Icinga Web 2 и уведомления

Веб-интерфейс устанавливается отдельно. Токен настройки создаётся командой, после чего мастер в браузере проведёт через шаги: база данных, аутентификация, транспорт и модули. Пароль администратора храните в менеджере секретов.

sudo apt install -y icingaweb2 icingacli
sudo icingacli setup token create
sudo icingacli module list
sudo systemctl reload apache2

Уведомления описываются объектами User и Notification. По умолчанию используется почтовая команда; проверьте, что mail или sendmail действительно установлен, иначе уведомления будут тихо теряться.

object User "admin" {
  import "generic-user"
  email = "admin@example.com"
}

apply Notification "mail" to Service {
  import "mail-service-notification"
  users = ["admin"]
  assign where host.address
}

Диагностика

Если проверка показывает ошибку, запустите плагин вручную от пользователя nagios. Так вы увидите точный код возврата и текст, который Icinga лишь интерпретирует. Для HTTP-проверки смотрите заголовки и время ответа.

sudo -u nagios /usr/lib/nagios/plugins/check_http -H 192.0.2.10 -u /health
sudo -u nagios /usr/lib/nagios/plugins/check_disk -w 15% -c 7% -p /
sudo journalctl -u icinga2 --since "30 min ago" -o cat
curl -k -s -u root:CHANGE_ME https://127.0.0.1:5665/v1/objects/services | jq -r '.results[] | [.name, .attrs.last_check_result.state] | @tsv'
  • Plugin timed out. Увеличьте timeout у команды или проверьте сеть.
  • UNKNOWN. Плагин вернул код 3: обычно это ошибка аргументов или отсутствующий файл.
  • Проверка не появляется. Проверьте assign where и имя хоста.
  • Нет уведомлений. Смотрите журнал, настройки пользователя и работу почтового агента.
  • Агент не подключается. Сверьте CN, сертификаты, время и firewall.

Чек-лист

  1. Настроены мастер, зоны и агенты, время синхронизировано.
  2. Есть проверки диска, памяти, HTTP и самого агента.
  3. Настроены пороги и интервалы, нет проверок каждую секунду.
  4. Уведомления доходят до дежурного, есть тестовое сообщение.
  5. База истории подключена, старые данные очищаются по политике.
  6. Конфигурация хранится в git и проходит icinga2 daemon -C.

Итог

Icinga 2 требует больше начальной настройки, чем простые агенты мониторинга, но взамен даёт понятную модель объектов, распределённые проверки и контроль над уведомлениями. Начните с мастера и пяти базовых сервисов, затем добавляйте агентов и историю. Главное — держать конфигурацию в системе контроля версий и проверять её перед каждой перезагрузкой.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте