Мониторинг. · 23 min read · Nov 07, 2025

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

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

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

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

  • Две машины с установленной Ubuntu 22.04. Одна из них будет выступать в роли главного сервера, а другая — в роли клиента для мониторинга.
  • Непривилегированный пользователь с правами 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 ubuntu-keyring unzip -y Некоторые из этих пакетов могут уже быть установлены в вашей системе.

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

Первый шаг — настроить брандмауэр. Ubuntu по умолчанию поставляется с 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 - Установка MySQL

Ubuntu 22.04 поставляется с последней версией MySQL. Вы можете установить его одной командой.

$ sudo apt install mysql-server

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

$ mysql --version
mysql  Ver 8.0.32-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))

Этот шаг необходим для версий MySQL 8.0.28 и выше. Войдите в оболочку MySQL.

$ sudo mysql

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

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';

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

mysql> exit

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

$ sudo mysql_secure_installation

Сначала вас попросят ввести пароль root. Введите его. Затем вас попросят установить компонент проверки пароля. Он проверяет надежность паролей, используемых в MySQL. Нажмите Y, чтобы установить его. Далее вам будет предложено установить уровень политики проверки пароля. Выберите 2, так как это самый строгий уровень.

Securing the MySQL server deployment.

Enter password for user root:

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Using existing password for root.

Estimated strength of the password: 100

Затем введите N, чтобы отказаться от изменения пароля root. Также введите Y, чтобы удалить анонимных пользователей, запретить удаленные входы root, удалить тестовую базу данных и перезагрузить таблицы привилегий.

Change the password for root ? ((Press y|Y for Yes, any other key for No) : N

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : Y
Success.

By default, MySQL 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : Y
Success.

All done!

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

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

$ sudo mysql -u root -p

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

mysql> CREATE DATABASE icinga2;

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

mysql> CREATE USER 'icinga2'@'localhost' IDENTIFIED BY 'Your_password2';

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

mysql> GRANT ALL PRIVILEGES ON icinga2.* TO 'icinga2'@'localhost';

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

mysql> FLUSH PRIVILEGES;

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

mysql> 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/ubuntu 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/ubuntu icinga-`lsb_release -cs` main" | sudo tee -a /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list

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

$ sudo apt update

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

$ sudo apt install icinga2 monitoring-plugins -y

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

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

$ sudo apt install -y icinga2-ido-mysql

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

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

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

Вас попросят подтвердить пароль еще раз.

Подтверждение пароля Icinga2

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

Функция Icinga IDO-MySQL

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

$ 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

Перезапустите службу 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; vendor preset: enabled)
    Drop-In: /etc/systemd/system/icinga2.service.d
             ??limits.conf
     Active: active (running) since Mon 2023-05-01 08:02:36 UTC; 1s ago
    Process: 9823 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/default/icinga2 (code=exited, status=0/SUCCESS)
   Main PID: 9828 (icinga2)
     Status: "Startup finished."
      Tasks: 10
     Memory: 17.6M
        CPU: 657ms
     CGroup: /system.slice/icinga2.service
             ??9828 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
             ??9846 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
             ??9849 /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.

Теперь перезапустите демона Icinga 2, чтобы завершить установку!

Вышеуказанная команда создает файл /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 for icingaweb2 */
object ApiUser "icingaweb2" {
  password = "PassWordApiIcingaWeb2"
  permissions = [ "status/query", "actions/*", "objects/modify/*", "objects/query/*" ]
}

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

$ sudo systemctl restart icinga2

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

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

Ubuntu 22.04 поставляется со старой версией 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/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

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

$ sudo apt update

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

$ sudo apt install nginx

Проверьте установку.

$ nginx -v
nginx version: nginx/1.24.0

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

$ sudo systemctl start nginx

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

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

Ubuntu 22.04 поставляется с установленным 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

Выполните следующую команду для генерации 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 на вашем сервере.

Сгенерируйте сертификат Diffie-Hellman group.

$ 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 2023-05-01 13:37:57 UTC 3h 45min left Mon 2023-05-01 07:20:42 UTC 2h 31min ago   ua-timer.timer           ua-timer.service
Mon 2023-05-01 14:39:29 UTC 4h 47min left Sat 2023-02-04 16:04:18 UTC 2 months ago   motd-news.timer          motd-news.service
Mon 2023-05-01 15:53:00 UTC 6h left       n/a                         n/a            snap.certbot.renew.timer snap.certbot.renew.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.1/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.1/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.1-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.1-fpm.sock; # Depends On The PHP Version
        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 нам нужно его настроить. При использовании Icinga Web вам необходимо пройти аутентификацию с помощью токена. Сгенерируйте токен с помощью следующей команды.

$ sudo icingacli setup token create
The newly generated setup token is: 3c4d4e155635f512

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

$ sudo icingacli setup token show
The current setup token is: 3c4d4e155635f512

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

$ sudo mysql -u root -p

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

mysql> CREATE DATABASE icingaweb2;

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

mysql> CREATE USER 'icingaweb2'@'localhost' IDENTIFIED BY 'Your_password3';

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

mysql> GRANT ALL PRIVILEGES ON icingaweb2.* TO 'icingaweb2'@'localhost';

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

mysql> FLUSH PRIVILEGES;

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

mysql> exit

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Данные API Icinga

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

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

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

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

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

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

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

Страница входа в 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, чтобы выбрать значение по умолчанию, которое отображается.

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'
365cd931d3091537622a95b113b17775893a224f

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

Шаг 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/ubuntu 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/ubuntu 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; vendor preset: enabled)
    Drop-In: /etc/systemd/system/icinga2.service.d
             ??limits.conf
     Active: active (running) since Tue 2023-05-02 07:32:07 UTC; 59min ago
   Main PID: 7602 (icinga2)
     Status: "Startup finished."
      Tasks: 8
     Memory: 13.9M
        CPU: 1.018s
     CGroup: /system.slice/icinga2.service
             ??7602 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
             ??7620 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
             ??7623 /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:          May  1 08:28:26 2023 GMT
 Valid Until:         Jun  1 08:28:26 2024 GMT
 Serial:              53:50:d4:1a:85:c5:70:5b:b1:f6:0e:c3:b6:e4:db:62:df:8d:5e:d9

 Signature Algorithm: sha256WithRSAEncryption
 Subject Alt Names:   icinga.example.com
 Fingerprint:         DC BB 90 68 29 E5 C4 B5 74 F5 BC 8C BF A1 8F BF D2 9D A4 E5 A9 9A 43 2C 3B 24 AE A9 CD 19 32 F4

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'): 365cd931d3091537622a95b113b17775893a224f

Оставьте хост и порт привязки 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

Нажмите N, чтобы пропустить отключение конфигураций из директории /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

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

[2023-05-02 11:21:23 +0000] information/cli: Icinga application loader (version: r2.13.7-1)
[2023-05-02 11:21:23 +0000] information/cli: Loading configuration file(s).
[2023-05-02 11:21:23 +0000] information/ConfigItem: Committing config item(s).
[2023-05-02 11:21:23 +0000] information/ApiListener: My API identity: icinga.example.com
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 IcingaApplication.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 Host.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 FileLogger.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 IdoMysqlConnection.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 CheckerComponent.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 4 Zones.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 2 Endpoints.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 2 ApiUsers.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 ApiListener.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 NotificationComponent.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 244 CheckCommands.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 4 Services.
[2023-05-02 11:21:23 +0000] information/ScriptGlobal: Dumping variables to file '/var/cache/icinga2/icinga2.vars'
[2023-05-02 11:21:23 +0000] information/cli: Finished validating the configuration file(s).

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

$ sudo systemctl restart icinga2

Шаг 15 - Проверка на панели Icinga

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

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

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

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

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

Заключение

Это завершает наше руководство по установке программного обеспечения мониторинга Icinga на сервер Ubuntu 22.04 и его настройке для мониторинга клиентской машины, работающей под той же операционной системой.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.