AlmaLinux - Centreon - Monitoring

Installare Centreon 25.10 su AlmaLinux su singolo server

Centreon è una piattaforma di monitoring open source che permette di monitorare infrastrutture di rete, sistemi e applicazioni attraverso un’interfaccia web intuitiva, con notifiche configurabili, gestione delle soglie di allarme e supporto per ambienti complessi con centinaia di host.

In questa guida vedremo come installare Centreon su un singolo server che va bene per piccole / medie installazioni. Nel caso di un numero elevato di hosts da monitorare è necessario separare i vari ruoli su più server in modo da distribuirne il carico. Ad esempio

  • un server dedicato per il database
  • un server con il ruolo di Central Poller
  • uno o più server con il ruolo di Remote Poller per il monitoraggio dei servizi

Aggiornamento del sistema

Il primo passo è aggiornare i pacchetti del sistema operativo

dnf -y update

Durante l’installazione, SELinux deve essere disabilitato per evitare conflitti. Sarà possibile riabilitarlo in modalità permissiva al termine del setup

sed -i s/^SELINUX=.*$/SELINUX=disabled/ /etc/selinux/config

Dopo il riavvio, verificare lo stato

getenforce

# Output del comando
Disabled

Nota di sicurezza: Dopo l’installazione, è necessario riabilitare SELinux in modalità enforced.

Centreon 25.10 richiede i repository EPEL e CodeReady Builder (CRB)

dnf install -y dnf-plugins-core
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
dnf config-manager --set-enabled crb

Possiamo ora installare il repository ufficiale di Centreon per AlmaLinux

dnf config-manager --add-repo https://packages.centreon.com/rpm-standard/25.10/el9/centreon-25.10.repo
dnf clean all --enablerepo=*
dnf update

A questo punto dobbiamo abilitare il modulo PHP 8.2, necessario per il funzionamento di Centreon 25.10

dnf module reset php -y
dnf module enable php:8.2 -y

Siamo ora pronti per l’installazione.

Installazione di Centreon

Per l’installazione possiamo utilizzare il pacchetto centreon-mariadb e centreon che includono tutto il necessario: Centreon, Apache, PHP 8.2 e MariaDB, in un unico comando

dnf install -y centreon-mariadb centreon

Completata l’installazione, dobbiamo impostare il fuso orario corretto per PHP. Modificare il file /etc/php.d/50-centreon.ini

echo "date.timezone = Europe/Rome" >> /etc/php.d/50-centreon.ini

Per una lista completa delle Timezone è possibile consultare la pagina della documentazione di PHP

Se firewalld è attivo, aprire la porta 80 (HTTP) e la 443 (HTTPS)

firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --zone=public --add-service=https --permanent
firewall-cmd --reload

Ora abilitiamo e avviamo tutti i servizi necessari al funzionamento di Centreon

systemctl daemon-reload

systemctl enable --now mariadb
systemctl enable --now php-fpm
systemctl enable --now httpd
systemctl enable --now cbd
systemctl enable --now centreon
systemctl enable --now centengine
systemctl enable --now gorgoned
systemctl enable --now snmptrapd
systemctl enable --now centreontrapd
systemctl enable --now snmpd

e verifichiamo che tutti i servizi siano in esecuzione

systemctl status httpd php-fpm mariadb centreon

Se i servizi risultano tutto avviati siamo quasi pronti per configurare Centreon dall’interfaccia WEB. Ma prima dobbiamo eseguire lo script di MySQL per mettere in sicurezza l’istanza

mysql_secure_installation

Verranno proposte alcune domande e di seguito le opzioni da scegliere

  • Enter current password for root (enter for none):
  • Switch to unix_socket authentication [Y/n] N
  • Change the root password? [Y/n] Y
  • Remove anonymous users? [Y/n] Y
  • Disallow root login remotely? [Y/n] Y
  • Remove test database and access to it? [Y/n] Y
  • Reload privilege tables now? [Y/n] Y

Ora apriamo un browser ed inserire la seguente URL

http://<ServerName>/centreon

Al primo accesso verrà visualizzato il wizard di installazione

Wizard installazione Centreon 25.10Alla schermata di Benvenuto, premere “Next
Wizard installazione Centreon 25.10Il sistema verifica che tutti i moduli PHP siano presenti. Se tutto è verde, cliccare su “Next
Wizard installazione Centreon 25.10Informazione su path dei vari moduli di Centreon. Lasciare i parametri di default e cliccare su “Next
Wizard installazione Centreon 25.10Anche in questa schermata lasciare i valori di default e premere “Next
Wizard installazione Centreon 25.10Impostare la password dell’utente amministratore (admin) ed i relativi dati. Tutti i campi sono obbligatori. Premere “Next
Wizard installazione Centreon 25.10Informazioni per la connessione al Database. Se l’istanza è sullo stesso server inseriamo “localhost” oppure l’indirizzo IP o il nome FQDN del server e la porta 3306

Inserire la password dell’utente “root” necessaria per la creazione del database e scegliere una password sicura per l’utente “centreon” che utilizzerà il database creato

Premere “Next
Wizard installazione Centreon 25.10Il wizard creerà le tabelle del database e completerà la configurazione. Se tutte le voci saranno completate correttamente premere “Next
Wizard installazione Centreon 25.10Viene visualizzata la lista dei moduli aggiuntivi. Premere “Next
Wizard installazione Centreon 25.10Centreon è ora installato, Cliccare su “Finish” per andare alla schermata di login
Wizard installazione Centreon 25.10Entrare con le credenziali create al punto 5 del wizard di installazione per accedere alla pagina principale del sistema

Centreon è ora pronto per essere utilizzato e per monitorare gli hosts.

Configurazione HTTPS

Esporre Centreon su HTTPS è fortemente consigliato, anche in ambienti interni, per proteggere le credenziali di accesso e il traffico API.

Se si dispone di una Certification Authority interna generare il CSR e la chiave privata (qui una guida) per ottenere il certificato. In alternativa possiamo generare un certificato Self-Signed.

Installiamo mod_ssl

dnf install -y mod_ssl openssl

Generiamo il certificato self-signed (nell’esempio valido 365 giorni)

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/pki/tls/private/centreon.key \
  -out /etc/pki/tls/certs/centreon.crt \
  -subj "/C=IT/ST=Italia/L=Milano/O=MyCompany/CN=centreon.domain.local"

Impostiamo i permessi corretti ai file generati

chmod 600 /etc/pki/tls/private/centreon.key
chmod 644 /etc/pki/tls/certs/centreon.crt

Ora dobbiamo adattare la configurazione di Apache. Per prima cosa rimuoviamo il file /etc/httpd/conf.d/ssl.conf creato di default in quanto andremo a gestire la parte SSL nei nuovi file che creeremo

mv /etc/httpd/conf.d/ssl.conf /root

Editiamo il file /etc/httpd/conf/httpd.conf aggiungendo dopo la riga “Listen 80” la porta 443

Listen 80
Listen 443 https

Creiamo il file /etc/httpd/conf.d/centreon-ssl.conf con il seguente contenuto

Define base_uri "/centreon"
Define install_dir "/usr/share/centreon"

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile      /etc/pki/tls/certs/centreon.crt
    SSLCertificateKeyFile   /etc/pki/tls/private/centreon.key

    SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
    SSLHonorCipherOrder     off
    SSLSessionTickets       off

    Header set X-Frame-Options: "sameorigin"
    Header always edit Set-Cookie ^(.*)$ $1;HttpOnly;SameSite=Strict
    Header always set Strict-Transport-Security "max-age=63072000"
    ServerSignature Off
    TraceEnable Off

    Alias ${base_uri}/api ${install_dir}
    Alias ${base_uri} ${install_dir}/www/

    <IfModule mod_brotli.c>
        AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/xml text/css text/javascript application/javascript application/json
    </IfModule>

    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json

    <LocationMatch ^\${base_uri}/?(?!api/latest/|api/beta/|api/v[0-9]+/|api/v[0-9]+\.[0-9]+/)(.*\.php(/.*)?)$>
        ProxyPassMatch "fcgi://127.0.0.1:9042${install_dir}/www/$1"
    </LocationMatch>

    <LocationMatch ^\${base_uri}/?(authentication|api/(latest|beta|v[0-9]+|v[0-9]+\.[0-9]+))/.*$>
        ProxyPassMatch "fcgi://127.0.0.1:9042${install_dir}/api/index.php/$1"
    </LocationMatch>

    ProxyTimeout 300
    ErrorDocument 404 ${base_uri}/index.html
    Options -Indexes +FollowSymLinks

    <IfModule mod_security2.c>
        SecRuleRemoveById 200003
    </IfModule>

    <Directory "${install_dir}/www">
        DirectoryIndex index.php
        AllowOverride none
        Require all granted
        FallbackResource ${base_uri}/index.html
    </Directory>

    <Directory "${install_dir}/api">
        AllowOverride none
        Require all granted
    </Directory>

    <If "'${base_uri}' != '/'">
        RedirectMatch ^/$ ${base_uri}
    </If>
</VirtualHost>

Per forzare tutto il traffico su HTTPS, aggiungere un redirect permanente sulla porta 80. Per farlo creiamo il file /etc/httpd/conf.d/10-centreon-redirect.conf con il seguente contenuto

<VirtualHost *:80>
    ServerName centreon.domain.local
    Redirect permanent / https://centreon.domain.local/
</VirtualHost>

Verifichiamo che la sintassi della configurazione di Apache sia corretta

apachectl configtest

e se l’output è “Syntax OK” riavviamo il servizio

systemctl restart httpd

Riavviare anche i servizi principali di Centreon in modo che riconosca la nuova base_url in https

systemctl restart cbd centreon gorgoned

Ora, navigando su https://centreon.domain.local/ avremo il lucchetto nella barra degli indirizzi che confermerà la connessione cifrata.

Con un certificato self-signed, il browser mostrerà un avviso di sicurezza che è possibile ignorare per proseguire. Nella barra degli indirizzi avremo “Non sicuro” ma la connessione è cifrata. Per ambienti di produzione è consigliato generare i certificati firmati da una Certification Authority riconosciuta e valida.

Riattivazione di SELinux

All’inizio della guida abbiamo disabilitato SELinux per permettere l’installazione senza conflitti. Ora che Centreon è operativo, è buona pratica riabilitarlo almeno in modalità permissive che registra le violazioni nei log senza bloccarle, utile per identificare eventuali problemi prima di passare alla modalità enforcing.

sed -i s/^SELINUX=.*$/SELINUX=permissive/ /etc/selinux/config

Se dopo alcuni giorni di utilizzo i log non mostrano violazioni bloccanti, è possibile passare alla modalità enforcing

# Controlla le violazioni SELinux registrate
ausearch -m avc -ts recent 2>/dev/null | audit2allow 2>/dev/null

# Passa a modalità enforced senza riavviare
setenforce 1

# Rende la modifica permanente
sed -i s/^SELINUX=.*$/SELINUX=enforcing/ /etc/selinux/config

In caso di problemi, tornare temporaneamente alla modalità permissive con setenforce 0 e consultare i log con journalctl -xe per identificare le policy da sistemare.

Conclusione

Nei prossimi articoli vedremo come sfruttare al meglio Centreon, esplorando le funzionalità che lo rendono uno strumento così potente. Tra le cose che affronteremo: aggiungere host e servizi, utilizzare i connectors, configurare le notifiche, creare le dashboard, …

Saranno visibili nella category “centreon“!