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

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

9 min read Мониторинг. Обновлено 07 Nov 2025
Nagios на CentOS 8 — установка и настройка
Nagios на CentOS 8 — установка и настройка

Обложка: мониторинг инфраструктуры и логотип Nagios

О чём эта инструкция

Эта статья подходит для системных администраторов и инженеров мониторинга, которые хотят развернуть классическую связку 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 и убедитесь, что отображается страница конфигурации PHP.

Страница конфигурации PHP с phpinfo

Важно: после теста удалите 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:///nagios — при запросе введите учетные данные nagiosadmin.

Главная страница Nagios — веб-интерфейс

Шаг 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 и проверьте статусы.

Список хостов в Nagios — панель мониторинга

Детали хоста в Nagios — статус и сервисы

Статусы сервисов в Nagios — детальный обзор

Примечание: если какой‑то сервис возвращает 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://:1080.

Конфигурация 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 проверяет статус

Инцидентный рунбук (быстрый)

  1. Симптом: Nagios перестал принимать данные / web упал.
  2. Проверка: systemctl status nagios && sudo tail -n 200 /usr/local/nagios/var/nagios.log
  3. Если проблема в web: systemctl status httpd && tail -n 200 /var/log/httpd/error_log
  4. Если проблема в Nginx: systemctl status nginx && sudo nginx -t && tail /var/log/nginx/error.log
  5. Если проблема в сертификате: sudo certbot certificates
  6. Откат: восстановить конфигурацию из резервной копии, перезапустить сервисы в порядке: Apache -> Nagios -> Nginx.
  7. После восстановления: проверить метрики и уведомления, проинформировать заинтересованные стороны.

Мини‑методология мониторинга (как мыслить при настройке checks)

  1. Определите критичные сервисы (S0): сетевой доступ, SSH, HTTP, дисковое пространство, load.
  2. Убедитесь, что для каждого критичного сервиса есть базовая проверка и границы (warning/critical).
  3. Настройте оповещения на минимально‑нужных людей/каналах, чтобы не создавать шум.
  4. Автоматизируйте восстановление для повторяющихся простых инцидентов (cron checks, автоскрипты).
  5. Периодически ревизуйте 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 (на английском) — используйте для расширенных настроек плагинов и конфигураций.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

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

Herodotus: механизм и защита Android‑трояна

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

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

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

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

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

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

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

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

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

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