Nagios Core — один з найстаріших і найпоширеніших інструментів моніторингу інфраструктури з відкритим кодом. У цій статті розглянемо, як встановити Nagios Core та клієнт NRPE на VPS на Debian, Ubuntu та AlmaLinux, а також базові модулі системи.
Що таке Nagios Core
Nagios Core — це система моніторингу серверів, мереж та сервісів, яка існує з 2002 року і досі активно розвивається. На відміну від Zabbix чи Prometheus, Nagios історично збирається з вихідного коду, а не встановлюється готовим пакетом — це дає повний контроль над збіркою, але й вимагає трохи більше кроків при встановленні.
Базові модулі Nagios
- Nagios Core — головний движок, який планує перевірки, оцінює статуси й надсилає сповіщення.
- Nagios Plugins — окремий набір виконуваних скриптів (
check_http,check_disk,check_loadтощо), які реально виконують перевірки. - NRPE (Nagios Remote Plugin Executor) — агент для віддалених Linux-серверів, який дозволяє Nagios Core виконувати плагіни на клієнтській машині, а не лише перевіряти її ззовні.
- Web-інтерфейс (CGI) — класична панель на Apache + PHP для перегляду статусів хостів і сервісів.
- NCPA (Nagios Cross-Platform Agent) — сучасніша альтернатива NRPE, працює і на Linux, і на Windows, через HTTP API замість окремого протоколу.
- Host/Service Groups — угруповання хостів і перевірок для зручного перегляду й масових дій.
- Notifications та Escalations — правила сповіщень і ескалації, якщо проблему довго не підтверджують.
Що має бути готово заздалегідь
- VPS для Nagios сервера з Debian 12, Ubuntu 22.04/24.04 або AlmaLinux 8/9
- Доступ sudo або root
- Мінімум 1 ГБ RAM для невеликої кількості хостів
Встановлення Nagios Core на Debian та Ubuntu
Крок 1. Встановлення залежностей збірки
sudo apt update
sudo apt install -y build-essential gcc make unzip libgd-dev libssl-dev apache2 php libapache2-mod-php php-gd openssl wget curl autoconf gettext
Крок 2. Створення користувача та групи команд
sudo useradd -m -s /bin/bash nagios
sudo groupadd nagcmd
sudo usermod -aG nagcmd nagios
sudo usermod -aG nagcmd www-data
Крок 3. Завантаження та збірка Nagios Core
cd /tmp
wget https://github.com/NagiosEnterprises/nagioscore/archive/refs/tags/nagios-4.5.12.tar.gz
tar xzf nagios-4.5.12.tar.gz
cd nagioscore-nagios-4.5.12
./configure --with-httpd-conf=/etc/apache2/sites-enabled --with-command-group=nagcmd
make all
sudo make install
sudo make install-init
sudo make install-config
sudo make install-commandmode
sudo make install-webconf
Крок 4. Встановлення Nagios Plugins
cd /tmp
wget https://github.com/nagios-plugins/nagios-plugins/archive/refs/tags/release-2.4.12.tar.gz
tar xzf release-2.4.12.tar.gz
cd nagios-plugins-release-2.4.12
./tools/setup
./configure
make
sudo make install
Крок 5. Обліковий запис для веб-інтерфейсу
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
sudo a2enmod rewrite cgi
sudo systemctl restart apache2
Крок 6. Запуск служби
sudo systemctl enable --now nagios
sudo systemctl status nagios
Встановлення Nagios Core на AlmaLinux
На RPM-дистрибутивах простіше скористатись готовим пакетом з EPEL, ніж збирати з нуля.
Крок 1. Підключення EPEL, CRB та встановлення
nagios-plugins-all тягне за собою залежність nagios-plugins-disk_smb, яка вимагає Perl-модулі perl-Import-Into та perl-PerlIO-utf8_strict. Ці модулі лежать у репозиторії CRB (CodeReady Builder), який на AlmaLinux 9 вимкнений за замовчуванням. Без нього встановлення завершиться помилкою “nothing provides perl(Import::Into)”. Увімкніть CRB перед EPEL, як показано нижче.sudo dnf config-manager --set-enabled crb
sudo dnf install -y epel-release
sudo dnf install -y nagios nagios-common nagios-plugins nagios-plugins-all nrpe httpd php php-fpm nano
sudo systemctl enable --now php-fpm
php-fpm веб-інтерфейс Nagios не відкриється — Apache намагатиметься підключитись до Unix-сокета /run/php-fpm/www.sock, якого просто не існуватиме, і в логах Apache з’явиться помилка AH02454: FCGI: attempt to connect to Unix domain socket ... failed. Пакет php сам по собі не включає й не запускає php-fpm — це окрема служба.Крок 2. Обліковий запис для веб-інтерфейсу
sudo htpasswd -c /etc/nagios/passwd nagiosadmin
Крок 3. Запуск служб
sudo systemctl enable --now nagios
sudo systemctl enable --now httpd
httpd_can_network_connect: sudo setsebool -P httpd_can_network_connect 1.Доступ до веб-інтерфейсу
http://IP_ВАШОГО_СЕРВЕРА/nagios
Логін — nagiosadmin, пароль — той, що встановили на кроці з htpasswd.
Встановлення клієнта NRPE на моніторингових серверах
NRPE ставиться на кожен сервер, який хочете перевіряти зсередини (навантаження CPU, вільна пам’ять, диски тощо), а не тільки ззовні по мережі.
Debian / Ubuntu:
sudo apt install -y nagios-nrpe-server nagios-plugins
AlmaLinux:
sudo dnf config-manager --set-enabled crb
sudo dnf install -y epel-release
sudo dnf install -y nrpe nagios-plugins-all openssl nano
Налаштуйте, з яких IP дозволені підключення:
sudo nano /etc/nagios/nrpe.cfg
Знайдіть і змініть:
allowed_hosts=127.0.0.1,IP_NAGIOS_СЕРВЕРА
Перезапустіть службу:
sudo systemctl restart nrpe
sudo systemctl enable nrpe
allowed_hosts у конфігу не є повноцінним фаєрволом, а лише додатковим шаром перевірки на рівні самого NRPE.Відкрийте порт 5666 на хості
Debian/Ubuntu (UFW):
sudo ufw allow from IP_NAGIOS_СЕРВЕРА to any port 5666
AlmaLinux (firewalld):
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="IP_NAGIOS_СЕРВЕРА" port protocol="tcp" port="5666" accept'
sudo firewall-cmd --reload
firewall-cmd --reload “зависає” й не завершується — не перебивайте одразу. Відкрийте другий термінал і перевірте стан служби: sudo systemctl status firewalld та sudo journalctl -u firewalld -n 50 --no-pager. Якщо служба справді зависла — допоможе повний перезапуск замість reload: sudo systemctl restart firewalld. Майте напоготові доступ через консоль хостинг-провайдера (VNC/KVM) на випадок тимчасової втрати SSH-з’єднання під час перезапуску.Перевірте з боку сервера, що порт реально доступний:
nc -zv IP_ХОСТА 5666
Підключення клієнта до сервера
Шлях до конфігураційних файлів залежить від способу встановлення самого Nagios: Debian/Ubuntu (збірка з джерел) — файли лежать у /usr/local/nagios/etc/objects/; AlmaLinux (пакет з EPEL) — файли лежать у /etc/nagios/objects/.
Крок 0. Встановіть плагін check_nrpe на самому сервері
nagios-plugins-all, встановлений раніше, не включає сам виконуваний файл check_nrpe — саме ним Nagios Server звертається до клієнтів. Без нього перевірки завершуються помилкою execvp(/usr/lib64/nagios/plugins/check_nrpe, ...) failed. errno is 2: No such file or directory.Ubuntu/Debian:
sudo apt install -y nagios-nrpe-plugin
AlmaLinux:
sudo dnf install -y nagios-plugins-nrpe
Перевірте, що бінарник з’явився:
which check_nrpe || find / -name check_nrpe 2>/dev/null
Крок 1. Оголосіть команду check_nrpe в конфігурації сервера
check_nrpe зазвичай не оголошена в commands.cfg за замовчуванням, навіть якщо сам бінарник check_nrpe вже встановлено (Крок 0) і він коректно відповідає при ручному запуску через CLI. Без цього оголошення перевірки через check_command check_nrpe!... не працюватимуть, а веб-інтерфейс показуватиме помилки або застарілий статус, попри те що сама команда локально й напряму з сервера відпрацьовує без проблем.Спершу перевірте, чи команда вже є:
Ubuntu/Debian:
grep -r "check_nrpe" /usr/local/nagios/etc/objects/commands.cfg
AlmaLinux:
grep -r "check_nrpe" /etc/nagios/objects/commands.cfg
Якщо команди немає (порожній вивід) — додайте в кінець відповідного файлу commands.cfg:
define command {
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
commands.cfg — на відміну від Debian/Ubuntu (збірка з джерел), де стандартні команди на кшталт check_disk, check_load тощо йдуть “з коробки” через make install-config. Якщо плануєте моніторити не лише віддалені хости через NRPE, а й локально сам Nagios-сервер, знадобиться оголосити й базові команди вручну, наприклад:define command {
command_name check_disk
command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
}
Після додавання обов’язково перезапустіть Nagios (див. Крок 4 нижче) — сама по собі зміна файлу конфігурації не застосовується “на льоту”.
Крок 2. Опишіть клієнта окремим файлом
Створіть новий файл — назва довільна, головне розширення .cfg.
Ubuntu/Debian:
sudo nano /usr/local/nagios/etc/objects/client1.cfg
AlmaLinux:
sudo nano /etc/nagios/objects/client1.cfg
Впишіть конкретний хост і сервіси, наприклад для сервера з IP 192.168.1.50 (вміст файлу однаковий для обох дистрибутивів):
define host {
use linux-server
host_name web-01
alias Веб-сервер 01
address 192.168.1.50
}
define service {
use generic-service
host_name web-01
service_description CPU Load
check_command check_nrpe!check_load
}
define service {
use generic-service
host_name web-01
service_description Вільне місце на диску
check_command check_nrpe!check_disk
}
Тут use linux-server і use generic-service — це готові шаблони, які вже йдуть у стандартній конфігурації Nagios (templates.cfg), з них успадковуються базові налаштування на кшталт інтервалу перевірок.
Крок 3. Підключіть новий файл до основної конфігурації
Цей крок обов’язковий для **обох** дистрибутивів — навіть якщо в nagios.cfg вже є директива cfg_dir, варто явно перевірити й за потреби додати рядок, інакше новий файл хоста просто не підхопиться.
Ubuntu/Debian:
sudo nano /usr/local/nagios/etc/nagios.cfg
Додайте рядок:
cfg_file=/usr/local/nagios/etc/objects/client1.cfg
AlmaLinux:
sudo nano /etc/nagios/nagios.cfg
Перевірте, чи є рядок:
cfg_dir=/etc/nagios/objects
Якщо його немає або він закоментований (# на початку) — додайте чи розкоментуйте, або пропишіть окремий файл явно:
cfg_file=/etc/nagios/objects/client1.cfg
Крок 4. Перевірте конфігурацію й перезапустіть
Ubuntu/Debian:
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
sudo systemctl restart nagios
AlmaLinux:
sudo /usr/sbin/nagios -v /etc/nagios/nagios.cfg
sudo systemctl restart nagios
Прапорець -v перевіряє синтаксис і посилання між файлами, не запускаючи саму службу — якщо є помилка (наприклад, друкарська помилка в назві команди чи хоста), вона покаже точний рядок і файл, де проблема, ще до перезапуску.
Основні плагіни та де вони лежать
Шлях до плагінів залежить від способу встановлення — це важливо знати, бо саме цей шлях підставляється в command_line при оголошенні нових команд (замість $USER1$, яка вказує саме на цю директорію).
- Debian/Ubuntu (збірка з джерел):
/usr/local/nagios/libexec/ - AlmaLinux (пакет з EPEL):
/usr/lib64/nagios/plugins/
Найпоширеніші плагіни, які реально використовуються майже в кожній конфігурації:
- check_disk — вільне місце на дисках і розділах.
- check_load — середнє навантаження CPU (load average).
- check_users — кількість активних користувацьких сесій.
- check_procs — кількість запущених процесів (зокрема корисно для виявлення “зависаючих” чи runaway-процесів).
- check_swap — вільне місце в swap.
- check_ping — доступність хоста та затримка по ICMP.
- check_tcp — перевірка, чи відкритий конкретний TCP-порт.
- check_http — доступність веб-сервера, код відповіді, вміст сторінки.
- check_ssh — доступність SSH-служби.
- check_nrpe — виклик перевірок на віддаленому хості через NRPE-демон (детально розглянуто вище).
Побачити повний список встановлених плагінів можна командою:
ls /usr/local/nagios/libexec/
або на AlmaLinux:
ls /usr/lib64/nagios/plugins/
Кожен плагін підтримує прапорець --help, який показує всі доступні параметри — це швидше й надійніше, ніж шукати документацію в інтернеті для конкретної версії:
/usr/lib64/nagios/plugins/check_disk --help
Nagstamon — десктопний клієнт замість постійно відкритої вкладки браузера
Якщо не хочете тримати вкладку з веб-інтерфейсом Nagios відкритою весь час, є зручна альтернатива — Nagstamon, безкоштовний десктопний застосунок з відкритим кодом для Windows, Linux і macOS.
Nagstamon підключається до вашого Nagios-сервера (а також Icinga, Centreon, Opsview, Check_MK та інших сумісних систем) і показує статус хостів і сервісів прямо в системному треї — іконка сама змінює колір при появі проблеми, без потреби постійно оновлювати сторінку в браузері. При наведенні курсора розгортається детальний список проблемних хостів і сервісів, а через контекстне меню можна одразу підключитись до проблемного сервера по SSH, RDP чи VNC.
- Офіційний сайт: nagstamon.de
- Вихідний код: github.com/HenriWahl/Nagstamon
Для підключення потрібно лише вказати адресу вашого веб-інтерфейсу Nagios (http://IP_ВАШОГО_СЕРВЕРА/nagios) та обліковий запис, створений на кроці з htpasswd — жодних додаткових налаштувань на боці сервера не потрібно.
Якщо плануєте моніторити велику кількість хостів чи тримати довгу історію перевірок — варто одразу підібрати VPS з достатнім запасом ресурсів під сам сервер Nagios, оскільки кожна активна перевірка споживає CPU й пам’ять, а частота опитування напряму впливає на навантаження при великій кількості хостів.
