Гид по технологиям

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

8 min read Мониторинг. Обновлено 15 Nov 2025
Установка Nagios на CentOS 8 — полное руководство
Установка 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.

Схема установки Nagios на сервере и клиентах

Требования перед началом

  1. Сервер с CentOS 8 для установки Nagios.
  2. Пользователь с правами sudo.
  3. SELinux отключён (или настроен отдельно).
  4. Второй сервер CentOS 8 для мониторинга (или любой другой поддерживаемый клиент).
  5. Система обновлена: выполните
$ 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 отображается.

Страница 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:///nagios. Введите credentials nagiosadmin и войдите.

Главная страница Nagios

Шаг 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

Через минуту вы увидите хоста и службы в веб-интерфейсе.

Список хостов Nagios

Детали хоста Nagios

Статусы сервисов 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://:1080 и убедитесь, что Nagios работает.

Конфиг 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.

Безопасность и рекомендации по жёсткой настройке

  1. Ограничьте доступ к веб-интерфейсу по IP (через Nginx) — добавьте allow/deny правила для внутренних сетей.
  2. Используйте HTTPS и HSTS.
  3. Не включайте dont_blame_nrpe=1 без крайней необходимости; если включаете — ограничьте allowed_hosts и примените sudo с конкретными командами.
  4. Разверните мониторинг только по выделенным каналам (VPN) при мониторинге критичных хостов.
  5. Обновляйте пакеты и плагины регулярнее.
  6. Мониторьте сами мониторинговые сервисы (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.
  • Настроить ограничение доступа к веб-интерфейсу по сети.

Методология проверок и тест-кейсы

Мини-метод для приёма мониторинга:

  1. Добавить тестовый хост с IP и несколькими сервисами: PING, SSH, HTTP, Load.
  2. Дождаться первого результата и убедиться, что состояние переходит в OK.
  3. Имитировать проблему: временно остановить sshd на клиенте и проверить переход в CRITICAL и отправку уведомления.
  4. Восстановить сервис и проверить 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, ограничив доступ по сети.
  • Используйте шаблоны и репозиторий для контроля конфигураций.

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

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Herodotus — Android‑троян: признаки и защита
Кибербезопасность

Herodotus — Android‑троян: признаки и защита

Включить новое меню Пуск в Windows 11
Windows

Включить новое меню Пуск в Windows 11

Панель полей сводной таблицы в Excel
Excel

Панель полей сводной таблицы в Excel

Включить новое меню «Пуск» в Windows 11
Windows

Включить новое меню «Пуск» в Windows 11

Дубликаты Диспетчера задач в Windows 11 — исправление
Windows

Дубликаты Диспетчера задач в Windows 11 — исправление

История просмотров Reels в Instagram — как найти
Социальные сети

История просмотров Reels в Instagram — как найти