Установка и настройка Nagios на CentOS 8

О чём эта инструкция
Эта статья подходит для системных администраторов и инженеров мониторинга, которые хотят развернуть классическую связку Nagios Core на CentOS 8. Здесь описаны подготовка системы, сборка из исходников (Nagios, плагины, NRPE), базовая конфигурация хостов и сервисов, а также опциональная настройка Nginx в качестве reverse proxy с SSL.
Важно: команды выполняются в CentOS 8. Если вы используете другой дистрибутив (Debian/Ubuntu, RHEL 7/9, Rocky/Alma), некоторые команды и репозитории будут отличаться.
Ключевые варианты запросов (primary intent и варианты)
- Установка Nagios на CentOS 8
- Настройка NRPE и check_nrpe
- Nagios Nginx HTTPS reverse proxy
- Nagios плагины на CentOS
- Отладка Nagios сервисов
TL;DR (коротко)
- Соберите Nagios Core и плагины из исходников на сервере CentOS 8, установите Apache и PHP (Remi repo для PHP 7.4).
- Установите и настройте NRPE на мониторируемых хостах и добавьте их конфигурации в /usr/local/nagios/etc/servers.
- Опционально: пропроксйтесь через Nginx и включите SSL от Let’s Encrypt.
Предварительные требования
- Сервер с CentOS 8 для установки Nagios (главный сервер).
- Пользователь с sudo / root правами.
- SELinux отключён или настроен соответствующим образом (инструкция описана не включает SELinux конфигурацию).
- Как минимум один удалённый сервер на CentOS 8 для мониторинга.
- Стабильный доступ в интернет для загрузки пакетов и исходников.
- Обновите систему перед началом:
$ sudo dnf updateВажно: в реальной продакшн‑среде продумайте сетевую сегрегацию, бэкап конфигураций Nagios и ограничения доступа к интерфейсу (VPN / bastion / ACL).
Шаг 1 — Настройка фаервола
CentOS 8 использует firewalld. Проверьте состояние:
$ sudo firewall-cmd --stateОжидаемый вывод:
runningПроверьте текущие разрешённые сервисы:
$ sudo firewall-cmd --permanent --list-servicesРазрешите HTTP и HTTPS (если будете использовать Apache/Nginx):
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=httpsПерепроверьте и перезагрузите firewalld:
$ sudo firewall-cmd --permanent --list-services
$ sudo systemctl reload firewalldПримечание: для NRPE потребуется открыть порт 5666/TCP на системах, которые будут принимать соединения от сервера Nagios.
Шаг 2 — Установка Apache и PHP
Nagios требует веб‑сервер и PHP (для интерфейса). Пример для PHP 7.4 с репозиторием Remi.
Установите Apache:
$ sudo dnf install httpd
$ sudo systemctl enable --now httpdДобавьте репозиторий 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Установите PHP и необходимые модули:
$ sudo dnf install php php-gd php-curl
$ sudo systemctl enable --now php-fpm
$ sudo systemctl restart httpdПроверьте, создав файл /var/www/html/info.php:
$ sudo nano /var/www/html/info.phpВставьте:
Откройте http://

Важно: после теста удалите info.php или защитите доступ к нему.
Шаг 3 — Установка Nagios Core
Все последующие команды по сборке должны выполняться на главном 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 и скачайте tarball (в примере 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-*/Конфигурация и компиляция
Запустите configure, затем make:
$ sudo ./configure
$ sudo make allВы увидите итоговую сводку параметров и сообщение о необходимости выполнить make all.
Создание пользователя и группы 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Перезапустите Apache:
$ sudo systemctl restart httpdШаг 4 — Установка плагинов Nagios
Плагины предоставляют проверки (checks) для служб и метрик.
Установите зависимости и скачайте плагины:
$ 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После установки плагины окажутся в /usr/local/nagios/libexec/.
Шаг 5 — Установка check_nrpe (плагин для доступа к NRPE)
На сервере Nagios нужен плагин check_nrpe для опроса 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Плагин check_nrpe будет установлен в /usr/local/nagios/libexec/.
Шаг 6 — Запуск Nagios и веб‑интерфейс
Запустите сервис Nagios:
$ sudo systemctl start nagios
$ sudo systemctl status nagiosОткройте http://

Шаг 7 — Мониторинг удалённых хостов (установка NRPE на клиенте)
Чтобы мониторить удалённые хосты, на них устанавливается NRPE и плагины.
Подключитесь к хосту, который нужно мониторить:
$ ssh user@monitored_server_ipУстановка плагинов (повтор шага 4)
Установите все зависимости и плагины на целевом хосте так же, как на сервере Nagios.
Установка 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Откройте порт 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 создайте директорию для конфигураций хостов:
$ 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 в /usr/local/nagios/etc/objects/commands.cfg:
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:
$ sudo nano /usr/local/nagios/etc/servers/yourhost.cfgПример описания хоста:
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 average через 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'
}- Проверка диска:
define service {
use generic-service
host_name monitored_server_host_name
service_description /dev/sda1 free space
check_command check_nrpe!check_disk!-a '-w 20% -c 10% -p /dev/sda1'
}- HTTP (локальная проверка через check_http):
define service {
use generic-service
host_name monitored_server_host_name
service_description HTTP
check_command check_http
}- SSH:
define service {
use generic-service
host_name nagiosclient
service_description SSH Version Check
check_command check_ssh!-t 5
}- Total Processes, Users, Root Partition, SWAP — как в примере выше.
После добавления конфигураций перезапустите Nagios:
$ sudo systemctl restart nagiosПерейдите в веб‑интерфейс, откройте Hosts и проверьте статусы.



Примечание: если какой‑то сервис возвращает CRITICAL (например, Swap 0), это означает, что на хосте нет Swap и проверка настроена ожидать значения > 0.
Шаг 8 — Установка и настройка Nginx (reverse proxy) и SSL
Если вы хотите обслуживать Nagios по доменному имени и HTTPS, можно настроить Nginx как обратный прокси перед Apache.
Подготовка Apache
По умолчанию Apache слушает 80. Мы изменим Apache на порт 8080, чтобы Nginx мог слушать 80/443.
$ sudo nano /etc/httpd/conf/httpd.confИзмените Listen 80 на Listen 8080 и перезапустите:
$ sudo firewall-cmd --permanent --add-port=8080/tcp
$ sudo systemctl reload firewalld
$ sudo systemctl restart httpdУстановка Nginx и Certbot
$ sudo dnf module enable nginx:1.20
$ sudo dnf install nginx
$ sudo systemctl enable nginx
$ sudo dnf install certbot python3-certbot-nginxОстановите Nginx, чтобы Certbot мог запустить standalone режим для получения сертификата:
$ sudo systemctl stop nginx
$ sudo certbot certonly --standalone --preferred-challenges --agree-tos --email [email protected] http -d nagios.example.comСоздайте ежедневный cron‑job для автоматического продления сертификата (/etc/cron.daily/certbot-renew):
#!/bin/sh
certbot renew --cert-name nagios.example.com --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"Сделайте его исполняемым:
$ sudo chmod +x /etc/cron.daily/certbot-renewСгенерируйте dhparam:
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048Настройка Apache и Nagios для работы под корнем /
Измените CGI и конфигурации, чтобы Nagios обслуживался по корневому пути (на примере конфигурации):
$ sudo nano /usr/local/nagios/etc/cgi.cfgИзмените url_html_path=/nagios на url_html_path=/.
В /etc/httpd/conf.d/nagios.conf измените ScriptAlias и DocumentRoot:
- ScriptAlias /nagios/cgi-bin “/usr/local/nagios/sbin” -> ScriptAlias /cgi-bin “/usr/local/nagios/sbin”
- Закомментируйте Alias /nagios и добавьте DocumentRoot /usr/local/nagios/share
- Оберните конфиг в
…
В /usr/local/nagios/share/config.inc.php измените $cfg['cgi_base_url']='/nagios/cgi-bin'; на $cfg['cgi_base_url']='/cgi-bin';.
Перезапустите Apache и Nagios:
$ sudo systemctl restart httpd
$ sudo systemctl restart nagiosПроверьте, что Nagios доступен по http://
Конфигурация Nginx как proxy и SSL
Создайте /etc/nginx/conf.d/nagios.conf со следующим содержимым (пример):
server {
listen 80; listen [::]:80;
server_name nagios.example.com;
return 301 https://$host$request_uri;
}
server {
server_name nagios.example.com;
listen 443 ssl http2;
listen [::]:443 ssl http2;
access_log /var/log/nginx/nagios.access.log;
error_log /var/log/nginx/nagios.error.log;
ssl_certificate /etc/letsencrypt/live/nagios.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nagios.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/nagios.example.com/chain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
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_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Проверьте конфигурацию Nginx:
$ sudo nginx -tЕсли вы увидите ошибку про server_names_hash_bucket_size, откройте /etc/nginx/nginx.conf и добавьте строку:
server_names_hash_bucket_size 64;Перезапустите Nginx:
$ sudo systemctl start nginxОткройте https://nagios.example.com и убедитесь, что сайт доступен и данные хостов обновляются.
Безопасность и практические рекомендации
- Ограничьте доступ к веб‑интерфейсу Nagios с помощью IP‑фильтров, VPN или двухфакторной аутентификации.
- Если вы разрешаете dont_blame_nrpe=1, убедитесь, что список allowed_hosts точен и NRPE доступен только из доверенных подсетей.
- Логи Nagios и Nginx должны быть включены в систему централизованного логирования.
- Настройте мониторинг самого Nagios (availability checks, SLI для критических компонентов).
Отладка типичных проблем
- Nagios не запускается: проверьте /usr/local/nagios/var/nagios.log и systemd‑status:
$ sudo systemctl status nagios
$ sudo tail -n 200 /usr/local/nagios/var/nagios.log- Проверки NRPE возвращают UNKNOWN/FAILED: проверьте версию check_nrpe и корректность allowed_hosts, firewall/SELinux, путь к плагинам.
- Веб интерфейс 403/401: проверьте файл htpasswd и права на /usr/local/nagios/share, а также конфигурацию Apache/Nginx.
- Nginx SSL ошибки: проверьте пути к сертификатам, права, dhparam и совместимость шифров.
Рольные чеклисты
Администратор (install & infra):
- Обновил систему и установил зависимости
- Создал пользователя nagios и добавил apache в группу
- Собрал и установил Nagios и плагины
- Настроил systemd unit и авто‑старт
Инженер мониторинга (config & checks):
- Добавил каталоги /usr/local/nagios/etc/servers
- Создал конфигурации host и service
- Проверил работу check_nrpe и локальные плагины
- Настроил нотификации (email/платформа)
Инженер безопасности:
- Ограничил доступ к веб интерфейсу
- Настроил TLS и автоматическое продление сертификатов
- Проверил правила firewall и доступы к NRPE
Оператор (runbook):
- Проверил что Nagios и web сервисы работают
- Провёл smoke тесты для ключевых проверок
- Задокументировал контактные данные для алертинга
Критерии приёмки
- Nagios успешно запускается и в systemd имеет статус active
- Веб‑интерфейс доступен по HTTPS (если настроено) и требует авторизации
- NRPE отвечает на запросы с главного сервера: /usr/local/nagios/libexec/check_nrpe -H
- Минимум 5 сервисов мониторинга работают на тестовом хосте (PING, Load, Disk, HTTP, SSH)
- Автопродление сертификатов Let’s Encrypt настроено и Cron проверяет статус
Инцидентный рунбук (быстрый)
- Симптом: Nagios перестал принимать данные / web упал.
- Проверка: systemctl status nagios && sudo tail -n 200 /usr/local/nagios/var/nagios.log
- Если проблема в web: systemctl status httpd && tail -n 200 /var/log/httpd/error_log
- Если проблема в Nginx: systemctl status nginx && sudo nginx -t && tail /var/log/nginx/error.log
- Если проблема в сертификате: sudo certbot certificates
- Откат: восстановить конфигурацию из резервной копии, перезапустить сервисы в порядке: Apache -> Nagios -> Nginx.
- После восстановления: проверить метрики и уведомления, проинформировать заинтересованные стороны.
Мини‑методология мониторинга (как мыслить при настройке checks)
- Определите критичные сервисы (S0): сетевой доступ, SSH, HTTP, дисковое пространство, load.
- Убедитесь, что для каждого критичного сервиса есть базовая проверка и границы (warning/critical).
- Настройте оповещения на минимально‑нужных людей/каналах, чтобы не создавать шум.
- Автоматизируйте восстановление для повторяющихся простых инцидентов (cron checks, автоскрипты).
- Периодически ревизуйте checks: устаревшие проверки — источник ложных срабатываний.
Альтернативы и когда Nagios не подходит
- Если нужны телеметрия и распределённый сбор метрик с графиками (time series), рассмотрите Prometheus + Grafana.
- Для облачных автоматизированных сред с высокой динамикой (kubernetes) — лучше использовать инструменты на основе pull модель/metrics (Prometheus) или cloud‑native мониторинг.
- Nagios хорошо подходит для классической инфраструктуры с фиксированными хостами и большим набором плагинов.
Шаблоны и компактные примеры (шпаргалка)
- Команда check_nrpe в commands.cfg:
define command {
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$ $ARG2$
}- Пример service для диска:
define service {
use generic-service
host_name monitored_server_host_name
service_description /dev/sda1 free space
check_command check_nrpe!check_disk!-a '-w 20% -c 10% -p /dev/sda1'
}- Быстрая проверка NRPE с сервера Nagios:
/usr/local/nagios/libexec/check_nrpe -H monitored_server_ipМермайд: простое дерево принятия решения (выбор архитектуры)
flowchart TD
A[У вас статичные сервера?] -->|Да| B[Nagios Core]
A -->|Нет| C[Динамическая среда]
C --> D[Prometheus + Grafana]
B --> E{Нужна централизованная телеметрия?}
E -->|Да| D
E -->|Нет| F[Оставить Nagios, настроить NRPE](Если ваш Markdown рендерер поддерживает Mermaid, будет отображено дерево; в противном случае это текстовая схема.)
1‑строчный глоссарий
- Nagios Core — базовый сервер мониторинга на основе плагинов.
- NRPE — Nagios Remote Plugin Executor, демон для удалённого запуска проверок.
- check_nrpe — плагин Nagios для обращения к NRPE на удалённом хосте.
- CGI — интерфейс web‑скриптов, используемый Nagios для управления.
- Remi — сторонний репозиторий RPM для новых версий PHP.
Итог и дальнейшие шаги
Вы развернули Nagios Core на CentOS 8, установили плагины и настроили мониторинг удалённых хостов через NRPE. Также вы узнали, как поставить Nginx как reverse proxy и включить HTTPS с помощью Let’s Encrypt. Рекомендую на следующих этапах:
- Настроить нотификации (email/Slack/PagerDuty) и эскалации.
- Интегрировать централизованное логирование и алерты в вашу операционную практику.
- Автоматизировать развёртывание конфигураций (Ansible / SaltStack / Puppet).
Если вы хотите — могу подготовить Ansible playbook для автоматизации этих шагов или сокращённый чеклист для вашей команды.
Источник и дополнительные материалы:
- Официальная документация Nagios (на английском) — используйте для расширенных настроек плагинов и конфигураций.
Похожие материалы
Herodotus: механизм и защита Android‑трояна
Включить новое меню «Пуск» в Windows 11
Панель полей сводной таблицы в Excel — руководство
Включить новое меню «Пуск» в Windows 11
Дубликаты Диспетчера задач в Windows 11 — как исправить