Настройка мониторинга серверов для дополнительного Nagios

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

Проверьте актуальную версию на странице релизов Nagios Core — пример ниже использует 4.5.12.
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
Если на сервере включён SELinux, а веб-интерфейс показывает ошибки доступа — проверьте контексты 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
Важно: порт NRPE (5666) не должен быть открыт для всего интернета. Ограничьте доступ файрволом только с IP вашего Nagios-сервера — 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 в конфигурации сервера

Важно: на AlmaLinux (пакет из EPEL) команда 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$
}
На AlmaLinux пакет из EPEL устанавливает почти пустой 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.

Для подключения нужно лишь указать адрес вашего веб-интерфейса Nagios (http://IP_ВАШЕГО_СЕРВЕРА/nagios) и учётную запись, созданную на шаге с htpasswd — никаких дополнительных настроек на стороне сервера не требуется.

Если планируете мониторить большое количество хостов или хранить длинную историю проверок — стоит сразу подобрать VPS с достаточным запасом ресурсов под сам сервер Nagios, поскольку каждая активная проверка потребляет CPU и память, а частота опроса напрямую влияет на нагрузку при большом количестве хостов.

Прокрутить вверх