Поиск по сайту:

Как установить и настроить Nagios на CentOS 8


На этой странице

  1. Предпосылки
  2. Шаг 1. Настройка брандмауэра
  3. Шаг 2. Установите Apache и PHP
  4. Шаг 3. Установите Nagios
    1. Установить зависимости
    2. Загрузить Nagios
    3. Скомпилировать Nagios
    4. Создание пользователя и группы Nagios
    5. Установите двоичные файлы Nagios
    6. Создать внешний каталог команд
    7. Установите файлы конфигурации Nagios
    8. Установите файлы конфигурации Apache
    9. Создание служебного файла Systemd
    10. Включить HTTP-аутентификацию

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

    1. Установите подключаемые модули Nagios
    2. Установить NRPE
    3. Проверить мониторы

    1. Шаг 8a. Установка и настройка SSL

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

    В этом руководстве вы узнаете, как установить и настроить Nagios на сервере на базе CentOS 8. Мы также выполним некоторую базовую настройку и установим Nagios Remote Plugin Executor (NPRE), который позволит нам отслеживать удаленные хосты.

    Предпосылки

    1. A server running CentOS 8
    2. A non-sudo user with root privileges.
    3. SELinux Disabled
    4. Another server running CentOS 8 that you want to monitor.
    5. Ensure that everything is updated.
      $ sudo dnf update
      

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

    Первым шагом является настройка брандмауэра. Сервер Fedora поставляется с брандмауэром 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 systemctl reload firewalld
    

    Шаг 2 — Установите Apache и PHP

    Для запуска Nagios вам понадобится Apache вместе с установленным PHP.

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

    $ sudo dnf install httpd
    $ sudo systemctl enable --now httpd
    

    Для установки PHP мы будем использовать репозиторий Remi. Установите Remi Repo и включите 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 и несколько стандартных модулей PHP.

    $ sudo dnf install php php-gd php-curl
    

    Включите 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
    

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

    <?php phpinfo();
    

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

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

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

    Скачать Нагиос

    Перейдите в каталог /usr/src, где мы будем размещать загруженные исходные файлы Nagios.

    $ cd /usr/src
    

    Загрузите последнюю версию Nagios со страницы Github. На момент руководства 4.4.6 является последней доступной версией. Измените команду, если вам нужна другая версия.

    $ sudo wget https://github.com/NagiosEnterprises/nagioscore/archive/nagios-4.4.6.tar.gz
    

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

    $ sudo tar zxf nagios-*.tar.gz
    

    Перейдите в исходный каталог Nagios.

    $ cd nagioscore-nagios-*/
    

    Скомпилируйте Nagios

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

    $ sudo ./configure
    

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

    *** Configuration summary for nagios 4.4.6 2020-04-28 ***:
    
     General Options:
     -------------------------
            Nagios executable:  nagios
            Nagios user/group:  nagios,nagios
           Command user/group:  nagios,nagios
                 Event Broker:  yes
            Install ${prefix}:  /usr/local/nagios
        Install ${includedir}:  /usr/local/nagios/include/nagios
                    Lock file:  /run/nagios.lock
       Check result directory:  /usr/local/nagios/var/spool/checkresults
               Init directory:  /lib/systemd/system
      Apache conf.d directory:  /etc/httpd/conf.d
                 Mail program:  /sbin/sendmail
                      Host OS:  linux-gnu
              IOBroker Method:  epoll
    
     Web Interface Options:
     ------------------------
                     HTML URL:  http://localhost/nagios/
                      CGI URL:  http://localhost/nagios/cgi-bin/
     Traceroute (used by WAP):
    
    
    Review the options above for accuracy.  If they look okay,
    type 'make all' to compile the main program and CGIs.
    

    Запустите компиляцию.

    $ 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
    
    *** External command directory configured ***
    

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

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

    $ sudo make install-config
    

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

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

    $ sudo make install-webconf
    

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

    $ sudo systemctl restart httpd
    

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

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

    $ sudo make install-daemoninit
    

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

    Вы можете заблокировать веб-интерфейс Nagios с помощью HTTP-аутентификации. Для этого создайте пользователя-администратора с именем nagiosadmin.

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

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

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

    $ sudo systemctl restart httpd
    

    Шаг 4 — Установите плагины Nagios

    Установите предварительные условия, необходимые для подключаемых модулей 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
    

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

    $ cd /usr/src
    

    Загрузите последнюю версию Nagios со страницы Github. На момент руководства 2.3.3 является последней доступной версией. Измените команду, если вам нужна другая версия.

    $ 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
    

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

    $ sudo tar zxf nagios-plugins.tar.gz
    

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

    $ cd nagios-plugins-*
    

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

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

    Шаг 5 — Установите плагин check_nrpe

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

    $ cd /usr/src
    

    Загрузите последнюю версию NPRE со страницы Github. На момент написания этого руководства последней доступной версией была 4.0.3. Измените следующую команду, если вам нужна другая версия.

    $ 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
    

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

    $ cd nrpe-4.0.3
    

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

    $ 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, и вы должны увидеть следующий экран.

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

    Для мониторинга хоста необходимо установить на хост плагины NRPE Daemon и Nagios. Мы будем контролировать сервер на базе CentOS 8 с нашего сервера Nagios.

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

    $ ssh _server_ip
    

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

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

    Установить NRPE

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

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

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

    $ cd /usr/src
    

    Скачать NRPE.

    $ 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
    

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

    $ cd nrpe-4.0.3
    

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

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

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

    $ sudo make install-groups-users
    

    Установите бинарные файлы NPRE, демон NPRE и плагин 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).

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

    # The following examples use hardcoded command arguments...
    # This is by far the most secure method of using 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
    
    # The following examples allow user-supplied arguments and can
    # only be used if the NRPE daemon was compiled with support for
    # command arguments *AND* the dont_blame_nrpe directive in this
    # config file is set to '1'.  This poses a potential security risk, so
    # make sure you read the SECURITY file before doing this.
    
    ### 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$
    

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

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

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

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

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

    $ sudo systemctl reload firewalld
    

    Запустите НПРЕ.

    $ sudo systemctl start nrpe
    

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

    Проверьте, работает ли 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
    

    Откройте файл конфигурации Nagios /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                       client01
          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/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, используя следующий блок. Следующий блок проверяет сервер 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'
    }
    

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

    define service{                     
        use                     			generic-service            
        host_name               			monitored_server_host_name            
        service_description     			Root / Partition            
        check_command           			check_nrpe!check_root
    }
    

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

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

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

    Перезапустите Нагиос.

    $ sudo systemctl restart nagios
    

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

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

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

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

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

    Шаг 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 при появлении запроса.

    Добавьте новый IP-адрес в брандмауэр.

    $ sudo firewall-cmd --permanent --add-port=8080/tcp
    $ sudo systemctl reload firewalld
    

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

    $ sudo systemctl restart httpd
    

    Далее устанавливаем Nginx.

    CentOS 8 по умолчанию поставляется с Nginx 1.14, но это старая версия. Мы также можем включить последнюю версию.

    $ sudo dnf module enable nginx:1.20
    $ sudo dnf install nginx
    

    Включите сервер Nginx.

    $ sudo systemctl enable nginx
    

    Шаг 8a. Установите и настройте SSL

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

    Чтобы установить SSL-сертификат с помощью Lets Encrypt, нам нужно загрузить инструмент Certbot. Certbot доступен из репозитория EPEL CentOS, который мы уже добавили ранее в этом руководстве.

    $ sudo dnf install certbot python3-certbot-nginx
    

    Остановите службу Nginx.

    $ sudo systemctl stop nginx
    

    Создайте SSL-сертификат.

    $ sudo certbot certonly --standalone --preferred-challenges --agree-tos --email  http -d nagios.example.com
    

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

    Создайте задание Cron для обновления SSL. Он будет запускаться каждый день для проверки сертификата и его обновления при необходимости. Для этого сначала создайте файл /etc/cron.daily/certbot-renew и откройте его для редактирования.

    $ sudo nano /etc/cron.daily/certbot-renew
    

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

    #!/bin/sh
    certbot renew --cert-name nagios.example.com --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"
    

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

    Измените права доступа к файлу задачи, чтобы сделать его исполняемым.

    $ sudo chmod +x /etc/cron.daily/certbot-renew
    

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

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

    Прежде чем настраивать 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
    

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

    <VirtualHost *:1080>
    

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

    </VirtualHost>
    

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

    Как только все заработает, мы можем приступить к созданию файла конфигурации для 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 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;
            }
    }
    

    Когда вы закончите, сохраните файл, нажав 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 start nginx
    

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

    Заключение

    Вы установили и настроили Nagios на сервере на базе CentOS 8 для мониторинга нескольких служб, таких как загрузка, использование диска/подкачки, пользователи, общие процессы, HTTP и SSH. На этом наш урок заканчивается. Если вы хотите узнать больше, вам следует ознакомиться с официальной документацией Nagios, в которой подробно описывается мониторинг и различные команды. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.