Ricerca nel sito web

Come installare e configurare Nagios su CentOS 8


Su questa pagina

  1. Prerequisiti
  2. Passaggio 1: configurazione del firewall
  3. Passaggio 2 - Installa Apache e PHP
  4. Passaggio 3 - Installa Nagios
    1. Installa dipendenze
    2. Scarica Nagios
    3. Compila Nagios
    4. Crea utente e gruppo Nagios
    5. Installa i binari di Nagios
    6. Crea una directory dei comandi esterna
    7. Installa i file di configurazione di Nagios
    8. Installa i file di configurazione di Apache
    9. Crea un file di servizio Systemd
    10. Abilita l'autenticazione HTTP

    1. Interfaccia web di Nagios

    1. Installa i plugin Nagios
    2. Installa NRPE
    3. Controlla i monitor

    1. Passaggio 8a - Installa e configura SSL

    Nagios è un popolare e uno dei più potenti sistemi di monitoraggio del computer open source. Tiene traccia della tua infrastruttura IT e garantisce che reti, server, applicazioni e processi funzionino senza problemi. L'utilizzo di un sistema di monitoraggio consente di identificare i problemi prima che si verifichino e di distribuire rapidamente le correzioni con conseguente risparmio di costi e tempi di inattività.

    In questo tutorial imparerai come installare e configurare Nagios su un server basato su CentOS 8. Faremo anche alcune configurazioni di base e installeremo Nagios Remote Plugin Executor (NPRE), che ci consentirà di monitorare gli host remoti.

    Prerequisiti

    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
      

    Passaggio 1: configurare il firewall

    Il primo passo è configurare il firewall. Il server Fedora viene fornito con il firewall Firewalld.

    Controlla se il firewall è in esecuzione.

    $ sudo firewall-cmd --state
    

    Dovresti ottenere il seguente output.

    running
    

    Controlla gli attuali servizi/porte consentiti.

    $ sudo firewall-cmd --permanent --list-services
    

    Dovrebbe mostrare il seguente output.

    dhcpv6-client mdns ssh
    

    Consenti porte HTTP e HTTPS.

    $ sudo firewall-cmd --permanent --add-service=http
    $ sudo firewall-cmd --permanent --add-service=https
    

    Ricontrolla lo stato del firewall.

    $ sudo firewall-cmd --permanent --list-services
    

    Dovresti vedere un output simile.

    dhcpv6-client http https mdns ssh
    

    Ricarica il firewall.

    $ sudo systemctl reload firewalld
    

    Passo 2 - Installa Apache e PHP

    Per eseguire Nagios, avrai bisogno di Apache insieme a PHP installato.

    Installa e abilita il servizio Apache.

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

    Per installare PHP, utilizzeremo il repository Remi. Installa Remi Repo e abilita 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
    

    Installa PHP e diversi moduli PHP comuni.

    $ sudo dnf install php php-gd php-curl
    

    Abilita PHP e avvia il servizio.

    $ sudo systemctl enable --now php-fpm
    

    Riavvia il servizio Apache per rendere effettive le modifiche.

    $ sudo systemctl restart httpd
    

    Puoi controllare l'installazione di Apache e PHP creando un file info.php nella directory /var/www/html che è stata creata dall'installer di Apache.

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

    Incolla il seguente codice nell'editor.

    <?php phpinfo();
    

    Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    Apri l'URL http:///info.php nel tuo browser e dovresti essere accolto dalla seguente pagina.

    Passo 3 - Installa Nagios

    La maggior parte di questo tutorial richiederà l'installazione e il funzionamento sul server principale.

    Installa dipendenze

    Questo tutorial richiederà che Nagios e i suoi plugin siano compilati dal sorgente. Pertanto, è necessario installare prima alcune librerie di sviluppo.

    $ 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
    

    Scarica Nagios

    Passa alla directory /usr/src dove posizioneremo i file sorgente di Nagios scaricati.

    $ cd /usr/src
    

    Scarica l'ultima versione di Nagios dalla sua pagina Github. Al momento del tutorial, 4.4.6 è l'ultima versione disponibile. Modificare il comando nel caso si desideri una versione diversa.

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

    Estrarre il file tar.

    $ sudo tar zxf nagios-*.tar.gz
    

    Passa alla directory dei sorgenti di Nagios.

    $ cd nagioscore-nagios-*/
    

    Compila Nagios

    Il prossimo passo è compilare Nagios dai suoi file sorgente. Esegui lo script configure per eseguire controlli per assicurarti che tutte le dipendenze siano presenti.

    $ sudo ./configure
    

    Dovresti ottenere un output simile dopo il completamento con successo dello script.

    *** 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.
    

    Inizia la compilazione.

    $ sudo make all
    

    Crea utente e gruppo Nagios

    Crea un nuovo utente e gruppo che eseguirà il processo Nagios.

    $ sudo make install-groups-users
    

    Dovresti vedere il seguente output.

    groupadd -r nagios
    useradd -g nagios nagios
    

    Aggiungi l'utente apache al gruppo nagios.

    $ sudo usermod -a -G nagios apache
    

    Installa i binari di Nagios

    Esegui il comando seguente per installare i file binari, CGI e HTML di Nagios.

    $ sudo make install
    

    Crea una directory di comando esterna

    Nagios può elaborare comandi da applicazioni esterne e per questo necessita di una directory da configurare.

    $ 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 ***
    

    Installa i file di configurazione di Nagios

    Installa i file di configurazione di esempio.

    $ sudo make install-config
    

    Installa i file di configurazione di Apache

    Eseguire il seguente comando per installare i file di configurazione di Apache.

    $ sudo make install-webconf
    

    Riavviare il server web per attivare la configurazione.

    $ sudo systemctl restart httpd
    

    Crea un file di servizio Systemd

    Eseguire il seguente comando per installare un file unit systemd.

    $ sudo make install-daemoninit
    

    Abilita l'autenticazione HTTP

    Puoi bloccare l'interfaccia web di Nagios tramite l'autenticazione HTTP. Per questo, crea un utente amministratore chiamato nagiosadmin.

    Esegui il seguente comando per utilizzare htpasswd per creare l'utente. Ti verrà richiesta una password.

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

    Riavviare il server per rendere effettiva la configurazione.

    $ sudo systemctl restart httpd
    

    Passaggio 4: installa i plug-in Nagios

    Installa i prerequisiti richiesti per i plugin 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
    

    Torna alla directory /usr/src.

    $ cd /usr/src
    

    Scarica l'ultima versione di Nagios dalla sua pagina Github. Al momento del tutorial, 2.3.3 è l'ultima versione disponibile. Modificare il comando nel caso si desideri una versione diversa.

    $ 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
    

    Estrarre il file tar.

    $ sudo tar zxf nagios-plugins.tar.gz
    

    Passare alla directory dei plugin.

    $ cd nagios-plugins-*
    

    Esegui i seguenti comandi per compilare e installare i plugin.

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

    Passaggio 5: installa il plug-in check_nrpe

    Passa alla directory /usr/src.

    $ cd /usr/src
    

    Scarica l'ultima versione di NPRE dalla sua pagina Github. Al momento della stesura di questo tutorial, l'ultima versione disponibile è la 4.0.3. Modifica il seguente comando nel caso in cui desideri una versione diversa.

    $ sudo wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.tar.gz
    

    Estrai l'archivio.

    $ sudo tar zxf nrpe-*.tar.gz
    

    Passare alla directory NPRE.

    $ cd nrpe-4.0.3
    

    Configura e installa il plug-in.

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

    Questo collocherà il plugin check_nrpe nella directory /usr/local/nagios/libexec/.

    Passaggio 6: avviare Nagios

    Con Nagios e i plugin installati, è ora di avviare il servizio Nagios.

    $ sudo systemctl start nagios
    

    Controlla lo stato del servizio per vedere se funziona correttamente.

    $ sudo systemctl status nagios
    

    Interfaccia Web di Nagios

    Apri l'URL http:///nagios nel tuo browser. Dovresti vedere una richiesta di accesso.

    Inserisci le credenziali che hai creato durante il metodo di autenticazione HTTP e dovresti essere accolto con la seguente schermata.

    Passaggio 7: monitoraggio degli host

    Per monitorare un host, è necessario installare i plugin NRPE Daemon e Nagios sull'host. Monitoreremo un server basato su CentOS 8 dal nostro server Nagios.

    Accedi al tuo host.

    $ ssh _server_ip
    

    Installa i plugin Nagios

    Installa i plugin Nagios ripetendo il passaggio 4 di prima.

    Installa NRPE

    Installare i prerequisiti richiesti per il daemon NRPE.

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

    Passa alla directory /usr/src.

    $ cd /usr/src
    

    Scarica NRP.

    $ sudo wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.tar.gz
    

    Estrai l'archivio.

    $ sudo tar zxf nrpe-*.tar.gz
    

    Passare alla directory NPRE.

    $ cd nrpe-4.0.3
    

    Configurare e installare NPRE.

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

    Creare l'utente e il gruppo.

    $ sudo make install-groups-users
    

    Installa i binari NPRE, il demone NPRE e il plug-in check_npre.

    $ sudo make install
    

    Installa i file di configurazione.

    $ sudo make install-config
    

    Aggiorna il file dei servizi. Il file /etc/services è usato per tradurre i nomi dei servizi in numeri di porta.

    $ 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"
    

    Installa il demone del servizio NPRE.

    $ sudo make install-init
    $ sudo systemctl enable nrpe
    

    Devi aggiornare il file di configurazione NPRE che si trova in /usr/local/nagios/etc/nrpe.cfg.

    Apri il file per la modifica.

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

    Per impostazione predefinita, NPRE ascolta solo le richieste provenienti dal localhost (127.0.0.1). Devi aggiungere l'indirizzo IP del tuo server Nagios al file.

    allowed_hosts=127.0.0.1,10.25.5.2
    

    La seguente opzione determina se il daemon NPRE consentirà o meno ai client di specificare gli argomenti del comando. Consenti l'opzione inserendo il valore come 1 che abilita le configurazioni NPRE avanzate.

    dont_blame_nrpe=1
    

    Successivamente, mentre scorri verso il basso, ti imbatterai in un elenco di comandi NRPE con le loro definizioni. Sono tutti commentati. Devi decommentarli in modo che Nagios possa usarli.

    Ad ogni comando possono essere passati argomenti. Alcuni dei comandi hanno argomenti codificati davanti a loro mentre altri possono accettare argomenti dall'utente. Ogni comando può avere le seguenti opzioni di notifica.

    • W=sta per Warning service states
    • C=sta per Stati di servizio critici
    • R=sta per notifica al ripristino del servizio (stati OK)

    Pertanto, è possibile specificare a quale livello quale tipo di notifica può inviare un comando. Non ci addentreremo nella descrizione dettagliata e nella funzione di ciascuno dei comandi poiché esulano dallo scopo di questo tutorial.

    # 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$
    

    Rimuovere il commento dai comandi precedenti rimuovendo il simbolo # davanti a loro. Puoi decommentare tutti i comandi di cui hai bisogno.

    Al termine, salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    Consenti la porta 5666 utilizzata dal plug-in NPRE.

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

    Ricarica il firewall.

    $ sudo systemctl reload firewalld
    

    Avvia NPRE.

    $ sudo systemctl start nrpe
    

    Tutti i comandi da qui in avanti verranno eseguiti sul server principale di Nagios se non diversamente specificato.

    Controlla se NRPE funziona eseguendo il seguente comando sul tuo server Nagios principale.

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

    Dovresti vedere il seguente output.

    NRPE v4.0.3
    

    Per monitorare gli host, dovrai creare file di configurazione per ciascun host che desideri monitorare. Questi host diventeranno quindi accessibili tramite l'interfaccia web di Nagios.

    Crea la directory per l'archiviazione dei file di configurazione e assegnale le autorizzazioni appropriate.

    $ 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
    

    Apri il file di configurazione di Nagios /usr/local/nagios/etc/nagios.cfg per modificarlo. Trova il seguente file e rimuovi il commento rimuovendo il # davanti ad esso.

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

    Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    Il passo successivo è aggiungere il comando check_nrpe al file /usr/local/nagios/etc/objects/commands.cfg in modo che possa usarlo per monitorare gli host.

    Apri il file /usr/local/nagios/etc/objects/commands.cfg per la modifica.

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

    Incolla il seguente codice alla fine del file.

    define command {
        command_name 				   check_nrpe
        command_line    			   $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$ $ARG2$
    }
    

    Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    Crea un nuovo file di configurazione per l'host remoto nella directory /usr/local/nagios/etc/servers/.

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

    Aggiungi il seguente codice sostituendo il valore host_name con il tuo nome host remoto, il valore alias con la descrizione del tuo host e il valore address con il Indirizzo IP del tuo host remoto.

    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
    }
    

    Con questa configurazione, Nagios ti farà sapere quando l'host è attivo o inattivo. Dovrai aggiungere più servizi per monitorare altre cose.

    Aggiungi il seguente blocco per controllare le statistiche di connessione per l'host.

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

    Aggiungi il seguente blocco per monitorare il carico medio del tuo server.

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

    La direttiva use generic-service dice a Nagios di ereditare da un template chiamato generic-servicepredefinito da Nagios.

    Successivamente, aggiungi un blocco per monitorare l'utilizzo del disco.

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

    Successivamente, possiamo monitorare il servizio HTTP utilizzando il seguente blocco di codice.

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

    Monitora SSH utilizzando il seguente blocco. Il blocco successivo controllerà il server SSH e genererà un avviso se il server non risponde entro 5 secondi.

    define service {
        use                                 generic-service
        host_name                           nagiosclient
        service_description                 SSH Version Check
        check_command                       check_ssh!-t 5
    }
    

    Controlliamo il numero totale di processi in esecuzione.

    define service{                     
        use                     			generic-service            
        host_name               			monitored_server_host_name            
        service_description     			Total Processes            
        check_command           			check_nrpe!check_total_procs
    }
    

    Controlla gli utenti attualmente connessi.

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

    Controlla la partizione root e il suo utilizzo del disco.

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

    Controlla l'utilizzo del disco 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%'
    }
    

    Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    Riavvia Nagios.

    $ sudo systemctl restart nagios
    

    Controlla i monitor

    Apri la dashboard di Nagios e fai clic sull'opzione Host dalla barra laterale sinistra. Dovresti vedere l'host appena configurato insieme a localhost sulla pagina.

    Fai clic sull'host appena configurato (nagiosclient) e se tutto è configurato correttamente, dovresti vedere il suo stato. Ci vorrebbe circa un minuto prima che lo stato appaia.

    Per vedere i servizi o i monitor che abbiamo configurato, fai clic sull'opzione Visualizza dettagli stato per questo host e dovresti essere accolto dalla pagina seguente.

    Nel nostro caso, non abbiamo configurato la memoria di scambio e quindi stiamo ottenendo uno stato critico per il servizio poiché lo spazio di scambio è 0. Questo dovrebbe darti un'idea corretta di come funzionano i tuoi host.

    Passaggio 8: installa e configura Nginx

    Puoi eseguire Nagios direttamente tramite l'IP del server o farlo ospitare sul tuo nome di dominio. Nagios viene già fornito con i file di configurazione di Apache, ma useremo Nginx per eseguirlo. Useremo Nginx come proxy inverso davanti al server web Apache.

    Apache lo sta già eseguendo sulla porta 80. Pertanto, dobbiamo prima cambiarlo. E poi, possiamo eseguire Nginx come proxy.

    Apri il file /etc/httpd/conf/httpd.conf per modificarlo.

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

    Cambia la riga Ascolta 80 in Ascolta 8080.

    Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    Aggiungi il nuovo indirizzo IP al tuo firewall.

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

    Riavvia il server Apache.

    $ sudo systemctl restart httpd
    

    Successivamente, installa Nginx.

    CentOS 8 viene fornito con Nginx 1.14 per impostazione predefinita, ma è una versione precedente. Possiamo abilitare anche l'ultima versione.

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

    Abilita il server Nginx.

    $ sudo systemctl enable nginx
    

    Passaggio 8a - Installa e configura SSL

    Prima di configurare Nginx, imposteremo e configureremo un certificato SSL per il dominio che utilizzeremo con Nagios. Nel nostro caso, useremo http://nagios.example.com.

    Per installare un certificato SSL utilizzando Lets Encrypt, dobbiamo scaricare lo strumento Certbot. Certbot è disponibile dal repository EPEL di CentOS che abbiamo già aggiunto in precedenza nel tutorial.

    $ sudo dnf install certbot python3-certbot-nginx
    

    Arresta il servizio Nginx.

    $ sudo systemctl stop nginx
    

    Genera un certificato SSL.

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

    Il comando precedente scaricherà un certificato nella directory /etc/letsencrypt/live/nagios.example.com sul tuo server.

    Crea un Cron Job per rinnovare l'SSL. Verrà eseguito ogni giorno per controllare il certificato e rinnovarlo se necessario. Per questo, per prima cosa, crea il file /etc/cron.daily/certbot-renew e aprilo per modificarlo.

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

    Incolla il seguente codice.

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

    Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    Modificare le autorizzazioni sul file dell'attività per renderlo eseguibile.

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

    Genera un certificato di gruppo Diffie-Hellman.

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

    Prima di configurare Nginx, c'è un'altra modifica che dovremmo apportare. Per impostazione predefinita, Apache serve Nagios su http://:8080/nagios. Ora possiamo impostare un proxy direttamente con Nagios, ma verrà servito su https://nagios.example.com/nagios. Possiamo eseguire un reindirizzamento su Nginx all'URL principale che complica le cose. Per questo motivo, apporteremo una modifica direttamente ad Apache e Nagios.

    Innanzitutto, apri il file /usr/local/nagios/etc/cgi.cfg per modificarlo.

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

    Cambia url_html_path=/nagios in url_html_path=/.

    Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    Successivamente, apri /etc/httpd/conf.d/nagios.conf per la modifica.

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

    Cambia ScriptAlias /nagios/cgi-bin \/usr/local/nagios/sbin\ in ScriptAlias /cgi-bin \/usr/local/nagios/sbin\.

    Commenta la riga Alias /nagios \/usr/local/nagios/share\ modificandola come segue.

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

    Aggiungi la seguente riga sotto di essa.

    DocumentRoot /usr/local/nagios/share
    

    Aggiungi la seguente riga all'inizio del file.

    <VirtualHost *:1080>
    

    Aggiungi la seguente riga in fondo al file.

    </VirtualHost>
    

    Al termine, salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    Infine, apri il file /usr/local/nagios/share/config.inc.php per modificarlo.

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

    Cambia $cfg[cgi_base_url]=/nagios/cgi-bin; in $cfg[cgi_base_url]=/cgi-bin;.

    Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    Riavvia sia Apache che Nagios.

    $ sudo systemctl restart httpd
    $ sudo systemctl restart nagios
    

    Per confermare che tutto funzioni correttamente, apri l'URL http://:1080 nel tuo browser e dovresti vedere Nagios funzionare correttamente. Inoltre, assicurati che i dati degli host vengano ricevuti.

    Una volta che tutto funziona, possiamo procedere alla creazione del nostro file di configurazione per Nginx.

    Crea un file di configurazione per Nagios nella directory /etc/nginx/conf.d.

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

    Incolla il seguente codice al suo interno.

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

    Al termine, salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    Convalida il file di configurazione.

    $ sudo nginx -t
    

    Se ricevi il seguente errore, dovrai modificare il file /etc/nginx/nginx.conf per aggiungere/regolare la dimensione della variabile server_names_hash_bucket_size.

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

    Apri il file /etc/nginx/nginx.conf per la modifica.

    $ sudo nano /etc/nginx/nginx.conf
    

    Aggiungi la seguente riga prima

    server_names_hash_bucket_size  64;
    

    Al termine, salva il file premendo Ctrl + X e inserendo Y quando richiesto. Convalida di nuovo Nginx.

    Se non riscontri problemi, avvia il server Nginx.

    $ sudo systemctl start nginx
    

    Avvia il dominio https://nagios.example.com nel tuo browser e dovresti essere accolto con la home page di Nagios.

    Conclusione

    Hai installato e configurato Nagios su un server basato su CentOS 8 per monitorare diversi servizi come il carico, l'utilizzo del disco/swap, gli utenti, i processi totali, HTTP e SSH. Questo conclude il nostro tutorial. Se vuoi saperne di più, dovresti controllare la documentazione ufficiale di Nagios che copre il monitoraggio e vari comandi in modo molto dettagliato. Se hai domande, pubblicale nei commenti qui sotto.