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 выполнять плагины на клиентской машине, а не только проверять её снаружи.
- Веб-интерфейс (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 и память, а частота опроса напрямую влияет на нагрузку при большом количестве хостов.
