Мониторинг. · 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. Выберите Да, чтобы продолжить.

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

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

Вы можете проверить детали базы данных в файле /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 в вашем браузере, и вы увидите следующий экран.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Введите данные своей учетной записи администратора и нажмите кнопку Войти, чтобы открыть панель управления 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, чтобы проверить информацию о клиентской машине. Выберите Обзор >> Узлы в левом меню, и вы увидите следующий экран.

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

Это подтверждает, что клиент правильно отправляет статистику на главный сервер Icinga.
Заключение
Это завершает наше руководство по установке программного обеспечения мониторинга Icinga на сервер Debian 12 и его настройке для мониторинга клиентской машины, работающей под той же операционной системой. Если у вас есть какие-либо вопросы, оставляйте их в комментариях ниже.
Get new posts in your inbox
No spam. Unsubscribe anytime.