Установка и настройка Nagios на CentOS 8
О чем эта инструкция
Nagios — популярная и мощная система мониторинга с открытым исходным кодом. Она отслеживает инфраструктуру: сети, серверы, приложения и процессы, помогает обнаружить проблемы заранее и сократить время простоя.
В этом руководстве вы научитесь устанавливать и настраивать Nagios Core на базе CentOS 8 и настраивать удалённый мониторинг через NRPE (Nagios Remote Plugin Executor).
Основные термины (в одну строку)
- Nagios Core — основной мониторинговый движок.
- NRPE — агент для выполнения плагинов на удалённых хостах.
- Plugin — отдельный скрипт/утилита, проверяющая состояние сервиса или метрики.
Требования
- Сервер с CentOS 8 для Nagios.
- Пользователь с привилегиями root (или sudo).
- SELinux отключён (или настроен заранее).
- Один или несколько серверов с CentOS 8 для мониторинга.
- Обновите систему:
$ sudo dnf update
Содержание
- Конфигурация брандмауэра
- Установка Apache и PHP
- Сборка и установка Nagios
- Установка плагинов Nagios
- Установка check_nrpe
- Запуск Nagios и веб-интерфейс
- Настройка мониторинга хостов и NRPE
- Развёртывание Nginx и SSL
- Безопасность, тесты, чек-листы и контроль приёмки
Конфигурация брандмауэра
Первым делом убедитесь, что Firewalld запущен.
$ sudo firewall-cmd --stateОжидаемый вывод:
runningПроверьте текущий список разрешённых сервисов:
$ sudo firewall-cmd --permanent --list-servicesНапример вы увидите:
dhcpv6-client mdns sshРазрешите HTTP и HTTPS:
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=httpsПерепроверьте:
$ sudo firewall-cmd --permanent --list-servicesОжидаемо:
dhcpv6-client http https mdns sshПерезагрузите Firewalld:
$ sudo systemctl reload firewalldУстановка Apache и PHP
Для работы Nagios требуется веб-сервер и PHP.
Установите и запустите 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Установите PHP и распространённые модули:
$ sudo dnf install php php-gd php-curl
$ sudo systemctl enable --now php-fpm
$ sudo systemctl restart httpdПроверьте работу установленных сервисов, создав файл info.php в /var/www/html:
$ sudo nano /var/www/html/info.phpВставьте:
Откройте в браузере: http://<ваш_сервер_IP>/info.php.

Установка 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 и скачайте релиз. В примере — 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-*/Конфигурация и компиляция
Запустите конфигуратор и компиляцию:
$ sudo ./configure
$ sudo make allПосле ./configure появится сводка опций — проверьте их и запустите make all.
Создание пользователя и группы
$ 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Установка плагинов Nagios
Установите зависимости и соберите плагины из исходников.
$ 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Установка 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Плагин check_nrpe появляется в /usr/local/nagios/libexec/.
Запуск Nagios
$ sudo systemctl start nagios
$ sudo systemctl status nagiosОткройте в браузере: http://<домен_или_IP>/nagios и войдите под пользователем, созданным ранее.

Мониторинг удалённых хостов через NRPE
Чтобы мониторить хост, установите NRPE и плагины на удалённом сервере (CentOS 8).
Подключитесь к удалённому хосту:
$ ssh user@monitored_server_ipПовторите шаг установки плагинов (см. раздел «Установка плагинов»).
Установка 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(пример):
allowed_hosts=127.0.0.1,10.25.5.2- Если вы хотите разрешить передачу аргументов от клиента (более гибко, но менее безопасно):
dont_blame_nrpe=1- Раскомментируйте требуемые команды в файле конфигурации (пример):
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -r -w .15,.10,.05 -c .30,.25,.20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
# ... и другиеРазрешите порт NRPE в брандмауэре и перезагрузите:
$ sudo firewall-cmd --permanent --add-port=5666/tcp
$ sudo systemctl reload firewalld
$ sudo systemctl start nrpeПроверьте работу 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 и добавьте конфигурацию хоста и сервисов:
Пример определения хоста:
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, нагрузка, диск, HTTP, SSH, процессы, пользователи, swap.
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:
define service {
use generic-service
host_name monitored_server_host_name
service_description HTTP
check_command check_http
}SSH с таймаутом 5 секунд:
define service {
use generic-service
host_name nagiosclient
service_description SSH Version Check
check_command check_ssh!-t 5
}Всего процессов:
define service{
use generic-service
host_name monitored_server_host_name
service_description Total Processes
check_command check_nrpe!check_total_procs
}Текущие пользователи:
define service{
use generic-service
host_name monitored_server_host_name
service_description Current Users
check_command check_nrpe!check_users!-a '-w 5 -c 10'
}Swap:
define service{
use generic-service
host_name monitored_server_host_name
service_description SWAP Usage
check_command check_nrpe!check_swap!-a '-w 40% -c 20%'
}Перезапустите Nagios:
$ sudo systemctl restart nagiosПроверьте панель Nagios — меню Hosts и детали хоста.



Если какой-то сервис не настроен (например, swap), Nagios покажет критический статус — это нормально и указывает, что проверка сработала.
Развёртывание Nginx как обратного прокси и настройка SSL
Мы оставим Apache за Nginx и настроим Nginx как обратный прокси, обслуживающий HTTPS.
Поменяйте порт Apache с 80 на 8080 в /etc/httpd/conf/httpd.conf:
Listen 8080Разрешите порт 8080 в файрволе:
$ sudo firewall-cmd --permanent --add-port=8080/tcp
$ sudo systemctl reload firewalld
$ sudo systemctl restart httpdУстановите Nginx (можно включить более новую ветку):
$ sudo dnf module enable nginx:1.20
$ sudo dnf install nginx
$ sudo systemctl enable nginxУстановка и получение SSL через Let’s Encrypt
Установите Certbot:
$ sudo dnf install certbot python3-certbot-nginx
$ sudo systemctl stop nginxЗапрос сертификата (пример для nagios.example.com):
$ sudo certbot certonly --standalone --preferred-challenges --agree-tos --email [email protected] http -d nagios.example.comДобавьте ежедневный крон-скрипт для автоматического обновления сертификата /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Сгенерируйте Diffie-Hellman параметр:
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048Подготовка Apache/Nagios к проксированию
Изменим путь Nagios, чтобы корректно работать за прокси.
В /usr/local/nagios/etc/cgi.cfg измените:
url_html_path=/nagiosна
url_html_path=/В /etc/httpd/conf.d/nagios.conf измените
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"на
ScriptAlias /cgi-bin "/usr/local/nagios/sbin"Затем закомментируйте Alias и укажите DocumentRoot:
#Alias /nagios "/usr/local/nagios/share"
DocumentRoot /usr/local/nagios/shareДобавьте контейнер VirtualHost на порт 1080 (в начале и конце файла):
...
В /usr/local/nagios/share/config.inc.php измените:
$cfg['cgi_base_url']='/nagios/cgi-bin';на
$cfg['cgi_base_url']='/cgi-bin';Перезапустите:
$ sudo systemctl restart httpd
$ sudo systemctl restart nagiosПроверьте работу по http://.
Конфигурация Nginx
Создайте /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 сервис запущен:
systemctl status nagios— active (running). - Веб-интерфейс доступен по HTTPS и требует логин:
https://nagios.example.com. - NRPE отвечает от удалённых хостов:
check_nrpe -Hвозвращает версию. - Минимум 3 сервиса на отслеживаемом хосте (PING, Load, Disk) имеют статус OK/CRITICAL в соответствии с реальными значениями.
- Автообновление сертификата проверено (имитация certbot renew).
Чек-лист для развёртывания (роль: Инженер)
- Подготовка ОС: обновления установлены, SELinux учтён.
- Установлен и запущен Firewalld.
- Установлен Apache + PHP, протестирован phpinfo.
- Nagios собран и установлен из исходников.
- Плагины собраны и доступны в /usr/local/nagios/libexec.
- NRPE установлен на клиентах, добавлены нужные команды.
- Правила фаервола открыты для 5666 (NRPE) и 443 (Nginx).
- SSL получен и установлен, автоматическое обновление работает.
- Документировано: пароли, конфигурационные изменения, версии.
Мини-методология внедрения
- Тестовая среда: соберите Nagios в изолированной сети.
- Шаблоны мониторинга: определите стандартные наборы сервисов для разных типов серверов.
- Эскалационные политики: настройте уведомления и интервалы.
- Постепенный перенос: добавляйте хосты партиями и проверяйте нагрузку
Безопасность и рекомендации
- Отключайте
dont_blame_nrpe=1на продуктивных серверах, если не требуется передача аргументов. - Ограничьте
allowed_hostsтолько IP-адресами серверов Nagios. - Используйте HTTP-аутентификацию и сильные пароли для
nagiosadmin. - Закрывайте неиспользуемые порты и логируйте доступы к веб-интерфейсу.
- Если используется публичный доступ, включите двухфакторную аутентификацию на уровне прокси (например, OAuth/LDAP с MFA).
- Храните бэкапы конфигурации и ключей в защищённом хранилище.
Тестовые сценарии и приёмка
- Функциональный тест: имитируйте отказ сервиса (остановите httpd) и проверьте переход сервиса в CRITICAL и отправку уведомления.
- Нагрузочный тест: добавьте 100 хостов с базовыми проверками и измерьте нагрузку сервера Nagios (CPU, RAM).
- Тест восстановления: восстановите службу и убедитесь, что Nagios отобразил RECOVERY.
- Тест NRPE: временно отключите allowed_hosts на клиенте и проверьте, что сервер Nagios не получает ответов.
Практические шаблоны и сниппеты
Быстрая команда для проверки NRPE из Nagios:
/usr/local/nagios/libexec/check_nrpe -HДобавление нового хоста — шаги:
- Создать файл в
/usr/local/nagios/etc/servers/host.cfg. - Добавить определения сервисов.
- Проверить конфигурацию:
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg(если доступна команда). - Перезапустить Nagios.
Частые ошибки и как их решать
- Неправильный путь плагинов: проверьте, что плагины находятся в
/usr/local/nagios/libexec. - NRPE не отвечает: проверьте, что сервис nrpe запущен и порт 5666 открыт на клиенте.
- Проблемы с CGI на прокси: убедитесь, что
cgi_base_urlиScriptAliasсинхронизированы между Apache и Nagios. - Ошибка сертификата: убедитесь, что домен в certbot совпадает с server_name в Nginx.
Критерии приёмки финальной системы
- Веб-интерфейс доступен по HTTPS и корректно проксируется на Apache: статус 200 после логина.
- NRPE и check_nrpe возвращают ожидаемые данные для всех добавленных хостов.
- Система уведомлений срабатывает на целевых событиях.
- Конфигурация хранится в системе контроля версий (рекомендация).
Краткая сводка команд (Cheat sheet)
- Обновление системы:
sudo dnf update - Запуск/стоп сервиса:
sudo systemctl start|stop|restart - Проверка NRPE:
/usr/local/nagios/libexec/check_nrpe -H - Тест конфигурации Nginx:
sudo nginx -t - Перезагрузка firewalld:
sudo systemctl reload firewalld
1‑строчный глоссарий
- CGIs — интерфейсы командного выполнения Nagios (контролируют взаимодействие веб и движка).
- CGI_BASE_URL — базовый URL для CGI-скриптов Nagios.
- VirtualHost — конфигурация хоста в Apache, используемая для привязки порта и корневого каталога.
Заключение
Вы успешно установили и настроили Nagios Core на сервере CentOS 8, настроили мониторинг удалённых хостов через NRPE, а также обеспечили HTTPS-доступ через Nginx и Let’s Encrypt. Дальше вы можете расширять мониторинг, добавляя новые сервисы, шаблоны и политики уведомлений.
Если нужно, возьмите за основу представленные чек-листы и тесты для автоматизации развёртывания и контроля качества. Для углубления изучите официальную документацию Nagios по написанию плагинов и расширенному использованию NRPE.
Ключевые выводы
- Nagios собирается из исходников и требует установки зависимостей и плагинов.
- NRPE позволяет выполнять проверки на удалённых хостах; будьте осторожны с
dont_blame_nrpe. - Nginx как обратный прокси + SSL предоставляет безопасный внешний доступ к Nagios.
- Документируйте конфигурации и настройте регулярное обновление сертификатов.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента