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

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

• 7 min read • DevOps • Обновлено 16 Nov 2025
Nagios на CentOS 8: установка и настройка
Nagios на CentOS 8: установка и настройка

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

Nagios — популярная и мощная система мониторинга с открытым исходным кодом. Она отслеживает инфраструктуру: сети, серверы, приложения и процессы, помогает обнаружить проблемы заранее и сократить время простоя.

В этом руководстве вы научитесь устанавливать и настраивать Nagios Core на базе CentOS 8 и настраивать удалённый мониторинг через NRPE (Nagios Remote Plugin Executor).

Основные термины (в одну строку)

  • Nagios Core — основной мониторинговый движок.
  • NRPE — агент для выполнения плагинов на удалённых хостах.
  • Plugin — отдельный скрипт/утилита, проверяющая состояние сервиса или метрики.

Требования

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

Страница с информацией о 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 и войдите под пользователем, созданным ранее.

Главная страница 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 и детали хоста.

Мониторинг хостов в Nagios

Детали хоста

Статус сервисов

Если какой-то сервис не настроен (например, 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://:1080.

Конфигурация 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.


Критерии приёмки

  1. Nagios сервис запущен: systemctl status nagios — active (running).
  2. Веб-интерфейс доступен по HTTPS и требует логин: https://nagios.example.com.
  3. NRPE отвечает от удалённых хостов: check_nrpe -H возвращает версию.
  4. Минимум 3 сервиса на отслеживаемом хосте (PING, Load, Disk) имеют статус OK/CRITICAL в соответствии с реальными значениями.
  5. Автообновление сертификата проверено (имитация certbot renew).

Чек-лист для развёртывания (роль: Инженер)

  • Подготовка ОС: обновления установлены, SELinux учтён.
  • Установлен и запущен Firewalld.
  • Установлен Apache + PHP, протестирован phpinfo.
  • Nagios собран и установлен из исходников.
  • Плагины собраны и доступны в /usr/local/nagios/libexec.
  • NRPE установлен на клиентах, добавлены нужные команды.
  • Правила фаервола открыты для 5666 (NRPE) и 443 (Nginx).
  • SSL получен и установлен, автоматическое обновление работает.
  • Документировано: пароли, конфигурационные изменения, версии.

Мини-методология внедрения

  1. Тестовая среда: соберите Nagios в изолированной сети.
  2. Шаблоны мониторинга: определите стандартные наборы сервисов для разных типов серверов.
  3. Эскалационные политики: настройте уведомления и интервалы.
  4. Постепенный перенос: добавляйте хосты партиями и проверяйте нагрузку

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

  • Отключайте 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 
  • Добавление нового хоста — шаги:

  1. Создать файл в /usr/local/nagios/etc/servers/host.cfg.
  2. Добавить определения сервисов.
  3. Проверить конфигурацию: sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg (если доступна команда).
  4. Перезапустить 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.
  • Документируйте конфигурации и настройте регулярное обновление сертификатов.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро