Установка и настройка Nagios на CentOS 8
Nagios — это система мониторинга для серверов и сети. В этом руководстве пошагово показано, как установить Nagios 4.4.6, плагины, check_nrpe и настроить мониторинг удалённых хостов на CentOS 8. Также рассматривается конфигурация Apache, настройка обратного прокси через Nginx с SSL, основные рекомендации по безопасности и типовые проверки для сервисов.
Краткие определения
- Nagios — система мониторинга состояния хостов и сервисов. Одна строка: оповещает о проблемах и помогает их устранять.
- NRPE (Nagios Remote Plugin Executor) — демон на удалённом хосте, который выполняет плагины Nagios локально и возвращает результат.
- check_nrpe — плагин Nagios на сервере, который опрашивает NRPE на удалённом хосте.
О чём это руководство
Это практическое руководство покрывает установку Nagios на сервер CentOS 8, установку зависимостей, сборку из исходников, конфигурацию веб-интерфейса, подключение удалённых хостов через NRPE, проксирование через Nginx с SSL и советы по безопасности и отладке.
Важно: следуйте шагам в привилегированной сессии или от имени пользователя с sudo.

Требования перед началом
- Сервер с CentOS 8 для установки Nagios.
- Пользователь с правами sudo.
- SELinux отключён (или настроен отдельно).
- Второй сервер CentOS 8 для мониторинга (или любой другой поддерживаемый клиент).
- Система обновлена: выполните
$ sudo dnf update
Шаг 1 — Настройка фаервола
По умолчанию в CentOS 8 используется firewalld. Проверьте статус:
$ sudo firewall-cmd --state
Ожидаемый результат: “running”. Затем проверьте разрешённые сервисы:
$ sudo firewall-cmd --permanent --list-services
Разрешите HTTP и HTTPS, затем перезагрузите конфигурацию firewalld:
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --permanent --list-services
$ sudo systemctl reload firewalld
Важно: в конце мы также добавим порт 5666 (NRPE) и порт 8080 (если меняем порт Apache).
Шаг 2 — Установка Apache и PHP
Nagios использует веб-интерфейс через Apache. Установите Apache и включите сервис:
$ sudo dnf install httpd
$ sudo systemctl enable --now httpd
Для PHP используйте репозиторий Remi и включите PHP 7.4:
$ sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
$ sudo dnf module reset php
$ sudo dnf module enable php:remi-7.4
$ sudo dnf install php php-gd php-curl
$ sudo systemctl enable --now php-fpm
$ sudo systemctl restart httpd
Проверка: создайте /var/www/html/info.php с содержимым:
Откройте http://<ваш_сервер_ip>/info.php и убедитесь, что страница PHP Info отображается.

Шаг 3 — Установка Nagios из исходников
Мы будем собирать Nagios и плагины из исходников. Это даёт контроль над версиями и путями.
Установка зависимостей
$ sudo dnf install gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel xinetd unzip wget gettext autoconf net-snmp-utils epel-release postfix automake
$ sudo dnf config-manager --enable powertools
$ sudo dnf install perl-Net-SNMP
Загрузка исходников Nagios
Перейдите в /usr/src и скачайте tar.gz с GitHub (в примере используется nagios-4.4.6):
$ cd /usr/src
$ sudo wget https://github.com/NagiosEnterprises/nagioscore/archive/nagios-4.4.6.tar.gz
$ sudo tar zxf nagios-*.tar.gz
$ cd nagioscore-nagios-*/
Сборка Nagios
Запустите конфигурацию и компиляцию:
$ sudo ./configure
# затем
$ sudo make all
После configure обратите внимание на пути установки. По умолчанию:
- Install prefix: /usr/local/nagios
- Apache конфиг: /etc/httpd/conf.d
- Init systemd: /lib/systemd/system
Пользователь и группа
Создайте системного пользователя и группу для Nagios и добавьте apache в группу nagios:
$ sudo make install-groups-users
$ sudo usermod -a -G nagios apache
Установка бинарников, конфигураций и веб-файлов
$ sudo make install
$ sudo make install-commandmode
$ sudo make install-config
$ sudo make install-webconf
$ sudo systemctl restart httpd
$ sudo make install-daemoninit
HTTP-аутентификация
Создайте веб-пользователя nagiosadmin для доступа в интерфейс:
$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
$ sudo systemctl restart httpd
Важно: храните пароль в безопасном менеджере паролей. При необходимости впишите другое имя пользователя.
Шаг 4 — Установка Nagios Plugins
Плагины позволяют проверять метрики и сервисы. Установите зависимости и соберите плагины:
$ sudo dnf install -y gcc glibc glibc-common make gettext automake autoconf wget openssl-devel net-snmp net-snmp-utils epel-release postgresql-devel libdbi-devel openldap-devel mysql-devel mysql-libs bind-utils samba-client fping openssh-clients lm_sensors
$ sudo dnf config-manager --enable powertools
$ sudo dnf install -y perl-Net-SNMP
$ cd /usr/src
$ sudo wget -O nagios-plugins.tar.gz https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.3.3/nagios-plugins-2.3.3.tar.gz
$ sudo tar zxf nagios-plugins.tar.gz
$ cd nagios-plugins-*
$ sudo ./configure
$ sudo make
$ sudo make install
Шаг 5 — Установка check_nrpe
check_nrpe нужен на сервере Nagios, чтобы опрашивать NRPE на клиентах. Скачайте и установите NRPE-пакет, но установите только плагин check_nrpe на сервере:
$ cd /usr/src
$ sudo wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.tar.gz
$ sudo tar zxf nrpe-*.tar.gz
$ cd nrpe-4.0.3
$ sudo ./configure
$ sudo make check_nrpe
$ sudo make install-plugin
После этого /usr/local/nagios/libexec/check_nrpe будет доступен.
Шаг 6 — Запуск Nagios
Запустите и проверьте status:
$ sudo systemctl start nagios
$ sudo systemctl status nagios
Веб-интерфейс Nagios
Откройте http://

Шаг 7 — Мониторинг хостов (NRPE на клиентах)
Чтобы Nagios проверял удалённые хосты, установите NRPE и плагины на каждом клиенте (горазд шаблон для CentOS 8).
Установка плагинов (на клиенте)
Повторите шаг 4 на клиенте, чтобы установить плагины.
Установка NRPE (на клиенте)
$ sudo dnf install -y gcc glibc glibc-common openssl openssl-devel perl wget
$ cd /usr/src
$ sudo wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.tar.gz
$ sudo tar zxf nrpe-*.tar.gz
$ cd nrpe-4.0.3
$ sudo ./configure --enable-command-args
$ sudo make all
$ sudo make install-groups-users
$ sudo make install
$ sudo make install-config
$ sudo make install-init
$ sudo systemctl enable nrpe
Отредактируйте конфигурационный файл NRPE (обычно /usr/local/nagios/etc/nrpe.cfg): добавьте IP сервера Nagios в allowed_hosts и при необходимости включите dont_blame_nrpe=1, если вам нужны аргументы команд (это потенциальный риск безопасности).
Пример:
allowed_hosts=127.0.0.1,10.25.5.2
dont_blame_nrpe=1
Разкомментируйте нужные command[…] строки, чтобы они были доступны для удалённых проверок.
Разрешите порт 5666 на фаерволе клиента:
$ sudo firewall-cmd --permanent --add-port=5666/tcp
$ sudo systemctl reload firewalld
$ sudo systemctl start nrpe
Проверьте с сервера Nagios:
$ /usr/local/nagios/libexec/check_nrpe -H monitored_server_ip
Ожидаемый ответ: NRPE v4.0.3
Конфигурация хостов и сервисов в Nagios
Создайте каталог для конфигураций серверов и включите его в nagios.cfg:
$ sudo mkdir /usr/local/nagios/etc/servers
$ sudo chown -R nagios:nagios /usr/local/nagios/etc/servers
$ sudo chmod g+w /usr/local/nagios/etc/servers
# В /usr/local/nagios/etc/nagios.cfg раскомментируйте
#cfg_dir=/usr/local/nagios/etc/servers
Добавьте команду check_nrpe в declarations:
define command {
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$ $ARG2$
}
Создайте файл /usr/local/nagios/etc/servers/yourhost.cfg с описанием хоста и сервисов. Примеры сервисов: PING, Load average, Disk, HTTP, SSH, Total Processes, Current Users, Root partition, SWAP.
Пример хоста:
define host {
use linux-server
host_name monitored_server_host_name
alias My client server
address monitored_server_private_ip
max_check_attempts 5
check_period 24x7
notification_interval 30
notification_period 24x7
}
Пример сервиса PING:
define service {
use generic-service
host_name client01
service_description PING
check_command check_ping!200.0,20%!400.0,90%
}
Пример сервиса Load через NRPE:
define service {
use generic-service
host_name monitored_server_host_name
service_description Load average
check_command check_nrpe!check_load!-a '-w 0.7,0.6,0.5 -c 0.9,0.8,0.7'
}
Добавьте остальные сервисы по аналогии и перезапустите Nagios:
$ sudo systemctl restart nagios
Через минуту вы увидите хоста и службы в веб-интерфейсе.



Важно: если вы видите «CRITICAL» для swap, это может означать, что swap отсутствует или равен нулю — это нормально для некоторых серверов и не всегда критично для работы.
Шаг 8 — Запуск Nagios через Nginx с SSL (обратный прокси)
Мы сделаем Nginx в качестве обратного прокси, а Apache оставим за ним на 8080.
Перенастройка Apache
Откройте /etc/httpd/conf/httpd.conf и замените Listen 80 на Listen 8080. Добавьте порт 8080 в фаервол.
$ sudo firewall-cmd --permanent --add-port=8080/tcp
$ sudo systemctl reload firewalld
$ sudo systemctl restart httpd
Установка Nginx и Certbot
Установите Nginx и Certbot (для Let’s Encrypt):
$ sudo dnf module enable nginx:1.20
$ sudo dnf install nginx
$ sudo systemctl enable nginx
$ sudo dnf install certbot python3-certbot-nginx
Остановите Nginx перед получением сертификата и получите сертификат для домена nagios.example.com (замените на ваш домен):
$ sudo systemctl stop nginx
$ sudo certbot certonly --standalone --preferred-challenges --agree-tos --email [email protected] -d nagios.example.com
Создайте ежедневное задание для автоматического обновления сертификатов и сгенерируйте dhparam:
$ sudo nano /etc/cron.daily/certbot-renew
# Вставьте скрипт
$ sudo chmod +x /etc/cron.daily/certbot-renew
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Адаптация путей Nagios для прокси
Чтобы доступ был по корню домена (https://nagios.example.com/), внесите изменения:
- В /usr/local/nagios/etc/cgi.cfg поменяйте url_html_path=/nagios на url_html_path=/
- В /etc/httpd/conf.d/nagios.conf измените ScriptAlias и DocumentRoot; оберните конфиг в VirtualHost *:1080
- В /usr/local/nagios/share/config.inc.php поменяйте $cfg[‘cgi_base_url’]=’/nagios/cgi-bin’; на ‘/cgi-bin’.
Перезапустите Apache и Nagios:
$ sudo systemctl restart httpd
$ sudo systemctl restart nagios
Проверьте http://
Конфиг Nginx
Создайте /etc/nginx/conf.d/nagios.conf и вставьте конфигурацию обратного прокси с SSL, затем проверьте конфиг и запустите Nginx:
$ sudo nginx -t
$ sudo systemctl start nginx
Если при проверке nginx: [emerg] could not build the server_names_hash, увеличьте server_names_hash_bucket_size в /etc/nginx/nginx.conf.
Безопасность и рекомендации по жёсткой настройке
- Ограничьте доступ к веб-интерфейсу по IP (через Nginx) — добавьте allow/deny правила для внутренних сетей.
- Используйте HTTPS и HSTS.
- Не включайте dont_blame_nrpe=1 без крайней необходимости; если включаете — ограничьте allowed_hosts и примените sudo с конкретными командами.
- Разверните мониторинг только по выделенным каналам (VPN) при мониторинге критичных хостов.
- Обновляйте пакеты и плагины регулярнее.
- Мониторьте сами мониторинговые сервисы (nagios, httpd, nginx, nrpe) и храните резервные конфиги в Git-репозитории.
Устранение неполадок — чек-лист
- Nagios не стартует: проверьте systemctl status nagios и логи /usr/local/nagios/var/nagios.log.
- Web: 403/401 — проверьте htpasswd и права на /usr/local/nagios/share.
- check_nrpe возвращает «Connection refused»: проверьте, запущен ли nrpe на клиенте и открыт ли порт 5666.
- Не видны сервисы: убедитесь, что cfg_dir раскомментирован в nagios.cfg и файлы в /usr/local/nagios/etc/servers имеют корректные права.
- SSL: certbot не выдаёт сертификат — убедитесь, что порт 80 временно доступен для Let’s Encrypt и Nginx остановлен при certbot certonly –standalone.
Ролевые чек-листы
Оперативная команда (Ops):
- Убедиться, что nagios, httpd и nginx запущены.
- Проверить последние 50 строк логов Nagios.
- Перезапустить сервисы при необходимости.
Системный администратор клиента:
- Установить NRPE и плагины.
- Разрешить доступ для IP Nagios в nrpe.cfg.
- Разрешить порт 5666 в local firewall.
Безопасность/DevSecOps:
- Проверить конфиг dont_blame_nrpe.
- Проверить доступы к htpasswd.
- Настроить ограничение доступа к веб-интерфейсу по сети.
Методология проверок и тест-кейсы
Мини-метод для приёма мониторинга:
- Добавить тестовый хост с IP и несколькими сервисами: PING, SSH, HTTP, Load.
- Дождаться первого результата и убедиться, что состояние переходит в OK.
- Имитировать проблему: временно остановить sshd на клиенте и проверить переход в CRITICAL и отправку уведомления.
- Восстановить сервис и проверить RECOVERY уведомление.
Критерии приёмки
- Хост отображается в веб-интерфейсе.
- Минимум 5 сервисов на хосте возвращают валидные состояния.
- Уведомления отправляются (в зависимости от вашей конфигурации уведомлений).
Альтернативы и когда Nagios не подходит
- Prometheus + Alertmanager — лучше подходит для метрик и краткосрочных временных рядов.
- Zabbix — альтернатива с встроенным агентом и удобным UI для больших сред.
- Icinga2 — форк Nagios с улучшенной архитектурой и разными возможностями.
Выберите Nagios, если вам важна простота плагинов и гибкость конфигов текстовыми файлами. Если нужна телеметрия и хранение метрик большого объёма, рассматривайте Prometheus.
Меры миграции и совместимости
- При переходе с CentOS 7 на 8 проверьте пакеты и названия модулей (powertools, remi).
- Если планируете миграцию на дистрибутивы с systemd-предопределениями, проверьте наш systemd unit-файл, установленный make install-daemoninit.
Проверочные сниппеты и полезные команды
Проверка статуса NRPE с сервера Nagios:
/usr/local/nagios/libexec/check_nrpe -H 10.0.0.5
Проверка конфигурации Nagios:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Проверка nginx:
sudo nginx -t
Краткая справочная таблица (ключевые числа и пути)
- Nagios версия в примере: 4.4.6
- NRPE версия в примере: 4.0.3
- Плагины: nagios-plugins 2.3.3
- Путь установки Nagios: /usr/local/nagios
- Путь плагинов: /usr/local/nagios/libexec
- HTTP (Apache) порт по умолчанию: 80 (мы меняем на 8080)
- NRPE порт: 5666/tcp
Заключение
Вы установили Nagios на CentOS 8, собрали плагины, настроили NRPE на клиенте и подключили хосты к серверу. Вы также настроили Nginx в качестве обратного прокси и защитили доступ через SSL. Дальше можно расширять список проверок, интегрировать оповещения (email, SMS, мессенджеры) и автоматизировать конфигурации через шаблоны и управление конфигурацией (Ansible, Puppet).
Подсказка: начните с небольшой группы критичных серверов и отработайте процесс оповещений и эскалаций, прежде чем подключать всю инфраструктуру.
Короткая сводка
- Nagios даёт детальные проверки и гибкость через плагины.
- NRPE нужен для выполнения проверок на удалённых хостах.
- Защитите интерфейс и NRPE, ограничив доступ по сети.
- Используйте шаблоны и репозиторий для контроля конфигураций.
Если остались вопросы по конкретному шагу — укажите точную ошибку или вывод команды, и я помогу разобраться.
Похожие материалы
Herodotus — Android‑троян: признаки и защита
Включить новое меню Пуск в Windows 11
Панель полей сводной таблицы в Excel
Включить новое меню «Пуск» в Windows 11
Дубликаты Диспетчера задач в Windows 11 — исправление