Ricerca nel sito web

Come installare lo strumento di monitoraggio Icinga 2 su CentOS 8


Su questa pagina

  1. Prerequisiti
  2. Imposta repository
  3. Installazione e configurazione di LAMP Stack
  4. Installazione e configurazione di Icinga2
  5. Installazione e configurazione di Icingaweb2
  6. Configurazione di Icinga Web 2 tramite l'interfaccia web
  7. Verifica l'installazione di Icinga 2 e Icinga Web 2
  8. Conclusione

Il monitoraggio è uno dei componenti più importanti dell'infrastruttura server e del data center. Ti aiuterà a rilevare problemi e problemi che si verificheranno sui tuoi server in modo da poterli risolvere più velocemente. Esistono alcuni strumenti di monitoraggio open source disponibili e uno dei più popolari è Icinga 2.

Icinga è stato creato come fork del popolare strumento di monitoraggio Nagios e ora è stato riscritto da zero in C++. Come fork del progetto Nagios, Icinga è dotato di strumenti e funzionalità aggiuntivi, tra cui il direttore icinga, i moduli icinga e i plug-in icinga. Inoltre, ha il supporto per il monitoraggio distribuito che ti consente di gestire più istanze Icinga da un'unica dashboard.

In questo tutorial, ti mostreremo passo dopo passo come installare e configurare Icinga2 con Apache2 e MariaDB sul server CentOS 8.

Prerequisiti

  • Un server CentOS 8. Assicurati che sia aggiornato all'ultima versione.
  • Almeno 2 GB di RAM e 2 core. Se ne hai di più, sarà meglio.
  • Un utente con privilegi Sudo.

Configura repository

Innanzitutto, devi aggiungere il repository epel, remi e icinga al sistema centos 8. Quindi devi installare lo strumento dnf \\config-manager\\ e abilitare il repository \\PowerTools\\ usando quello strumento.

1. Aggiungi il repository epel e remi per i server centos 8 eseguendo i seguenti comandi.

sudo dnf install -y epel-release
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

2. Ora esegui il comando seguente per scaricare e aggiungere il repository Icinga per il sistema centos 8.

sudo dnf install -y https://packages.icinga.com/epel/icinga-rpm-release-8-latest.noarch.rpm

3. Successivamente, eseguire i seguenti comandi per installare lo strumento dnf config-manager e abilitare il repository PowerTools.

sudo dnf install -y 'dnf-command(config-manager)'
sudo dnf config-manager --set-enabled powertools

4. Una volta completato tutto il processo, verifica tutti i repository abilitati sul tuo sistema utilizzando il comando seguente.

sudo dnf repolist

Vedrai un output simile al seguente e assicurati che i repository epel, remi, icinga-* e powertools siano nell'elenco.

repo id                                                                                              repo name
appstream                                                                                            CentOS Linux 8 - AppStream
baseos                                                                                               CentOS Linux 8 - BaseOS
epel                                                                                                 Extra Packages for Enterprise Linux 8 - x86_64
epel-modular                                                                                         Extra Packages for Enterprise Linux Modular 8 - x86_64
extras                                                                                               CentOS Linux 8 - Extras
icinga-stable-release                                                                                ICINGA (stable release for epel)
powertools                                                                                           CentOS Linux 8 - PowerTools
remi-modular                                                                                         Remi's Modular repository for Enterprise Linux 8 - x86_64
remi-safe                                                                                            Safe Remi's RPM repository for Enterprise Linux 8 - x86_64

Installazione e configurazione di LAMP Stack

Lo strumento di monitoraggio Icinga ha due componenti principali, \icinga2\ che gestisce tutti i lavori di monitoraggio, e \icingaweb2\ che è un'applicazione web potente, pulita e veloce basata su PHP che ti consente di gestire il tuo stack Icinga da un browser web. Ora installerai e configurerai lo stack LAMP di base sul sistema centos 8.

1. Abilita il modulo remi per PHP 7.4 utilizzando il comando seguente.

sudo dnf module enable -y php:remi-7.4

Successivamente, esegui il seguente comando per installare i pacchetti LAMP Stack di base.

sudo dnf install -y httpd mariadb-server mariadb php php-cli php-devel php-pear make php-mysqlnd php-pecl-imagick php-pecl-imagick-devel

Ora avvia entrambi i servizi apache (httpd su centos) e mariadb e abilita entrambi all'avvio all'avvio del sistema.

sudo systemctl enable --now httpd
sudo systemctl enable --now mariadb

E vedrai un output simile come segue, i servizi apache e mariadb sono stati avviati e abilitati.

# Apache started and enabled
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

# MariaDB started and enabled
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

2. Successivamente, eseguire il comando seguente per impostare la password di root mariadb e, per motivi di sicurezza, si rimuoveranno il test del database predefinito e l'utente anonimo, disabilitando anche l'accesso remoto per l'utente root.

sudo mysql_secure_installation

Di seguito è riportato l'output simile che otterrai e assicurati di digitare una nuova password complessa per l'utente root mariadb e digitare Y per confermare tutte le azioni.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

To log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): PRESS ENTER
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] Y
New password: TYPE STRONG PASSWORD
Re-enter new password: TYPE STRONG PASSWORD
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Installazione e configurazione di Icinga2

Ora installerai e configurerai il componente principale di Icinga stesso. Questa fase riguarderà l'installazione dei pacchetti icinga2, la creazione del nuovo database e utente, l'importazione dello schema del database e l'impostazione dell'API REST Icinga.

1. Eseguire il seguente comando per installare i pacchetti dello strumento di monitoraggio Icinga.

sudo dnf install -y icinga2 nagios-plugins-all

Successivamente, avvia e abilita il servizio icinga2, quindi verifica lo stato del servizio Icinga.

sudo systemctl enable --now icinga2
sudo systemctl status icinga2

Se visualizzi un output simile al seguente, il servizio Icinga è attivo e funzionante.

# Icinga2 started and enabled
Created symlink /etc/systemd/system/multi-user.target.wants/icinga2.service → /usr/lib/systemd/system/icinga2.service.

# Icinga2 status running
? icinga2.service - Icinga host/service/network monitoring system
   Loaded: loaded (/usr/lib/systemd/system/icinga2.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2021-07-18 02:38:19 UTC; 6s ago
  Process: 31290 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/sysconfig/icinga2 (code=exited, status=0/SUCCESS)
 Main PID: 31298 (icinga2)
    Tasks: 13 (limit: 4964)
   Memory: 20.9M
   CGroup: /system.slice/icinga2.service
           ??31298 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
           ??31319 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
           ??31324 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log

2. Successivamente, se SELinux è attivo e funzionante sul sistema centos 8, è necessario installare il pacchetto icinga2-selinux. Ma se SELinux è disabilitato, salta questa parte.

Eseguire il comando seguente per verificare lo stato di SELinux.

sudo sestatus

Se ottieni un output simile al seguente, allora il tuo SELinux è abilitato. Altrimenti, otterrai l'output disabilitato, il che significa che puoi saltare la parte SELinux.

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      32

Ora installa il pacchetto icinga2-selinux usando il comando seguente.

sudo dnf install -y icinga2-selinux

Successivamente, applica la nuova configurazione riavviando il servizio icinga2 e verifica che Icinga sia attivo e funzionante nel contesto SELinux.

sudo systemctl restart icinga2
ps -eZ | grep icinga2

Di seguito è riportato l'output simile che otterrai.

system_u:system_r:icinga2_t:s0    33479 ?        00:00:00 icinga2
system_u:system_r:icinga2_t:s0    33499 ?        00:00:00 icinga2
system_u:system_r:icinga2_t:s0    33504 ?        00:00:00 icinga2

3. Successivamente, installa il backend IDO MySQL per icinga2 utilizzando il seguente comando.

sudo dnf install -y icinga2-ido-mysql

Ora esegui il comando seguente per accedere alla shell MySQL e digita la tua password di root.

sudo mysql -u root -p

Crea un nuovo database e un nuovo utente per il servizio icinga2 utilizzando le query mysql di seguito.

MariaDB [(none)]> CREATE DATABASE icinga;
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'icingapassdb';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit

Ora esegui il comando mysql di seguito per importare lo schema del database icinga2-ido-mysql nel database icinga e digita la password della tua password di root mariadb.

sudo mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql

Successivamente, abilita la funzione icinga2-ido-mysql e riavvia il servizio icinga2 per applicare la nuova configurazione utilizzando i comandi seguenti.

sudo icinga2 feature enable ido-mysql
sudo systemctl restart icinga2

E vedrai un output simile a quello dell'immagine qui sotto.

4. Successivamente, è necessario generare la configurazione e i certificati dell'API REST di icinga2. icingaweb2 richiede che l'API REST invii azioni relative al monitoraggio dei lavori, come controlli di riprogrammazione, dettagli dell'oggetto query, ecc.

Esegui il comando icinga2 di seguito per generare nuovi certificati utente API, configurazione e TLS.

sudo icinga2 api setup

E vedrai un output simile al seguente, il nuovo utente root con password è disponibile nel file di configurazione /etc/icinga2/conf.d/api-users.conf e i certificati TLS sono disponibili in /var/lib/icinga2 cartella /certs/.

information/cli: Generating new CA.
information/base: Writing private key to '/var/lib/icinga2/ca//ca.key'.
information/base: Writing X509 certificate to '/var/lib/icinga2/ca//ca.crt'.
information/cli: Generating new CSR in '/var/lib/icinga2/certs//centos8.csr'.
information/base: Writing private key to '/var/lib/icinga2/certs//centos8.key'.
information/base: Writing certificate signing request to '/var/lib/icinga2/certs//centos8.csr'.
information/cli: Signing CSR with CA and writing certificate to '/var/lib/icinga2/certs//centos8.crt'.
information/pki: Writing certificate to file '/var/lib/icinga2/certs//centos8.crt'.
information/cli: Copying CA certificate to '/var/lib/icinga2/certs//ca.crt'.
information/cli: Adding new ApiUser 'root' in '/etc/icinga2/conf.d/api-users.conf'.
information/cli: Reading '/etc/icinga2/icinga2.conf'.
information/cli: Enabling the 'api' feature.
Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect.
information/cli: Updating 'NodeName' constant in '/etc/icinga2/constants.conf'.
information/cli: Created backup file '/etc/icinga2/constants.conf.orig'.
information/cli: Updating 'ZoneName' constant in '/etc/icinga2/constants.conf'.
information/cli: Backup file '/etc/icinga2/constants.conf.orig' already exists. Skipping backup.
Done.

Now restart your Icinga 2 daemon to finish the installation!

Facoltativamente, per aggiungere manualmente il nuovo utente API, modificare la configurazione /etc/icinga2/conf.d/api-users.conf utilizzando il comando nano editor come di seguito.

sudo nano /etc/icinga2/conf.d/api-users.conf

Incolla la seguente configurazione di esempio come di seguito e assicurati di definire l'utente API, la password e definire l'autorizzazione di cui hai bisogno.

object ApiUser "icingaweb2" {
  password = "Wijsn8Z9eRs5E25d"
  permissions = [ "status/query", "actions/*", "objects/modify/*", "objects/query/*" ]
}

Infine, applica una nuova configurazione riavviando il servizio icinga2 con il seguente comando.

sudo systemctl restart icinga2

Installazione e configurazione di Icingaweb2

Per questa fase, installerai e configurerai l'applicazione web icingaweb2, inclusa la configurazione del database e la generazione del token di installazione.

1. Eseguire il seguente comando per installare i pacchetti icingaweb2.

sudo dnf install -y icingaweb2 icingacli

Durante l'installazione verrà generata la nuova configurazione di apache per icingaweb2. Verificare la nuova configurazione utilizzando il seguente comando.

cat /etc/httpd/conf.d/icingaweb2.conf

Di seguito è la configurazione che vedrai.

Alias /icingaweb2 "/usr/share/icingaweb2/public"

# Remove comments if you want to use PHP FPM and your Apache version is older than 2.4
#<IfVersion < 2.4>
#    # Forward PHP requests to FPM
#    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
#    <LocationMatch "^{urlPath}/(.*\.php)$">
#        ProxyPassMatch "fcgi://127.0.0.1:9000/{documentRoot}/$1"
#    </LocationMatch>
#</IfVersion>

<Directory "/usr/share/icingaweb2/public">
    Options SymLinksIfOwnerMatch
    AllowOverride None
.......

Per applicare la nuova configurazione, riavviare il servizio apache/httpd utilizzando il comando seguente.

sudo systemctl restart httpd

2. Successivamente, digita il seguente comando per accedere alla shell mysql.

sudo mysql -u root -p

Esegui alcune query mysql di seguito per creare un nuovo database e un nuovo utente per icingaweb2.

MariaDB [(none)]> CREATE DATABASE icingaweb2;
MariaDB [(none)]> GRANT ALL ON icingaweb2.* TO IDENTIFIED BY 'icingaweb2passdb';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit

3. Successivamente, generare il token di installazione icingaweb2 per l'installazione nella fase successiva utilizzando il seguente comando.

sudo icingacli setup token create
sudo icingacli setup token show

Ti verrà mostrato come il seguente output. Assicurati di copiare il token di installazione di icinga2 nella tua nota.

# Generated setup token
The newly generated setup token is: 41e33db4cf0c5617

# Show generated token
The current setup token is: 41e33db4cf0c5617

Configurazione di Icinga Web 2 tramite l'interfaccia web

Ora, apri il tuo browser web e l'URL http://SERVER-IP/icingaweb2/setup, e otterrai la pagina di installazione di icinga2.

1. Incollare il token di installazione di icingaweb2 sulla casella e fare clic su Avanti.

2. Qui, lascia i moduli Icinga come predefiniti e fai clic su Avanti.

3. Ora assicurati che tutti i requisiti di sistema di icingaweb2 abbiano i colori \\verde\\, quindi fai clic sul pulsante Avanti.

4. Lasciare l'autenticazione back-end come Database predefinito e fare clic su Avanti.

5. Digitare il nome del database, il nome utente e la password per icingaweb2 e fare di nuovo clic su Avanti.

6. Lasciare il nome del back-end di autenticazione come predefinito icingaweb2 e fare clic su Avanti.

7. Digitare ora la nuova amministrazione di utenti e password, quindi fare clic su Avanti.

8. Lasciare la configurazione dell'applicazione e del registro come predefinita, quindi fare clic su Avanti.

9. Ricontrolla tutte le configurazioni, quindi fai clic su Avanti per continuare.

10. Fare clic su Avanti per configurare i moduli di monitoraggio icinga2.

11. Digitare il nome del database, il nome utente e la password per icinga2-ido-mysql, quindi fare clic sul pulsante Convalida configurazione.

Se hai un errore come Al momento non c'è nessuna istanza icinga che scrive sull'IDO. Assicurati che un'istanza icinga sia configurata e in grado di scrivere sull'IDO, tornare al tuo terminale e modificare la configurazione manualmente.

Eseguire il seguente comando per modificare la configurazione IDO.

sudo nano /etc/icinga2/features-available/ido-mysql.conf

Copia e incolla la configurazione di ido mysql come di seguito.

object IdoMysqlConnection "ido-mysql" {
user = "icinga", password = "icingapassdb", host = "localhost", database = "icinga" }

Ora premi Ctrl + x poi y quindi invio per salvare il file.

Successivamente, riavvia il servizio Icinga2 utilizzando il seguente comando.

sudo systemctl restart icinga2

Ora torna al browser Web e abilita l'opzione Salta convalida, quindi fai di nuovo clic su Avanti.

12. Scegliere ora il tipo di trasporto File di comando locale e fare clic su Avanti.

13. Lasciare la configurazione di sicurezza del monitoraggio come predefinita e fare clic su Avanti.

14. Ricontrolla la configurazione dell'installazione di Icinga e fai clic su Fine per continuare.

15. Quando l'installazione ha esito positivo, otterrai l'output come nell'immagine qui sotto. Quindi fare clic sul pulsante Accedi a Icinga Web 2.

Verificare l'installazione di Icinga 2 e Icinga Web 2

1. Digitare l'utente e la password dell'amministratore di Icinga, quindi fare clic sul pulsante Accedi.

2. Ora otterrai una pagina simile alla seguente.

Come puoi vedere sulla dashboard, ci sono alcuni servizi rilevati automaticamente dallo strumento di monitoraggio icinga2. I servizi con il colore verde indicano salute e i servizi con il colore giallo indicano un avviso da controllare. E i servizi di errore avranno i colori rossi.

Conclusione

Al termine del tutorial, hai appreso l'installazione e la configurazione dello strumento di monitoraggio icinga2 sull'ultimo server CentOS 8 con LAMP Stack. L'installazione di icinga2 richiede che tu ti concentri su ogni fase e la cosa più importante è che tu sappia cosa stai facendo, non eseguendo ciecamente i comandi.