Мониторинг. · 24 min read · Nov 22, 2025

Как установить программное обеспечение мониторинга Icinga 2 на Debian 12

Icinga 2 — это система мониторинга с открытым исходным кодом, которая проверяет доступность сетевых ресурсов, уведомляет пользователей о сбоях и генерирует данные о производительности для отчетности. Вы можете мониторить сетевые службы (SMTP, POP3, HTTP, NNTP, ping), ресурсы хоста (использование ЦП, использование диска) и сетевые компоненты (коммутаторы, маршрутизаторы, датчики температуры и влажности) с помощью Icinga2. Он может быть интегрирован с плагинами Nagios.

В следующем руководстве вы узнаете, как установить Icinga2 на сервер Debian 12 и подключить его к клиентскому узлу. Вместо стандартного сервера Apache мы будем использовать Nginx для запуска Icinga2 Web.

Предварительные требования

  • Две машины с установленным Debian 12. Одна из них будет выступать в качестве главного сервера, а другая — в качестве клиента для мониторинга.
  • Непривилегированный пользователь с правами sudo на обоих серверах.
  • Полностью квалифицированное доменное имя (FQDN) для главного сервера, icinga.example.com, и клиентского узла, client.example.com.
  • Убедитесь, что все обновлено. $ sudo apt update && sudo apt upgrade
  • Несколько пакетов, которые нужны вашей системе. $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring ufw unzip -y Некоторые из этих пакетов могут уже быть установлены на вашей системе.

Шаг 1 - Настройка брандмауэра на главном сервере

Первый шаг — настроить брандмауэр. Debian по умолчанию поставляется с ufw (Uncomplicated Firewall).

Проверьте, работает ли брандмауэр.

$ sudo ufw status

Вы должны получить следующий вывод.

Status: inactive

Разрешите порт SSH, чтобы брандмауэр не разорвал текущее соединение при его включении.

$ sudo ufw allow OpenSSH

Разрешите порт 5665, который необходим клиенту Icinga2 для подключения к серверу.

$ sudo ufw allow 5665

Также разрешите порты HTTP и HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Включите брандмауэр

$ sudo ufw enable
Команда может нарушить существующие ssh-соединения. Продолжить операцию (y|n)? y
Брандмауэр активен и включен при запуске системы

Проверьте статус брандмауэра снова.

$ sudo ufw status

Вы должны увидеть аналогичный вывод.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
5665                       ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
5665 (v6)                  ALLOW       Anywhere (v6)

Шаг 2 - Установка сервера MariaDB

Debian 12 поставляется с последней версией MariaDB. Вы можете установить его одной командой.

$ sudo apt install mariadb-server

Проверьте версию MySQL.

$ mysql --version
mysql  Ver 15.1 Distrib 10.11.4-MariaDB, for debian-linux-gnu (x86_64) using  EditLine wrapper

Запустите скрипт безопасной установки MariaDB.

$ sudo mariadb-secure-installation

Вам будет предложено ввести пароль root. Нажмите Enter, так как мы еще не установили пароль для него.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):

Далее вам будет предложено, хотите ли вы переключиться на метод аутентификации через сокет Unix. Плагин unix_socket позволяет использовать ваши учетные данные операционной системы для подключения к серверу MariaDB. Поскольку у вас уже есть защищенная учетная запись root, введите n, чтобы продолжить.

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n

Далее вам будет предложено изменить пароль root. В Debian 12 пароль root тесно связан с автоматизированным обслуживанием системы, поэтому его следует оставить без изменений. Введите n, чтобы продолжить.

 ... skipping.
You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n

Далее вам будут заданы определенные вопросы для повышения безопасности MariaDB. Введите Y, чтобы удалить анонимных пользователей, запретить удаленные входы root, удалить тестовую базу данных и перезагрузить таблицы привилегий.

 ... skipping.
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Вы можете войти в оболочку MariaDB, введя sudo mysql или sudo mariadb в командной строке.

Шаг 3 - Настройка MariaDB

Войдите в оболочку MariaDB. Введите свой пароль root, когда будет предложено.

$ sudo mysql

Создайте базу данных Icinga.

MariaDB [(none)]> CREATE DATABASE icinga2;

Создайте учетную запись SQL для Icinga2. Не изменяйте имя базы данных и имя пользователя, так как они уже установлены по умолчанию. Если вы хотите изменить их, вам нужно будет выполнить дополнительные шаги при установке драйвера MySQL на Шаге 5. Введите пароль, и вы получите ошибку, а затем вам будет предложено перенастроить, где вы сможете указать свое собственное имя базы данных и пользователей.

MariaDB [(none)]> CREATE USER 'icinga2'@'localhost' IDENTIFIED BY 'Your_password2';

Предоставьте все привилегии на базу данных пользователю.

MariaDB [(none)]> GRANT ALL PRIVILEGES ON icinga2.* TO 'icinga2'@'localhost';

Поскольку мы не изменяем пользователя root, вам следует создать еще одного SQL-пользователя для выполнения административных задач, которые требуют аутентификации по паролю. Выберите надежный пароль для этого пользователя.

MariaDB> GRANT ALL ON *.* TO 'navjot'@'localhost' IDENTIFIED BY 'Yourpassword32!' WITH GRANT OPTION;

Сбросьте привилегии пользователей.

MariaDB [(none)]> FLUSH PRIVILEGES;

Выйдите из оболочки.

MariaDB [(none)]> exit

Шаг 4 - Установка Icinga2 и плагинов мониторинга на главном сервере

Мы будем использовать официальный репозиторий Icinga2 для установки. Скачайте и импортируйте GPG-ключ Icinga2.

$ wget -O - https://packages.icinga.com/icinga.key | sudo gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg

Запустите следующие команды, чтобы создать и добавить информацию о репозитории Icinga2 в список источников APT.

$ echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/debian icinga-`lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list
$ echo "deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] http://packages.icinga.com/debian icinga-`lsb_release -cs` main" | sudo tee -a /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list

Обновите список репозиториев системы.

$ sudo apt update

Установите Icinga2, Icingacli и плагины мониторинга.

$ sudo apt install icinga2 monitoring-plugins -y

Шаг 5 - Установка драйвера IDO MySQL на главном сервере

Для работы Icinga2 нужна база данных. Для этого нам нужно установить драйвер IDO MySQL и настроить подключение к базе данных. Запустите следующую команду для установки драйвера MySQL.

$ sudo apt install -y icinga2-ido-mysql

Далее вам будет предложено включить функцию ido-mysql. Выберите Да, чтобы продолжить.

Функция Icinga IDO-MySQL

Далее вам будет предложено настроить драйвер и создать базу данных с помощью утилиты dbconfig-common. Выберите Да, чтобы продолжить.

Далее вам будет предложено ввести пароль MySQL для базы данных icinga2. Введите пароль, настроенный на шаге 3, чтобы продолжить.

Введите пароль базы данных для Icinga2

Вам будет предложено подтвердить пароль еще раз.

Подтвердите пароль Icinga2

Вы можете проверить детали базы данных в файле /etc/icinga2/features-available/ido-mysql.conf.

$ sudo cat /etc/icinga2/features-available/ido-mysql.conf
/**
 * The db_ido_mysql library implements IDO functionality
 * for MySQL.
 */

library "db_ido_mysql"

object IdoMysqlConnection "ido-mysql" {
  user = "icinga2",
  password = "Your_password2",
  host = "localhost",
  database = "icinga2"
}

Включите функцию ido-mysql.

$ sudo icinga2 feature enable ido-mysql
Включение функции ido-mysql. Убедитесь, что вы перезапустили Icinga 2, чтобы изменения вступили в силу.

Перезапустите службу Icinga2.

$ sudo systemctl restart icinga2

Проверьте статус службы.

$ sudo systemctl status icinga2
? icinga2.service - Icinga host/service/network monitoring system
     Loaded: loaded (/lib/systemd/system/icinga2.service; enabled; preset: enabled)
    Drop-In: /etc/systemd/system/icinga2.service.d
             ??limits.conf
     Active: active (running) since Mon 2024-01-08 07:35:29 UTC; 4s ago
    Process: 15404 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/default/icinga2 (code=exited, status=0/SUCCESS)
   Main PID: 15411 (icinga2)
     Status: "Startup finished."
      Tasks: 14
     Memory: 13.6M
        CPU: 858ms
     CGroup: /system.slice/icinga2.service
             ??15411 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
             ??15433 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
             ??15438 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log

Шаг 6 - Настройка API Icinga2

Чтобы управлять и настраивать мониторинг Icinga2 через HTTP, вам нужно настроить API Icinga2. Запустите следующую команду, чтобы включить API Icinga2, сгенерировать TLS-сертификаты для Icinga2 и обновить конфигурации Icinga2.

$ sudo icinga2 api setup

Вы получите аналогичный вывод.

information/cli: Generating new CA.
information/base: Writing private key to '/var/lib/icinga2/ca//ca.key'.
information/base: Writing X509 certificate to '/var/lib/icinga2/ca//ca.crt'.
information/cli: Generating new CSR in '/var/lib/icinga2/certs//icinga.example.com.csr'.
information/base: Writing private key to '/var/lib/icinga2/certs//icinga.example.com.key'.
information/base: Writing certificate signing request to '/var/lib/icinga2/certs//icinga.example.com.csr'.
information/cli: Signing CSR with CA and writing certificate to '/var/lib/icinga2/certs//icinga.example.com.crt'.
information/pki: Writing certificate to file '/var/lib/icinga2/certs//icinga.example.com.crt'.
information/cli: Copying CA certificate to '/var/lib/icinga2/certs//ca.crt'.
information/cli: Adding new ApiUser 'root' in '/etc/icinga2/conf.d/api-users.conf'.
information/cli: Reading '/etc/icinga2/icinga2.conf'.
information/cli: Enabling the 'api' feature.
Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect.
information/cli: Updating 'NodeName' constant in '/etc/icinga2/constants.conf'.
information/cli: Created backup file '/etc/icinga2/constants.conf.orig'.
information/cli: Updating 'ZoneName' constant in '/etc/icinga2/constants.conf'.
information/cli: Backup file '/etc/icinga2/constants.conf.orig' already exists. Skipping backup.
Done.

Now restart your Icinga 2 daemon to finish the installation!

Вышеуказанная команда создает файл /etc/icinga2/conf.d/api-users.conf с пользователем по умолчанию root, имеющим все разрешения на API Icinga2. Нам нужен новый пользователь с минимальными разрешениями, необходимыми для Icinga Web.

Откройте файл api-users.conf для редактирования.

$ sudo nano /etc/icinga2/conf.d/api-users.conf

Добавьте следующий код в конец файла. Выберите надежный пароль для API.

/** api for icingaweb2 */
object ApiUser "icingaweb2" {
  password = "PassWordApiIcingaWeb2"
  permissions = [ "status/query", "actions/*", "objects/modify/*", "objects/query/*" ]
}

Запомните учетные данные, которые понадобятся позже для доступа к веб-сайту. Сервер API Icinga2 по умолчанию слушает на порту 5665. Перезапустите службу, чтобы изменения вступили в силу.

$ sudo systemctl restart icinga2

Следующий шаг — установить интерфейс Icinga Web. Он предварительно настроен для Apache, но мы будем использовать сервер Nginx. Поэтому сначала нам нужно установить Nginx и SSL-сертификаты.

Шаг 7 - Установка Nginx

Debian 12 поставляется со старой версией Nginx. Чтобы установить последнюю версию, вам нужно загрузить официальный репозиторий Nginx.

Импортируйте ключ подписи Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Добавьте репозиторий для основной версии Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Обновите системные репозитории.

$ sudo apt update

Установите Nginx.

$ sudo apt install nginx

Проверьте установку. На системах Debian следующая команда будет работать только с sudo.

$ sudo nginx -v
nginx version: nginx/1.25.3

Запустите сервер Nginx.

$ sudo systemctl start nginx

Проверьте статус службы.

$ sudo systemctl status nginx
? nginx.service - nginx - высокопроизводительный веб-сервер
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Mon 2024-01-08 07:43:24 UTC; 4s ago
       Docs: https://nginx.org/en/docs/
    Process: 16330 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 16331 (nginx)
      Tasks: 3 (limit: 2299)
     Memory: 2.9M
        CPU: 16ms
     CGroup: /system.slice/nginx.service
             ??16331 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??16332 "nginx: worker process"
             ??16333 "nginx: worker process"

Jan 08 07:43:24 icinga systemd[1]: Starting nginx.service - nginx - высокопроизводительный веб-сервер...
Jan 08 07:43:24 icinga systemd[1]: Started nginx.service - nginx - высокопроизводительный веб-сервер.

Шаг 8 - Установка SSL

Нам нужно установить Certbot для генерации SSL-сертификата. Вы можете установить Certbot, используя репозиторий Debian, или загрузить последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd.

Debian 12 не поставляется с установленным Snapd. Установите пакет Snapd.

$ sudo apt install snapd

Запустите следующие команды, чтобы убедиться, что ваша версия Snapd обновлена.

$ sudo snap install core && sudo snap refresh core

Установите Certbot.

$ sudo snap install --classic certbot

Используйте следующую команду, чтобы убедиться, что команда Certbot может быть выполнена, создав символическую ссылку в директории /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Проверьте, работает ли Certbot правильно.

$ certbot --version
certbot 2.8.0

Запустите следующую команду для генерации SSL-сертификата.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d icinga.example.com

Вышеуказанная команда загрузит сертификат в директорию /etc/letsencrypt/live/icinga.example.com на вашем сервере.

Сгенерируйте сертификат группы Диффи-Хеллмана.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Проверьте службу планировщика обновления Certbot.

$ sudo systemctl list-timers

Вы найдете snap.certbot.renew.service как одну из запланированных служб.

NEXT                        LEFT          LAST                        PASSED  UNIT                         ACTIVATES
-----------------------------------------------------------------------------------------------------------------------------------------
Mon 2024-01-08 09:47:46 UTC 1h 56min left Sun 2024-01-07 09:47:46 UTC 22h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Mon 2024-01-08 13:35:00 UTC 5h 43min left -                           -       snap.certbot.renew.timer     snap.certbot.renew.service
Tue 2024-01-09 00:00:00 UTC 16h left      Mon 2024-01-08 00:00:01 UTC 7h ago  dpkg-db-backup.timer         dpkg-db-backup.service

Сделайте пробный запуск процесса, чтобы проверить, работает ли обновление SSL.

$ sudo certbot renew --dry-run

Если вы не видите ошибок, вы готовы. Ваш сертификат будет автоматически обновляться.

Шаг 9 - Настройка Nginx и PHP

Поскольку Icinga настроен для Apache, пакет PHP-FPM не установлен по умолчанию. Вам также понадобится модуль PHP Imagick, если вы хотите экспортировать графики в PDF. Запустите следующую команду для установки PHP-FPM и библиотеки PHP Imagick.

$ sudo apt install php-fpm php-imagick

Настройка PHP-FPM

Откройте файл /etc/php/8.2/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Нам нужно установить Unix пользователя/группу процессов PHP на nginx. Найдите строки user=www-data и group=www-data в файле и измените их на nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = nginx
group = nginx
...

Найдите строки listen.owner = www-data и listen.group = www-data в файле и измените их на nginx.

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx
listen.group = nginx

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Перезапустите службу PHP-FPM.

$ sudo systemctl restart php8.2-fpm

Настройка Nginx

Создайте и откройте файл /etc/nginx/conf.d/icinga.conf для редактирования.

$ sudo nano /etc/nginx/conf.d/icinga.conf

Вставьте следующий код в него.

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  icinga.example.com;

    access_log  /var/log/nginx/icinga.access.log;
    error_log   /var/log/nginx/icinga.error.log;

    # SSL
    ssl_certificate      /etc/letsencrypt/live/icinga.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/icinga.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/icinga.example.com/chain.pem;
    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    resolver 8.8.8.8;

    location ~ ^/index\.php(.*)$ {
        # fastcgi_pass 127.0.0.1:9000;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Зависит от версии PHP
        fastcgi_index index.php;
        # try_files $uri =404;
        # fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME /usr/share/icingaweb2/public/index.php;
        fastcgi_param ICINGAWEB_CONFIGDIR /etc/icingaweb2;
        fastcgi_param REMOTE_USER $remote_user;
    }

    location ~ ^/(.*)? {
        alias /usr/share/icingaweb2/public;
        index index.php;
        rewrite ^/$ /dashboard;
        try_files $1 $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        return 404;
    }
}

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  icinga.example.com;
    return 301   https://$host$request_uri;
}

Обратите внимание, что корневая директория, которая будет использоваться в конфигурации Nginx, — это /usr/share/icingaweb2/public.

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Откройте файл /etc/nginx/nginx.conf для редактирования.

$ sudo nano /etc/nginx/nginx.conf

Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size 64;

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Проверьте синтаксис конфигурационного файла Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Перезапустите службу Nginx.

$ sudo systemctl restart nginx

Шаг 10 - Подготовка веб-настройки

Перед доступом к Icinga Web нам нужно установить его вместе с инструментом командной строки.

$ sudo apt install icingaweb2 icingacli

Добавьте пользователя Nginx в группу icingaweb2.

$ sudo usermod -aG icingaweb2 nginx

Установите разрешения для директории Icingaweb на группу icingaweb2.

$ sudo icingacli setup config directory --group icingaweb2
Успешно создана директория конфигурации /etc/icingaweb2

При использовании Icinga Web вам необходимо аутентифицироваться с помощью токена. Сгенерируйте токен с помощью следующей команды.

$ sudo icingacli setup token create
Новый сгенерированный токен настройки: 56951f01f9f77a68

Запомните токен, так как он понадобится вам позже. Вы всегда можете получить его позже, используя следующую команду.

$ sudo icingacli setup token show
Текущий токен настройки: 56951f01f9f77a68

Следующий шаг — создать базу данных и учетную запись базы данных. Войдите в оболочку MariaDB.

$ sudo mysql

Создайте базу данных Icinga Web.

MariaDB [(none)]> CREATE DATABASE icingaweb2;

Создайте учетную запись SQL для Icinga Web.

MariaDB [(none)]> CREATE USER 'icingaweb2'@'localhost' IDENTIFIED BY 'Your_password3';

Предоставьте все привилегии на базу данных пользователю.

MariaDB [(none)]> GRANT ALL PRIVILEGES ON icingaweb2.* TO 'icingaweb2'@'localhost';

Сбросьте привилегии пользователей.

MariaDB [(none)]> FLUSH PRIVILEGES;

Выйдите из оболочки.

MariaDB [(none)]> exit

Перезапустите Nginx и PHP-FPM, чтобы применить изменения разрешений.

$ sudo systemctl restart nginx php8.2-fpm

Шаг 11 - Настройка IcingaWeb

Откройте URL https://icinga.example.com/setup в вашем браузере, и вы увидите следующий экран.

Страница настройки Icinga Web

Введите токен, сгенерированный на предыдущем шаге, и нажмите кнопку Далее, чтобы продолжить.

Настройка модулей Icinga

На следующем экране выберите модули, которые вы хотите установить, и нажмите Далее, чтобы продолжить. Модуль Мониторинг выбран по умолчанию. На следующей странице вам будут показаны требования и выполнены ли они. Убедитесь, что все требования отмечены зеленым.

Страница требований Icinga

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

Тип аутентификации Icinga

Тип аутентификации установлен на База данных по умолчанию. Нажмите Далее, чтобы продолжить. Вам будет предложено заполнить учетные данные базы данных на следующей странице.

Учетные данные базы данных Icinga Web

Заполните учетные данные базы данных, созданные на шаге 10. Нажмите кнопку Проверить конфигурацию, чтобы проверить учетные данные. После проверки нажмите Далее, чтобы продолжить. Далее вам будет предложено назвать бэкэнд аутентификации.

Бэкэнд аутентификации Icinga

Оставьте значение по умолчанию и нажмите Далее, чтобы продолжить. На следующей странице вам будет предложено создать учетную запись администратора.

Данные администратора Icinga

Введите учетные данные для вашей новой учетной записи администратора и нажмите Далее, чтобы продолжить. Далее вам будет показана страница Конфигурация приложения.

Конфигурация приложения Icinga

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

Обзор конфигурации Icinga

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

Добро пожаловать в модуль конфигурации Icinga Web 2

Нажмите Далее, чтобы продолжить с конфигурацией модуля мониторинга. Далее вам будут предложены учетные данные базы данных Icinga.

Учетные данные базы данных Icinga

Заполните учетные данные базы данных на шаге 3 и нажмите Проверить конфигурацию, чтобы проверить соединение. После проверки нажмите Далее, чтобы продолжить. Далее вам будут предложены заполнить данные API.

Данные API Icinga

Заполните учетные данные API, созданные на шаге 6, 127.0.0.1 в качестве Хоста и нажмите Проверить конфигурацию, чтобы проверить соединение. Нажмите Далее, чтобы продолжить. Далее вам будет предложено выбрать защищенные пользовательские переменные для безопасности мониторинга.

Безопасность мониторинга Icinga

Оставьте значения по умолчанию и нажмите Далее, чтобы продолжить. Далее вам будет предложено просмотреть конфигурацию мониторинга. Вы можете вернуться и изменить ее, если хотите.

Обзор конфигурации мониторинга Icinga

Если вы удовлетворены, нажмите Завершить, чтобы завершить установку.

Установка Icinga завершена

После успешного завершения нажмите кнопку Войти в Icinga Web 2, чтобы открыть страницу входа ( https://icinga.example.com).

Страница входа Icinga Web

Введите данные своей учетной записи администратора и нажмите кнопку Войти, чтобы открыть панель управления Icinga Web.

Панель управления Icinga Web

Перейдите на страницу Обзор >> Службы, чтобы проверить статус главного сервера, аналогичный следующему.

Страница служб Icinga Web

Шаг 12 - Инициализация главного сервера

Следующий шаг — инициализация главного сервера в качестве главного узла. Главный узел выступает в качестве основного контроллера для стека мониторинга. Запустите следующую команду, чтобы начать процесс инициализации.

$ sudo icinga2 node wizard

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

Welcome to the Icinga 2 Setup Wizard!

We will guide you through all required configuration details.

Please specify if this is an agent/satellite setup ('n' installs a master setup) [Y/n]: n

Далее вам будет предложено ввести общее имя или доменное имя. Нажмите Enter, чтобы выбрать значение по умолчанию, если оно правильное. В противном случае введите домен и нажмите Enter.

Please specify the common name (CN) [icinga.example.com]:
Reconfiguring Icinga...
Checking for existing certificates for common name 'icinga.example.com'...
Certificate '/var/lib/icinga2/certs//icinga.example.com.crt' for CN 'icinga.example.com' already existing. Skipping certificate generation.
Generating master configuration for Icinga 2.
'api' feature already enabled.

Далее введите имя главной зоны и нажмите Enter, чтобы продолжить. В нашем случае это то же самое, что и доменное имя сервера.

Master zone name [master]: icinga.example.com

Далее вам будет предложено, хотите ли вы добавить дополнительные глобальные зоны. Нажмите n, чтобы пропустить добавление, и нажмите Enter, чтобы продолжить.

Default global zones: global-templates director-global
Do you want to specify additional global zones? [y/N]: n

На следующем шаге оставьте хост и порт привязки API по умолчанию и нажмите Enter, чтобы продолжить.

Please specify the API bind host/port (optional):
Bind Host []:
Bind Port []:

Далее нажмите Y, чтобы отключить конфигурацию внутри директории /etc/icinga2/conf.d/, так как мы будем использовать конфигурацию зон Icinga2 позже.

Do you want to disable the inclusion of the conf.d directory [Y/n]: Y
Disabling the inclusion of the conf.d directory...
Checking if the api-users.conf file exists...

Done.

Now restart your Icinga 2 daemon to finish the installation!

Перезапустите службу, чтобы применить изменения.

$ sudo systemctl restart icinga2

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

$ sudo icinga2 pki ticket --cn 'client.example.com'
c81f2a3b86534f34160ed8b776906e5452d8d09c

Запомните билет для использования позже.

Шаг 13 - Инициализация агента Icinga2 на клиентском сервере

Войдите на клиентский сервер и установите Icinga2 и плагины мониторинга. Запустите следующие команды, чтобы сделать это.

$ wget -O - https://packages.icinga.com/icinga.key | sudo gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg
$ echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/debian icinga-`lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list
$ echo "deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] http://packages.icinga.com/debian icinga-`lsb_release -cs` main" | sudo tee -a /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list
$ sudo apt update
$ sudo apt install icinga2 monitoring-plugins -y

Проверьте, включена ли служба Icinga и работает ли она.

$ sudo systemctl status icinga2
? icinga2.service - Icinga host/service/network monitoring system
     Loaded: loaded (/lib/systemd/system/icinga2.service; enabled; preset: enabled)
    Drop-In: /etc/systemd/system/icinga2.service.d
             ??limits.conf
     Active: active (running) since Mon 2024-01-08 12:52:53 UTC; 35s ago
   Main PID: 19530 (icinga2)
     Status: "Startup finished."
      Tasks: 12
     Memory: 13.4M
        CPU: 216ms
     CGroup: /system.slice/icinga2.service
             ??19530 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
             ??19573 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
             ??19578 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log

Запустите Мастера узлов Icinga, чтобы инициализировать агент на клиентском сервере.

$ sudo icinga2 node wizard

Вам будет предложено, является ли это настройкой агента. Введите Y, чтобы настроить агент.

Welcome to the Icinga 2 Setup Wizard!

We will guide you through all required configuration details.

Please specify if this is an agent/satellite setup ('n' installs a master setup) [Y/n]: Y

Далее вам будет предложено указать общее имя. Оставьте значение по умолчанию и нажмите Enter, чтобы продолжить.

Starting the Agent/Satellite setup routine...

Please specify the common name (CN) [client.example.com]:

Далее укажите родительский конечный пункт как icinga.example.com и введите Y, чтобы установить соединение с родительским узлом из клиента.

Please specify the parent endpoint(s) (master or satellite) where this node should connect to:
Master/Satellite Common Name (CN from your master/satellite node): icinga.example.com

Do you want to establish a connection to the parent node from this node? [Y/n]: Y

Далее введите IP-адрес главного сервера и оставьте значение порта неизменным по умолчанию.

Please specify the master/satellite connection information:
Master/Satellite endpoint host (IP address or FQDN): 199.247.31.184
Master/Satellite endpoint port [5665]:

Введите N, чтобы отказаться от добавления дополнительных конечных пунктов.

Add more master/satellite endpoints? [y/N]: N

Далее вам будет показана информация о сертификате для главного сервера. Нажмите Y, чтобы подтвердить информацию и продолжить.

Parent certificate information:

 Version:             3
 Subject:             CN = icinga.example.com
 Issuer:              CN = Icinga CA
 Valid From:          Jan  8 07:36:55 2024 GMT
 Valid Until:         Feb  8 07:36:55 2025 GMT
 Serial:              3a:e5:5e:e6:d5:5e:cc:1d:89:be:18:0b:10:cb:7d:54:8f:82:b1:5e

 Signature Algorithm: sha256WithRSAEncryption
 Subject Alt Names:   icinga.example.com
 Fingerprint:         DB 62 0D 2D AF 73 02 F2 86 92 5E A8 50 CD 0F 4F F2 D6 9E 86 AE F6 F9 E4 D7 F2 F2 60 78 1B 92 E5

Is this information correct? [y/N]: Y

Далее введите сгенерированный на предыдущем шаге билет запроса.

Please specify the request ticket generated on your Icinga 2 master (optional).
 (Hint: # icinga2 pki ticket --cn 'client.example.com'): c81f2a3b86534f34160ed8b776906e5452d8d09c

Оставьте хост и порт привязки API по умолчанию и нажмите Enter, чтобы продолжить.

Please specify the API bind host/port (optional):
Bind Host []:
Bind Port []:

Далее введите Y дважды, чтобы принять конфигурацию и команды от главного узла.

Accept config from parent node? [y/N]: Y
Accept commands from parent node? [y/N]: Y

Нажмите Enter, чтобы принять имя локальной зоны по умолчанию, которое является доменным именем клиента. Введите доменное имя главного узла в качестве имени родительской зоны, чтобы продолжить.

Reconfiguring Icinga...
Disabling feature notification. Make sure to restart Icinga 2 for these changes to take effect.
Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect.

Local zone name [client.example.com]:
Parent zone name [master]: icinga.example.com

Нажмите N, чтобы пропустить добавление дополнительных глобальных зон.

Default global zones: global-templates director-global
Do you want to specify additional global zones? [y/N]: N

Нажмите Y, чтобы отключить конфигурации из директории /etc/icinga2/conf.d/.

Do you want to disable the inclusion of the conf.d directory [Y/n]: Y
Disabling the inclusion of the conf.d directory...

Done.

Now restart your Icinga 2 daemon to finish the installation!

Перезапустите службу Icinga, чтобы применить изменения конфигурации.

$ sudo systemctl restart icinga2

Шаг 14 - Создание конфигурации зон на главном сервере

Вернитесь на сервер и создайте новую директорию в качестве зоны по умолчанию.

$ sudo mkdir -p /etc/icinga2/zones.d/icinga.example.com/

Далее создайте конфигурационный файл в только что созданной директории и откройте его для редактирования.

$ sudo nano /etc/icinga2/zones.d/icinga.example.com/client.example.com.conf

Вставьте следующий код в него. IP-адрес в коде должен соответствовать публичному IP-адресу клиента.

// Endpoints
object Endpoint "client.example.com" {
}
// Zones
object Zone "client.example.com" {
    endpoints = [ "client.example.com" ]
    parent = "icinga.example.com"
}
// Host Objects
object Host "client.example.com" {
    check_command = "hostalive"
    address = "95.179.138.148"
    vars.client_endpoint = name
}

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Создайте и откройте файл служб для редактирования.

$ sudo nano /etc/icinga2/zones.d/icinga.example.com/services.conf

Вставьте следующий код в него.

// Ping
 apply Service "Ping" {
 check_command = "ping4"
 assign where host.address // check executed on master
 }
 // System Load
 apply Service "System Load" {
 check_command = "load"
 command_endpoint = host.vars.client_endpoint // Check executed on client01
 assign where host.vars.client_endpoint
 }
 // SSH Service
 apply Service "SSH Service" {
 check_command = "ssh"
 command_endpoint = host.vars.client_endpoint
 assign where host.vars.client_endpoint
 }
 // Icinga 2 Service
 apply Service "Icinga2 Service" {
 check_command = "icinga"
 command_endpoint = host.vars.client_endpoint
 assign where host.vars.client_endpoint
 }

Запустите следующую команду, чтобы проверить конфигурацию.

$ sudo icinga2 daemon -C

Вы получите аналогичный вывод.

[2024-01-08 13:01:26 +0000] information/cli: Icinga application loader (version: r2.14.1-1)
[2024-01-08 13:01:26 +0000] information/cli: Loading configuration file(s).
[2024-01-08 13:01:26 +0000] information/ConfigItem: Committing config item(s).
[2024-01-08 13:01:26 +0000] information/ApiListener: My API identity: icinga.example.com
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 1 IcingaApplication.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 1 Host.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 1 FileLogger.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 1 IdoMysqlConnection.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 4 Zones.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 1 CheckerComponent.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 2 Endpoints.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 2 ApiUsers.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 1 ApiListener.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 1 NotificationComponent.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 246 CheckCommands.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 4 Services.
[2024-01-08 13:01:26 +0000] information/ScriptGlobal: Dumping variables to file '/var/cache/icinga2/icinga2.vars'
[2024-01-08 13:01:27 +0000] information/cli: Finished validating the configuration file(s).

Перезапустите службу Icinga, чтобы применить изменения конфигурации.

$ sudo systemctl restart icinga2

Шаг 15 - Проверьте на панели управления Icinga

Откройте панель управления Icinga2 Web, чтобы проверить информацию о клиентской машине. Выберите Обзор >> Узлы в левом меню, и вы увидите следующий экран.

Страница узлов панели управления Icinga Web

Может потребоваться некоторое время, чтобы статус клиента отобразился как UP. Щелкните по клиенту, чтобы увидеть его детали. Выберите Обзор >> Службы, и вы увидите следующие статусы о клиенте.

Детали служб клиента Icinga

Это подтверждает, что клиент правильно отправляет статистику на главный сервер Icinga.

Заключение

Это завершает наше руководство по установке программного обеспечения мониторинга Icinga на сервер Debian 12 и его настройке для мониторинга клиентской машины, работающей под той же операционной системой. Если у вас есть какие-либо вопросы, оставляйте их в комментариях ниже.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.