Мониторинг. · 18 min read · Nov 09, 2025

Как установить и настроить Nagios на Rocky Linux 9

Nagios — это популярная и одна из самых мощных систем мониторинга с открытым исходным кодом. Она контролирует вашу ИТ-инфраструктуру и обеспечивает бесперебойную работу ваших сетей, серверов, приложений и процессов. С помощью системы мониторинга вы можете обнаруживать проблемы до их возникновения и быстро их устранять, чтобы сэкономить средства и время простоя.

Этот учебник научит вас, как установить и настроить Nagios на сервере Rocky Linux 9. Мы также сделаем некоторые базовые настройки и установим Nagios Remote Plugin Executor (NPRE), который позволяет нам мониторить удаленные хосты.

Предварительные требования

  1. Сервер с установленным Rocky Linux 9.
  2. Пользователь без прав sudo с правами root.
  3. SELinux отключен. Для этого учебника, даже если вы оставите SELinux включенным, он будет работать без каких-либо проблем. Но в зависимости от используемых вами мониторов Nagios, вам либо нужно будет настроить SELinux, либо лучше оставить его отключенным.
  4. Другой сервер с установленным Rocky Linux 9, который вы хотите мониторить.
  5. Убедитесь, что все обновлено. $ sudo dnf update

Шаг 1 - Настройка брандмауэра

Первый шаг — настроить брандмауэр. Сервер Rocky Linux поставляется с брандмауэром 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

Перезагрузите брандмауэр.

$ sudo firewall-cmd --reload

Шаг 2 - Установка Apache и PHP

Чтобы запустить Nagios, вам потребуется установить Apache вместе с PHP.

Установите и включите службу Apache.

$ sudo dnf install httpd
$ sudo systemctl enable httpd

Чтобы установить PHP, мы будем использовать репозиторий Remi. Установите Remi Repo и включите PHP 8.1.

$ sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm
$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.1 -y

Установите PHP и несколько общих модулей PHP.

$ sudo dnf install -y php php-gd php-curl

Проверьте установку PHP.

$ php --version
PHP 8.1.16 (cli) (built: Feb 14 2023 18:59:41) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.16, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.16, Copyright (c), by Zend Technologies

Включите PHP и запустите службу.

$ sudo systemctl enable --now php-fpm

Перезапустите службу Apache, чтобы изменения вступили в силу.

$ sudo systemctl restart httpd

Вы можете проверить установку Apache и PHP, создав файл info.php в каталоге /var/www/html, который был создан установщиком Apache.

$ sudo nano /var/www/html/info.php

Вставьте следующий код в редактор.

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Откройте URL http:///info.php в вашем браузере, и вы должны увидеть следующую страницу.

Страница информации PHP

Шаг 3 - Установка Nagios

Большая часть этого учебника потребует от вас установки и работы на основном сервере.

Установка зависимостей

Этот учебник потребует, чтобы Nagios и его плагины были собраны из исходного кода. Поэтому сначала вам нужно установить несколько библиотек для разработки. Нам также нужен репозиторий EPEL, но он был автоматически установлен с репозиторием Remi на предыдущем шаге, поэтому мы можем пропустить его здесь.

$ sudo dnf install gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel unzip wget gettext autoconf net-snmp-utils postfix automake perl-Net-SNMP

Загрузка Nagios

Скачайте последнюю версию со страницы релизов Nagios на GitHub. На момент написания учебника 4.4.10 — это последняя доступная версия. Измените команду, если вы хотите другую версию.

$ cd ~
$ sudo wget -O nagios.tar.gz https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.10/nagios-4.4.10.tar.gz

Извлеките tar-файл.

$ sudo tar zxf nagios.tar.gz

Переместите извлеченный каталог в каталог /usr/src.

sudo mv nagios-4.4.10 /usr/src/nagios

Перейдите в каталог /usr/src/nagios.

$ cd /usr/src/nagios

Компиляция Nagios

Следующий шаг — скомпилировать Nagios из его исходных файлов. Запустите скрипт configure, чтобы выполнить проверки и убедиться, что все зависимости присутствуют.

$ sudo ./configure

Вы должны получить аналогичный вывод после успешного завершения скрипта.

* Резюме конфигурации для nagios 4.4.10 2023-01-17 *:

 Общие параметры:
 -------------------------
        Исполняемый файл Nagios:  nagios
        Пользователь/группа Nagios:  nagios,nagios
       Пользователь/группа команд:  nagios,nagios
             Брокер событий:  да
        Установить ${prefix}:  /usr/local/nagios
    Установить ${includedir}:  /usr/local/nagios/include/nagios
                Файл блокировки:  /run/nagios.lock
   Директория результатов проверки:  /usr/local/nagios/var/spool/checkresults
           Директория инициализации:  /lib/systemd/system
  Директория конфигурации Apache:  /etc/httpd/conf.d
             Почтовая программа:  /usr/sbin/sendmail
                  Операционная система:  linux-gnu
          Метод IOBroker:  epoll

 Веб-интерфейс:
 ------------------------
                 HTML URL:  http://localhost/nagios/
                  CGI URL:  http://localhost/nagios/cgi-bin/
 Traceroute (используется WAP):  

Просмотрите параметры выше на точность. Если они выглядят нормально,
введите 'make all', чтобы скомпилировать основную программу и CGI.

Начните компиляцию.

$ sudo make all

Создание пользователя и группы Nagios

Создайте нового пользователя и группу, которые будут запускать процесс Nagios.

$ sudo make install-groups-users

Вы должны увидеть следующий вывод.

groupadd -r nagios
useradd -g nagios nagios

Добавьте пользователя apache в группу nagios.

$ sudo usermod -a -G nagios apache

Установка бинарных файлов Nagios

Запустите следующую команду, чтобы установить бинарные файлы Nagios, CGI и HTML-файлы.

$ sudo make install

Создание каталога внешних команд

Nagios может обрабатывать команды от внешних приложений, и для этого ему нужен настроенный каталог.

$ sudo make install-commandmode
/bin/install -c -m 775 -o nagios -g nagios -d /usr/local/nagios/var/rw
chmod g+s /usr/local/nagios/var/rw

* Каталог внешних команд настроен *

Установка файлов конфигурации Nagios

Установите образцы файлов конфигурации.

$ sudo make install-config

Установка файлов конфигурации Apache

Запустите следующую команду, чтобы установить файлы конфигурации Apache.

$ sudo make install-webconf

Перезапустите веб-сервер, чтобы активировать конфигурацию.

$ sudo systemctl restart httpd

Создание файла службы Systemd

Запустите следующую команду, чтобы установить файл единицы systemd.

$ sudo make install-daemoninit

Включение HTTP-аутентификации

Вы можете заблокировать веб-интерфейс Nagios с помощью HTTP-аутентификации. Запустите следующую команду, чтобы использовать htpasswd для создания пользователя. Вам будет предложено ввести пароль.

$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password:
Re-type new password:
Adding password for user nagiosadmin

Имя пользователя по умолчанию — nagiosadmin. Вы можете использовать другое имя пользователя, заменив все вхождения nagiosadmin в файле /usr/local/nagios/etc/cgi.cfg на предпочитаемое имя пользователя. Или вы можете добавить имя пользователя, используя запятую, как показано ниже.

authorized_for_system_information=nagiosadmin, username1
authorized_for_configuration_information=nagiosadmin, username1
authorized_for_system_commands=nagiosadmin, username1
authorized_for_all_services=nagiosadmin, username1
authorized_for_all_hosts=nagiosadmin, username1
authorized_for_all_service_commands=nagiosadmin, username1
authorized_for_all_host_commands=nagiosadmin, username1

Вы можете добавлять пользователей с доступом только для чтения, включив следующую конфигурацию в файле, убрав хеш (#) перед ней. Затем запустите htpasswd с именем пользователя.

authorized_for_read_only=username2

Перезапустите сервер, чтобы изменения вступили в силу.

$ sudo systemctl restart httpd

Шаг 4 - Установка плагинов Nagios

Установите предварительные требования, необходимые для плагинов Nagios.

$ sudo dnf install epel-release
$ sudo dnf install -y gcc glibc glibc-common make gettext automake autoconf wget openssl-devel net-snmp net-snmp-utils postgresql-devel openldap-devel bind-utils samba-client fping openssh-clients lm_sensors perl-Net-SNMP

Скачайте последнюю версию со страницы плагинов Nagios на GitHub. На момент написания учебника 2.4.3 — это последняя доступная версия. Измените команду, если вы хотите другую версию.

$ cd ~
$ sudo wget -O nagios-plugins.tar.gz https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.4.3/nagios-plugins-2.4.3.tar.gz

Извлеките tar-файл.

$ sudo tar zxf nagios-plugins.tar.gz

Переместите извлеченный каталог в каталог /usr/src.

$ sudo mv nagios-plugins-2.4.3 /usr/src/nagios-plugins

Вернитесь в каталог /usr/src/nagios-plugins.

$ cd /usr/src/nagios-plugins

Запустите следующие команды для компиляции и установки плагинов.

$ sudo ./configure
$ sudo make
$ sudo make install

Шаг 5 - Установка плагина check_nrpe

Скачайте последнюю версию со страницы релизов NRPE на GitHub. На момент написания этого учебника последняя доступная версия — 4.1.0. Измените следующую команду, если вы хотите другую версию.

$ cd ~
$ wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.1.0/nrpe-4.1.0.tar.gz

Извлеките архив.

$ tar zxf nrpe-*.tar.gz

Переместите извлеченный каталог в каталог /usr/src.

$ sudo mv nrpe-4.1.0 /usr/src/nrpe

Перейдите в каталог /usr/src/nrpe.

$ cd /usr/src/nrpe

Настройте и установите плагин.

$ sudo ./configure
$ sudo make check_nrpe
$ sudo make install-plugin

Это поместит плагин check_nrpe в каталог /usr/local/nagios/libexec/.

Шаг 6 - Запуск Nagios

С установленными Nagios и плагинами пришло время запустить службу Nagios.

$ sudo systemctl start nagios

Проверьте статус службы, чтобы увидеть, работает ли она правильно.

$ sudo systemctl status nagios

Веб-интерфейс Nagios

Откройте URL http:///nagios в вашем браузере. Вы должны увидеть запрос на вход.

Введите учетные данные, которые вы создали во время метода HTTP-аутентификации, и вы должны увидеть следующий экран.

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

Шаг 7 - Мониторинг хостов

Чтобы мониторить хост, вам нужно установить демон NRPE и плагины Nagios на хост. Мы будем мониторить сервер Rocky Linux 9 с нашего сервера Nagios.

Войдите на ваш хост.

$ ssh user@monitored_server_ip

Установка плагинов Nagios

Установите плагины Nagios, повторив шаг 4 из предыдущего.

Установка NRPE

Установите предварительные требования, необходимые для демона NRPE.

$ sudo dnf install -y gcc glibc glibc-common openssl openssl-devel perl wget

Скачайте NRPE.

$ cd ~
$ wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.1.0/nrpe-4.1.0.tar.gz

Извлеките архив.

$ tar zxf nrpe-*.tar.gz

Переместите извлеченный каталог в каталог /usr/src.

$ sudo mv nrpe-4.1.0 /usr/src/nrpe

Перейдите в каталог NRPE.

$ cd /usr/src/nrpe

Настройте и установите NRPE.

$ sudo ./configure --enable-command-args
$ sudo make all

Создайте пользователя и группу.

$ sudo make install-groups-users

Установите бинарные файлы NRPE, демон NRPE и плагин check_npre.

$ sudo make install

Установите файлы конфигурации.

$ sudo make install-config

Обновите файл служб. Файл /etc/services используется для перевода имен служб в номера портов.

$ sudo sh -c "echo >> /etc/services"
$ sudo sh -c "sudo echo '# Nagios services' >> /etc/services"
$ sudo sh -c "sudo echo 'nrpe    5666/tcp' >> /etc/services"

Установите демон службы NPRE.

$ sudo make install-init
$ sudo systemctl enable nrpe

Вам нужно обновить файл конфигурации NPRE, расположенный по адресу /usr/local/nagios/etc/nrpe.cfg.

Откройте файл для редактирования.

$ sudo nano /usr/local/nagios/etc/nrpe.cfg

По умолчанию NPRE слушает запросы только от локального хоста (127.0.0.1). Вам нужно добавить IP-адрес вашего сервера Nagios в файл.

allowed_hosts=127.0.0.1,10.25.5.2

Следующий параметр определяет, будет ли демон NPRE разрешать клиентам указывать аргументы команд. Разрешите параметр, введя значение 1, что включает расширенные конфигурации NPRE.

dont_blame_nrpe=1

Далее, прокручивая вниз, вы наткнетесь на список команд NRPE с их определениями. Все они закомментированы. Вам нужно раскомментировать их, чтобы Nagios мог их использовать.

Каждую команду можно передавать аргументы. Некоторые команды имеют жестко закодированные аргументы перед ними, в то время как некоторые могут принимать аргументы от пользователя. Каждая команда может иметь следующие параметры уведомления.

  • W означает предупреждающие состояния служб
  • C означает критические состояния служб
  • R означает уведомление о восстановлении службы (состояния OK)

Таким образом, вы можете указать, на каком уровне какой тип уведомления команда может отправлять. Мы не будем углубляться в подробное описание и функции каждой из команд, так как они выходят за рамки этого учебника.

# Следующие примеры используют жестко закодированные аргументы команд...
# Это, безусловно, самый безопасный способ использования NRPE

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
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200

# Следующие примеры позволяют аргументы, предоставленные пользователем, и могут
# использоваться только если демон NRPE был скомпилирован с поддержкой
# аргументов команд *И* директива dont_blame_nrpe в этом
# конфигурационном файле установлена в '1'. Это представляет потенциальный риск безопасности, поэтому
# убедитесь, что вы прочитали файл SECURITY перед тем, как делать это.

### MISC SYSTEM METRICS ###
command[check_users]=/usr/local/nagios/libexec/check_users $ARG1$
command[check_load]=/usr/local/nagios/libexec/check_load $ARG1$
command[check_disk]=/usr/local/nagios/libexec/check_disk $ARG1$
command[check_swap]=/usr/local/nagios/libexec/check_swap $ARG1$
command[check_cpu_stats]=/usr/local/nagios/libexec/check_cpu_stats.sh $ARG1$
command[check_mem]=/usr/local/nagios/libexec/custom_check_mem -n $ARG1$

### GENERIC SERVICES ###
command[check_init_service]=sudo /usr/local/nagios/libexec/check_init_service $ARG1$
command[check_services]=/usr/local/nagios/libexec/check_services -p $ARG1$

### SYSTEM UPDATES ###
command[check_yum]=/usr/local/nagios/libexec/check_yum
#command[check_apt]=/usr/local/nagios/libexec/check_apt

### PROCESSES ###
command[check_all_procs]=/usr/local/nagios/libexec/custom_check_procs
command[check_procs]=/usr/local/nagios/libexec/check_procs $ARG1$

### OPEN FILES ###
command[check_open_files]=/usr/local/nagios/libexec/check_open_files.pl $ARG1$

### NETWORK CONNECTIONS ###
command[check_netstat]=/usr/local/nagios/libexec/check_netstat.pl -p $ARG1$ $ARG2$

Раскомментируйте вышеуказанные команды, убрав символ # перед ними. Вы можете раскомментировать столько команд, сколько вам нужно.

Добавьте следующую команду для проверки свободного места на корневом диске.

command[check_root]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /

Когда закончите, сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Разрешите порт 5666, который используется плагином NPRE.

$ sudo firewall-cmd --permanent --add-port=5666/tcp

Перезагрузите брандмауэр.

$ sudo firewall-cmd --reload

Запустите NPRE.

$ sudo systemctl start nrpe

Все команды с этого момента будут выполняться на основном сервере Nagios, если не указано иное.

Проверьте, работает ли NRPE, запустив следующую команду на вашем основном сервере Nagios.

$ /usr/local/nagios/libexec/check_nrpe -H monitored_server_ip

Вы должны увидеть следующий вывод.

NRPE v4.1.0

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

Откройте файл конфигурации Nagios /usr/local/nagios/etc/nagios.cfg для редактирования.

$ sudo nano /usr/local/nagios/etc/nagios.cfg

Найдите следующий файл и раскомментируйте, убрав # перед ним.

cfg_dir=/usr/local/nagios/etc/servers

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Следующий шаг — добавить команду check_nrpe в файл /usr/local/nagios/etc/objects/commands.cfg, чтобы она могла использоваться для мониторинга хостов.

Откройте файл /usr/local/nagios/etc/objects/commands.cfg для редактирования.

$ sudo nano /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$
}

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Создайте новый файл конфигурации для удаленного хоста в каталоге /usr/local/nagios/etc/servers/.

$ sudo nano /usr/local/nagios/etc/servers/yourhost.cfg

Добавьте следующий код, заменив значение host_name на имя вашего удаленного хоста, значение alias на описание вашего хоста и значение address на IP-адрес вашего удаленного хоста.

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
}

С этой конфигурацией Nagios сообщит вам, когда хост будет доступен или недоступен. Вам нужно будет добавить больше служб для мониторинга дополнительных вещей.

Добавьте следующий блок для проверки статистики соединений для хоста.

define service {
      use                             generic-service
      host_name                       monitored_server_host_name
      service_description             PING
      check_command                   check_ping!200.0,20%!400.0,90%
}

Добавьте следующий блок для мониторинга средней нагрузки вашего сервера.

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'
}

Директива use generic-service говорит Nagios наследовать от шаблона с именем generic-service, предопределенного Nagios.

Далее добавьте блок для мониторинга использования диска. Измените команду с соответствующими метками диска.

define service {
        use                             generic-service
        host_name                       monitored_server_host_name
        service_description             /dev/vda1 free space
        check_command                   check_nrpe!check_disk!-a '-w 20% -c 10% -p /dev/vda1'
}

Мониторьте SSH, используя следующий блок. Следующий блок проверит сервер SSH и сгенерирует предупреждение, если сервер не ответит в течение 5 секунд.

define service {
    use                                 generic-service
    host_name                           monitored_server_host_name
    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%'
}

Проверьте корневой раздел и его использование диска.

define service{
    use                                  generic-service
    host_name                            nagiosclient
    service_description                  Root / Partition
    check_command                        check_nrpe!check_disk!-a '-w 20% -c 10% -p /'
}

Проверьте, установлен ли HTTP-сервер.

define service {
    use                                  generic-service
    host_name                            nagiosclient
    service_description                  HTTP
    check_command                        check_http
}

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Перезапустите Nagios.

$ sudo systemctl restart nagios

Проверьте мониторы

Откройте панель управления Nagios и нажмите на опцию Хосты в левой боковой панели. Вы должны увидеть новый настроенный хост вместе с localhost на странице.

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

Нажмите на новый настроенный хост (nagiosclient), и если все настроено правильно, вы должны увидеть его статус. Это займет минуту или около того, чтобы статус появился.

Мониторинг служб Nagios

Чтобы увидеть службы или мониторы, которые мы настроили, нажмите на опцию Просмотреть детали статуса для этого хоста, и вы должны увидеть следующую страницу.

Статус мониторов служб Nagios

Это должно дать вам четкое представление о том, как работают ваши хосты.

Шаг 8 - Установка Nginx

Вы можете либо запустить Nagios напрямую через IP-адрес сервера, либо разместить его на своем доменном имени. Nagios уже поставляется с файлами конфигурации Apache, но мы будем использовать Nginx для его запуска. Мы будем использовать Nginx в качестве обратного прокси перед веб-сервером Apache.

Apache уже работает на порту 80. Поэтому сначала нам нужно изменить это. А затем мы можем запустить Nginx в качестве прокси.

Откройте файл /etc/httpd/conf/httpd.conf для редактирования.

$ sudo nano /etc/httpd/conf/httpd.conf

Измените строку Listen 80 на Listen 8080. Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено. Поскольку мы будем использовать доменное имя для доступа к Nagios, нам не нужно открывать порт 8080 для публичного доступа.

Перезапустите сервер Apache.

$ sudo systemctl restart httpd

Затем установите Nginx.

Rocky Linux 9 поставляется со старой версией Nginx. Вам нужно загрузить официальный репозиторий Nginx, чтобы установить последнюю версию.

Создайте и откройте файл /etc/yum.repos.d/nginx.repo для создания официального репозитория Nginx.

$ sudo nano /etc/yum.repos.d/nginx.repo

Вставьте следующий код в него.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Установите сервер Nginx.

$ sudo dnf install nginx

Проверьте установку.

$ nginx -v
nginx version: nginx/1.22.1

Включите и запустите сервер Nginx.

$ sudo systemctl enable nginx --now

Шаг 9 - Установка и настройка SSL

Перед настройкой Nginx мы установим и настроим SSL-сертификат для домена, который мы собираемся использовать с Nagios. В нашем случае мы будем использовать http://nagios.example.com.

Мы будем использовать установщик пакетов Snapd для этого. Поскольку Rocky Linux не поставляется с ним, установите установщик Snapd. Он требует репозиторий EPEL для работы, который мы уже установили ранее, поэтому мы можем пропустить это.

Установите Snapd.

$ sudo dnf install -y snapd

Включите и запустите службу Snap.

$ sudo systemctl enable snapd --now

Установите пакет Snap core и убедитесь, что ваша версия Snapd обновлена.

$ sudo snap install core && sudo snap refresh core

Создайте необходимые ссылки для работы Snapd.

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

Выполните следующую команду, чтобы установить Certbot.

$ sudo snap install --classic certbot

Используйте следующую команду, чтобы убедиться, что команда Certbot может быть выполнена, создав символическую ссылку в каталоге /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Проверьте установку.

$ certbot --version
certbot 2.3.0

Выполните следующую команду, чтобы сгенерировать SSL-сертификат.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d nagios.example.com

Вышеуказанная команда загрузит сертификат в каталог /etc/letsencrypt/live/nagios.example.com на вашем сервере.

Сгенерируйте сертификат группы Диффи-Хеллмана.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Сделайте пробный запуск процесса, чтобы проверить, работает ли автоматическое обновление SSL.

$ sudo certbot renew --dry-run

Если вы не видите ошибок, вы готовы. Ваш сертификат будет автоматически обновляться.

Шаг 10 - Настройка Nginx

Перед настройкой Nginx есть еще одно изменение, которое мы должны сделать. По умолчанию Apache обслуживает Nagios по адресу http://:8080/nagios. Теперь мы можем настроить прокси напрямую с Nagios, но он будет обслуживаться по адресу https://nagios.example.com/nagios. Мы можем сделать перенаправление на Nginx на корневой URL, что усложняет дело. По этой причине мы внесем изменения в Apache и Nagios напрямую.

Сначала откройте файл /usr/local/nagios/etc/cgi.cfg для редактирования.

$ sudo nano /usr/local/nagios/etc/cgi.cfg

Измените url_html_path=/nagios на url_html_path=/.

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Затем откройте /etc/httpd/conf.d/nagios.conf для редактирования.

$ sudo nano /etc/httpd/conf.d/nagios.conf

Измените ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin" на ScriptAlias /cgi-bin "/usr/local/nagios/sbin".

Закомментируйте строку Alias /nagios "/usr/local/nagios/share", изменив ее на следующую.

#Alias /nagios "/usr/local/nagios/share" 

Добавьте следующую строку ниже.

DocumentRoot /usr/local/nagios/share

Добавьте следующую строку в начало файла.


Добавьте следующую строку в конец файла.


Когда закончите, сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

И, наконец, откройте файл /usr/local/nagios/share/config.inc.php для редактирования.

$ sudo nano /usr/local/nagios/share/config.inc.php

Измените $cfg['cgi_base_url']='/nagios/cgi-bin'; на $cfg['cgi_base_url']='/cgi-bin';.

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Перезапустите как Apache, так и Nagios.

$ sudo systemctl restart httpd
$ sudo systemctl restart nagios

Чтобы подтвердить, что все работает правильно, откройте URL http://:1080 в вашем браузере, и вы должны увидеть, что Nagios работает правильно. Также убедитесь, что данные хостов поступают.

Когда все будет работать, мы можем перейти к созданию нашего конфигурационного файла для Nginx.

Создайте файл конфигурации для Nagios в каталоге /etc/nginx/conf.d.

$ sudo nano /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 Host $host;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-Proto $scheme;
       }
}

Когда закончите, сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Проверьте файл конфигурации.

$ sudo nginx -t

Если вы получите следующую ошибку, вам нужно будет отредактировать файл /etc/nginx/nginx.conf, чтобы добавить/откорректировать размер переменной server_names_hash_bucket_size.

nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size

Откройте файл /etc/nginx/nginx.conf для редактирования.

$ sudo nano /etc/nginx/nginx.conf

Добавьте следующую строку перед

server_names_hash_bucket_size  64;

Когда закончите, сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено. Снова проверьте Nginx.

Если вы не видите проблем, перезапустите сервер Nginx.

$ sudo systemctl restart nginx

Настройка SELinux

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

$ sudo setsebool -P httpd_can_network_connect on

Запустите домен https://nagios.example.com в вашем браузере, и вы должны увидеть главную страницу Nagios.

Заключение

Вы установили и настроили Nagios на сервере Rocky Linux 9 для мониторинга нескольких служб, таких как нагрузка, использование диска/обмена, пользователи, общее количество процессов, HTTP и SSH. Это завершает наш учебник. Чтобы узнать больше, вы должны ознакомиться с официальной документацией Nagios, охватывающей мониторинг и различные команды в большом объеме. Если у вас есть какие-либо вопросы, оставьте их в комментариях ниже.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.