Supervision Centreon avec Centreon Monitoring Agent (CMA)

Installation et Chiffrement du Centreon Monitoring Agent (CMA) sur Red Hat Enterprise Linux 9

Dans ce tutoriel complet, nous allons explorer l’installation et la configuration du Centreon Monitoring Agent (CMA) sur Red Hat Enterprise Linux 9 (ainsi que ses clones comme AlmaLinux ou Rocky Linux). Nous couvrirons non seulement l’installation de base, mais également la mise en place d’un chiffrement TLS avec Let’s Encrypt, la gestion de SELinux, le renouvellement automatique des certificats, et la création de sondes personnalisées.

CMA représente l’évolution moderne de la supervision Centreon. Contrairement à NRPE, il fonctionne en mode passif : l’agent envoie activement les données de supervision au collecteur (poller), offrant ainsi une meilleure sécurité et des performances accrues. Le protocole utilisé est OTLP (OpenTelemetry Protocol) sur gRPC, garantissant une communication efficace et sécurisée.

Note importante : Ce tutoriel est basé sur Centreon 24.10. L’utilisation de CMA nécessite une licence IT-100 active dans votre plateforme Centreon. Toutes les commandes sont adaptées pour RHEL 9 et utilisent le gestionnaire de paquets dnf.

Ce tutoriel est principalement validé sur Centreon 24.10 LTS. Pour 25.10+, consultez la doc officielle pour les évolutions (encryption « full », etc.).

Différences entre versions :

  • Centreon 24.10 : Utilise "encryption": true ou false
  • Centreon 25.10+ : Utilise "encryption": "full", "insecure" ou false
  • Token d’authentification : Fortement recommandé en 24.10, obligatoire en 25.10+ avec chiffrement
  • Le champ ca_name a été renommé en ca_common_name depuis la version 24.10

Prérequis

  • Un serveur Centreon 24.10+ installé sur RHEL 9 (serveur central et poller)
  • Un ou plusieurs hôtes à superviser sous RHEL 9
  • Accès root (ou sudo) sur toutes les machines
  • Licence IT-100 intégrée dans Centreon (via Administration > Licences)
  • Un nom de domaine valide pointant vers votre poller (pour Let’s Encrypt)
  • Port 80/TCP et 443/TCP ouverts temporairement pour la validation Let’s Encrypt
  • Port 4317/TCP ouvert sur le poller pour la communication OTLP
  • Connexion Internet sur le poller et les agents

Étape 1 : Configuration Initiale du Serveur Centreon (Interface Web)

Ces opérations se réalisent depuis l’interface web de Centreon.

1.1 Installation du Connecteur de Supervision

  1. Connectez-vous à l’interface web de Centreon
  2. Naviguez vers Configuration > Packs de plugins > Gestionnaire
  3. Dans la barre de recherche, tapez Linux Centreon Monitoring Agent
  4. Cliquez sur le pack OS-Linux-Centreon-Monitoring-Agent
  5. Cliquez sur Installer puis confirmez

1.2 Configuration de la Communication Collecteur/Agent

  1. Allez dans Configuration > Collecteurs > Configurations d’agent
  2. Cliquez sur + Ajouter
  3. Nommez la configuration (par exemple : CMA-Default)
  4. Pour l’instant, laissez le chiffrement désactivé (nous l’activerons plus tard)
  5. Cliquez sur Sauvegarder

1.3 Ajout des Modèles de Services

  1. Rendez-vous dans Configuration > Commandes > Connecteurs
  2. Sélectionnez Centreon Monitoring Agent dans le menu déroulant
  3. Dans le filtre, recherchez OS-Linux-Centreon-Monitoring-Agent
  4. Sélectionnez tous les modèles proposés (CPU, Memory, Disk, etc.)
  5. Cliquez sur Sauvegarder

1.4 Création de l’Hôte Supervisé

  1. Allez dans Configuration > Hôtes > Hôtes
  2. Cliquez sur Ajouter
  3. Remplissez les informations :
    • Nom : Le nom de votre serveur (ex: srv-web-01)
    • Alias : Description de l’hôte
    • Adresse IP/DNS : L’IP ou le FQDN de l’hôte
    • Modèles : Sélectionnez OS-Linux-Centreon-Monitoring-Agent-custom
    • Collecteur : Choisissez votre poller
  4. Cliquez sur Sauvegarder

1.5 Export de la Configuration

  1. Allez dans Configuration > Collecteurs > Collecteurs
  2. Sélectionnez votre poller
  3. Cochez toutes les options d’export
  4. Cliquez sur Exporter
  5. Attendez la fin de l’export

Étape 2 : Installation de l’Agent sur l’Hôte Supervisé

Connectez-vous en SSH sur l’hôte à superviser avec les privilèges root.

2.1 Mise à Jour du Système

dnf update -y

2.2 Installation des Prérequis

dnf install -y dnf-plugins-core ca-certificates curl gpg wget

2.3 Ajout des Repositories Centreon

dnf config-manager --add-repo https://packages.centreon.com/rpm-standard/24.10/el9/centreon-24.10.repo
dnf config-manager --add-repo https://packages.centreon.com/rpm-plugins/24.10/el9/centreon-plugins-24.10.repo

2.4 Import de la Clé GPG Centreon

rpm --import https://packages.centreon.com/centreon.gpg

Note : La clé GPG peut également être référencée automatiquement via le fichier .repo (ligne gpgkey=). La commande ci-dessus force l’import manuel.

2.5 Installation de l’Agent CMA

dnf clean all
dnf update
dnf install -y centreon-monitoring-agent centreon-plugin-operatingsystems-linux-local

2.6 Activation et Démarrage du Service

systemctl enable centagent
systemctl start centagent
systemctl status centagent

Étape 3 : Configuration de Base de l’Agent

3.1 Configuration du Fichier centagent.json

Éditez le fichier de configuration de l’agent :

vi /etc/centreon-monitoring-agent/centagent.json

Remplacez le contenu par :

{
  "log_file": "/var/log/centreon-monitoring-agent/centagent.log",
  "log_level": "info",
  "log_type": "file",
  "log_max_file_size": 10,
  "log_max_files": 3,
  "endpoint": "<IP_DU_POLLER>:4317",
  "encryption": false,
  "token": "",
  "public_cert": "",
  "private_key": "",
  "ca": "",
  "ca_common_name": "",
  "host": "<NOM_HOTE_DANS_CENTREON>",
  "reversed_grpc_streaming": false
}

Attention : Remplacez :

  • <IP_DU_POLLER> par l’adresse IP ou le FQDN de votre poller
  • <NOM_HOTE_DANS_CENTREON> par le nom exact de l’hôte créé dans Centreon (respectez la casse)

Note : Le champ token est laissé vide pour cette configuration initiale sans chiffrement. Il sera renseigné plus tard lors de l’activation du TLS.

3.2 Redémarrage de l’Agent

systemctl restart centagent

3.3 Vérification des Logs

tail -f /var/log/centreon-monitoring-agent/centagent.log

Vous devriez voir des messages indiquant que l’agent tente de se connecter au poller.

Étape 4 : Configuration du Pare-feu

4.1 Sur le Poller

Ouvrez le port OTLP (4317/TCP) :

firewall-cmd --permanent --add-port=4317/tcp
firewall-cmd --reload
firewall-cmd --list-ports

4.2 Sur l’Agent (Sortant)

Normalement, aucune configuration n’est nécessaire pour les connexions sortantes. Si vous avez un pare-feu restrictif :

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" destination address="<IP_DU_POLLER>" port port="4317" protocol="tcp" accept'
firewall-cmd --reload

Étape 5 : Installation et Configuration de Let’s Encrypt

Nous allons maintenant sécuriser la communication entre l’agent et le poller avec un certificat Let’s Encrypt.

5.1 Installation de Certbot sur le Poller

dnf install -y certbot

5.2 Génération du Certificat Let’s Encrypt

Méthode 1 : Standalone (si aucun serveur web n’écoute sur le port 80)

certbot certonly --standalone -d <FQDN_DU_POLLER> --email <VOTRE_EMAIL> --agree-tos --non-interactive

Méthode 2 : Webroot (si Apache ou Nginx est déjà installé)

certbot certonly --webroot -w /var/www/html -d <FQDN_DU_POLLER> --email <VOTRE_EMAIL> --agree-tos --non-interactive

Remplacez <FQDN_DU_POLLER> par le nom de domaine complet de votre poller (ex: poller.example.com).

5.3 Création de la Structure de Répertoires

mkdir -p /etc/pki/centreon
chown root:root /etc/pki/centreon
chmod 755 /etc/pki/centreon

5.4 Copie des Certificats

cp /etc/letsencrypt/live/<FQDN_DU_POLLER>/privkey.pem /etc/pki/centreon/private_key.key
cp /etc/letsencrypt/live/<FQDN_DU_POLLER>/fullchain.pem /etc/pki/centreon/public_cert.crt

5.5 Attribution des Droits

chown centreon-engine:centreon-engine /etc/pki/centreon/public_cert.crt
chown centreon-engine:centreon-engine /etc/pki/centreon/private_key.key
chmod 644 /etc/pki/centreon/public_cert.crt
chmod 600 /etc/pki/centreon/private_key.key

Note : Dans les versions récentes (24.10+ et 25.10), c’est le module OpenTelemetry intégré à Centreon Engine qui lit ces certificats. Le propriétaire attendu est centreon-engine:centreon-engine. Vous pouvez vérifier quel processus écoute sur le port 4317 avec : ss -tulnp | grep 4317

5.6 Configuration du Chiffrement dans Centreon

  1. Retournez dans Configuration > Collecteurs > Configurations d’agent
  2. Éditez votre configuration CMA
  3. Activez Chiffrement
  4. Renseignez les chemins :
    • Certificat public : /etc/pki/centreon/public_cert.crt
    • Clé privée : /etc/pki/centreon/private_key.key
  5. Sauvegardez
  6. Exportez à nouveau la configuration du collecteur

5.7 Redémarrage du Service Engine

systemctl restart centengine

Étape 6 : Configuration du Chiffrement sur l’Agent

6.1 Installation des Certificats Racine

Sur l’hôte supervisé :

dnf install -y ca-certificates
update-ca-trust

6.2 Modification de la Configuration de l’Agent

Éditez le fichier /etc/centreon-monitoring-agent/centagent.json :

vi /etc/centreon-monitoring-agent/centagent.json

Modifiez les paramètres suivants :

{
  "log_file": "/var/log/centreon-monitoring-agent/centagent.log",
  "log_level": "info",
  "log_type": "file",
  "log_max_file_size": 10,
  "log_max_files": 3,
  "endpoint": "<FQDN_DU_POLLER>:4317",
  "encryption": true,
  "public_cert": "",
  "private_key": "",
  "ca": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem",
  "ca_common_name": "<FQDN_DU_POLLER>",
  "host": "<NOM_HOTE_DANS_CENTREON>",
  "reversed_grpc_streaming": false
}

Points importants :

  • encryption doit être à true (pour Centreon 24.10)
  • Pour Centreon 25.10+ : utiliser "encryption": "full" au lieu de true
  • endpoint doit utiliser le FQDN (pas l’IP) pour la validation du certificat
  • ca_common_name doit correspondre au CN du certificat (généralement le FQDN du poller)
  • Avec Let’s Encrypt, le champ ca_common_name est souvent optionnel car le certificat est déjà dans le trust store du système. Vous pouvez le laisser vide ("") ou l’omettre complètement.

Version 25.10+ : Le paramètre encryption accepte désormais les valeurs : "full" (TLS complet avec vérification), "insecure" (TLS sans vérification – déconseillé), ou false (pas de chiffrement). Préférez toujours "full".

6.3 Configuration du Token d’Authentification

Important : À partir de Centreon 24.10, et obligatoire en 25.10, l’utilisation d’un token d’authentification est fortement recommandée pour sécuriser la communication.

6.3.1 Génération du Token dans Centreon

  1. Dans Centreon, Allez dans Administration > Authentication tokens, créez un token de type Centreon Monitoring Agent (choisissez une expiration ou aucune), copiez-le.
  2. Dans Configuration > Collecteurs > Configurations d’agent, éditez votre config CMA, activez le chiffrement, collez le token dans le champ Authentication token si l’UI le demande, sauvegardez et exportez.
  3. Copiez ce token (il ressemble à : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
  4. Sauvegardez

6.3.2 Ajout du Token dans centagent.json

Ajoutez le champ token dans votre fichier de configuration :

{
  "log_file": "/var/log/centreon-monitoring-agent/centagent.log",
  "log_level": "info",
  "log_type": "file",
  "log_max_file_size": 10,
  "log_max_files": 3,
  "endpoint": "<FQDN_DU_POLLER>:4317",
  "encryption": true,
  "token": "<VOTRE_TOKEN_GENERE>",
  "public_cert": "",
  "private_key": "",
  "ca": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem",
  "ca_common_name": "",
  "host": "<NOM_HOTE_DANS_CENTREON>",
  "reversed_grpc_streaming": false
}

Note : Le token est obligatoire dès que le chiffrement est activé sur le poller. Sans token valide, l’agent ne pourra pas s’authentifier.

6.4 Redémarrage de l’Agent

systemctl restart centagent
systemctl status centagent

6.5 Vérification de la Connexion Chiffrée

tail -f /var/log/centreon-monitoring-agent/centagent.log

Vous devriez voir des messages confirmant la connexion TLS réussie.

Étape 7 : Renouvellement Automatique des Certificats Let’s Encrypt

Let’s Encrypt génère des certificats valables 90 jours. Il est crucial de mettre en place un renouvellement automatique.

7.1 Test du Renouvellement

certbot renew --dry-run

Cette commande simule le renouvellement. Si tout fonctionne, vous verrez un message de succès.

7.2 Création d’un Script de Post-Renouvellement

Créez le script suivant pour copier automatiquement les certificats après renouvellement :

vi /etc/letsencrypt/renewal-hooks/post/centreon-cert-update.sh

Ajoutez le contenu suivant :

#!/bin/bash

DOMAIN="<FQDN_DU_POLLER>"
CERT_DIR="/etc/pki/centreon"

# Copie des nouveaux certificats
cp /etc/letsencrypt/live/$DOMAIN/privkey.pem $CERT_DIR/private_key.key
cp /etc/letsencrypt/live/$DOMAIN/fullchain.pem $CERT_DIR/public_cert.crt

# Attribution des droits
chown centreon-engine:centreon-engine $CERT_DIR/public_cert.crt
chown centreon-engine:centreon-engine $CERT_DIR/private_key.key
chmod 644 $CERT_DIR/public_cert.crt
chmod 600 $CERT_DIR/private_key.key

# Redémarrage de Centreon Engine
# Note: Sur certaines versions récentes, un reload suffit
# systemctl reload centengine
systemctl restart centengine

# Optionnel: Redémarrage du broker si nécessaire
# systemctl restart cbd

# Log
echo "$(date): Certificats Centreon mis à jour et service redémarré" >> /var/log/centreon-cert-renewal.log

Restart vs Reload : Sur les versions 25.10+, un simple reload peut suffire pour recharger les certificats sans interruption de service. Testez d’abord avec reload, et si cela ne fonctionne pas, utilisez restart. Le restart provoque une courte interruption de la collecte.

Rendez le script exécutable :

chmod +x /etc/letsencrypt/renewal-hooks/post/centreon-cert-update.sh

7.3 Configuration du Timer Systemd (Vérification)

Certbot installe automatiquement un timer systemd. Vérifiez qu’il est actif :

systemctl list-timers | grep certbot

Si le timer n’est pas présent, créez-le manuellement :

systemctl enable certbot-renew.timer
systemctl start certbot-renew.timer

7.4 Test Complet du Renouvellement

certbot renew --force-renewal

Attention : Cette commande force le renouvellement même si le certificat n’a pas expiré. À utiliser uniquement pour tester.

Vérifiez ensuite que les certificats ont bien été copiés et que le service a redémarré :

ls -l /etc/pki/centreon/
systemctl status centengine
cat /var/log/centreon-cert-renewal.log

Étape 8 : Gestion de SELinux

SELinux (Security-Enhanced Linux) est un module de sécurité du noyau Linux. Bien qu’il soit souvent désactivé en production, il est important de savoir le configurer correctement.

8.1 Vérification de l’État de SELinux

getenforce

Résultats possibles :

  • Enforcing : SELinux est actif et applique les règles
  • Permissive : SELinux est actif mais ne fait que journaliser les violations
  • Disabled : SELinux est désactivé

8.2 Configuration pour CMA avec SELinux Actif

Si SELinux est en mode Enforcing ou Permissive, vous devrez autoriser certaines opérations.

8.2.1 Sur le Poller

Autorisez Centreon Engine à lire les certificats :

semanage fcontext -a -t cert_t "/etc/pki/centreon(/.*)?"
restorecon -Rv /etc/pki/centreon

Si semanage n’est pas installé :

dnf install -y policycoreutils-python-utils

Autorisez Centreon Engine à écouter sur le port 4317 :

semanage port -a -t centreon_engine_port_t -p tcp 4317

8.2.2 Sur l’Agent

Autorisez l’agent à se connecter au port 4317 distant :

setsebool -P nis_enabled 1

Ou de manière plus spécifique :

semanage port -a -t http_port_t -p tcp 4317

8.2.3 Vérification des Violations SELinux

Si vous rencontrez des problèmes, consultez les logs SELinux :

ausearch -m avc -ts recent
grep "denied" /var/log/audit/audit.log | tail -20

Pour générer automatiquement une règle à partir des violations :

ausearch -m avc -ts recent | audit2allow -M centreon_cma
semodule -i centreon_cma.pp

8.3 Désactivation de SELinux (Non Recommandé)

Si vous souhaitez désactiver SELinux (déconseillé en production) :

vi /etc/selinux/config

Modifiez la ligne :

SELINUX=disabled

Puis redémarrez le serveur :

reboot

Alternative temporaire (sans redémarrage) :

setenforce 0

Cette commande passe SELinux en mode Permissive jusqu’au prochain redémarrage.

Étape 9 : Création d’une Sonde Personnalisée

Les sondes personnalisées vous permettent d’étendre les capacités de supervision de CMA selon vos besoins spécifiques.

9.1 Création de la Structure de Répertoires

Sur l’hôte supervisé, créez le répertoire pour les sondes :

mkdir -p /opt/centreon/sondes
chown root:root /opt/centreon/sondes
chmod 755 /opt/centreon/sondes

9.2 Exemple de Sonde : Vérification de l’Espace Disque

Créez le script de sonde :

vi /opt/centreon/sondes/check_disk_custom.sh

Ajoutez le contenu suivant :

#!/bin/bash
# Sonde personnalisée pour vérifier l'espace disque disponible
# Format de sortie Centreon : STATUS NomService - MESSAGE | PERFDATA

# Variables d'entrée
PARTITION="${1:-/}"           # Si $1 n’est pas défini c'est /
SEUIL_WARNING="${2:-20}"      # Si $2 n’est pas défini c'est 20 en Go
SEUIL_CRITIQUE="${3:-10}"     # Si $3 n’est pas défini c'est 10 en Go

# Récupération de l'espace disponible en Go
ESPACE_DISPONIBLE=$(df -BG "$PARTITION" | tail -1 | awk '{print $4}' | sed 's/G//')

# Récupération de l'utilisation en pourcentage
UTILISATION_PCT=$(df "$PARTITION" | tail -1 | awk '{print $5}' | sed 's/%//')

# Logique de vérification
if [ "$ESPACE_DISPONIBLE" -lt "$SEUIL_CRITIQUE" ]; then
    echo "2 Disque_Custom - CRITICAL - Espace disponible: ${ESPACE_DISPONIBLE}Go (${UTILISATION_PCT}% utilisé) sur $PARTITION | libre=${ESPACE_DISPONIBLE}G;${SEUIL_WARNING};${SEUIL_CRITIQUE};0 utilisation=${UTILISATION_PCT}%;80;90;0;100"
    exit 2
elif [ "$ESPACE_DISPONIBLE" -lt "$SEUIL_WARNING" ]; then
    echo "1 Disque_Custom - WARNING - Espace disponible: ${ESPACE_DISPONIBLE}Go (${UTILISATION_PCT}% utilisé) sur $PARTITION | libre=${ESPACE_DISPONIBLE}G;${SEUIL_WARNING};${SEUIL_CRITIQUE};0 utilisation=${UTILISATION_PCT}%;80;90;0;100"
    exit 1
else
    echo "0 Disque_Custom - OK - Espace disponible: ${ESPACE_DISPONIBLE}Go (${UTILISATION_PCT}% utilisé) sur $PARTITION | libre=${ESPACE_DISPONIBLE}G;${SEUIL_WARNING};${SEUIL_CRITIQUE};0 utilisation=${UTILISATION_PCT}%;80;90;0;100"
    exit 0
fi

Rendez le script exécutable :

chmod +x /opt/centreon/sondes/check_disk_custom.sh

9.3 Test Manuel de la Sonde

/opt/centreon/sondes/check_disk_custom.sh / 20 10

Vous devriez voir une sortie du type :

0 Disk_Custom - OK - Espace disponible: 45Go (35% utilisé) sur / | libre=45G;20;10;0 usage=35%;80;90;0;100

9.4 Autre Exemple : Vérification d’un Processus

vi /opt/centreon/sondes/check_process_httpd.sh
#!/bin/bash
# Sonde personnalisée pour vérifier l'existence d'un processus
# Format de sortie Centreon : STATUS ServiceName - MESSAGE | PERFDATA

# Nom du processus à vérifier
# Si $1 n'est pas défini, la valeur par défaut est 'httpd'
NOM_PROCESSUS="${1:-httpd}"

# Nombre d'instances du processus en cours d'exécution
NOMBRE_INSTANCES=$(pgrep -c "$NOM_PROCESSUS")

# Seuils pour les alertes (optionnel : ici exemple fixe)
SEUIL_WARNING=2
SEUIL_CRITIQUE=1

# Logique de vérification
if [ "$NOMBRE_INSTANCES" -eq 0 ]; then
    echo "Processus HTTPD - CRITICAL - Processus '$NOM_PROCESSUS' non trouvé | count=0;$SEUIL_WARNING;$SEUIL_CRITIQUE;0"
    exit 2
elif [ "$NOMBRE_INSTANCES" -lt "$SEUIL_WARNING" ]; then
    echo "Processus HTTPD - WARNING - Seulement $NOMBRE_INSTANCES instance(s) de '$NOM_PROCESSUS' | count=$NOMBRE_INSTANCES;$SEUIL_WARNING;$SEUIL_CRITIQUE;0"
    exit 1
else
    echo "Processus HTTPD - OK - $NOMBRE_INSTANCES instance(s) de '$NOM_PROCESSUS' en cours d'exécution | count=$NOMBRE_INSTANCES;$SEUIL_WARNING;$SEUIL_CRITIQUE;0"
    exit 0
fi
chmod +x /opt/centreon/sondes/check_process_httpd.sh

9.5 Ajout de la Sonde dans Centreon

9.5.1 Création de la Commande

  1. Dans Centreon, allez dans Configuration > Commandes > Connecteurs
  2. Cliquez sur Ajouter
  3. Remplissez :
    • Nom de la commande : check_disk_custom
    • Type de commande : Centreon Monitoring Agent
    • Ligne de commande : /opt/centreon/sondes/check_disk_custom.sh $ARG1$ $ARG2$ $ARG3$
  4. Ajoutez les macros (optionnel) :
    • $ARG1$ : Partition (ex: /)
    • $ARG2$ : Seuil WARNING (ex: 20)
    • $ARG3$ : Seuil CRITICAL (ex: 10)
  5. Cliquez sur Sauvegarder

9.5.2 Ajout à la Whitelist du Poller

Sur le serveur poller, créez ou éditez le fichier de whitelist :

vi /etc/centreon-engine-whitelist/custom-commands.yml

Ajoutez :

whitelist:
  regex:
    - ^/opt/centreon/sondes/check_disk_custom\.sh.*
    - ^/opt/centreon/sondes/check_process_httpd\.sh.*

Redémarrez Centreon Engine :

systemctl restart centengine

9.5.3 Création du Service

  1. Dans Centreon, allez dans Configuration > Services > Services par hôte
  2. Cliquez sur Ajouter
  3. Remplissez :
    • Hôte : Sélectionnez votre hôte
    • Description : Disk-Custom-Root
    • Modèle : Generic-Service (ou créez un modèle spécifique)
    • Commande de vérification : check_disk_custom
    • Arguments : !/!20!10
  4. Configurez les seuils et intervalles selon vos besoins
  5. Cliquez sur Sauvegarder

9.5.4 Export de la Configuration

  1. Allez dans Configuration > Collecteurs
  2. Sélectionnez votre poller
  3. Exportez la configuration

9.6 Configuration SELinux pour les Sondes Personnalisées

Si SELinux est actif, autorisez l’exécution des sondes :

semanage fcontext -a -t bin_t "/opt/centreon/sondes(/.*)?"
restorecon -Rv /opt/centreon/sondes

Étape 10 : Tests et Vérification Finale

10.1 Vérification dans l’Interface Centreon

  1. Allez dans Supervision > Statut des ressources
  2. Recherchez votre hôte
  3. Vérifiez que les services passent de Pending à OK, WARNING ou CRITICAL
  4. Consultez les graphiques de performance

10.2 Vérification des Logs de l’Agent

Sur l’hôte supervisé :

tail -f /var/log/centreon-monitoring-agent/centagent.log

Vous devriez voir des messages indiquant l’envoi régulier des métriques.

10.3 Vérification de la Connexion TLS

Vérifiez que la communication est bien chiffrée :

ss -tunlp | grep 4317

Sur le poller, vous pouvez utiliser tcpdump pour analyser le trafic :

tcpdump -i any port 4317 -X | head -50

Avec TLS, le contenu doit être illisible (chiffré).

10.4 Test de Failover

Arrêtez l’agent et vérifiez que Centreon détecte l’interruption :

systemctl stop centagent

Attendez quelques minutes et vérifiez dans Centreon que l’hôte passe en DOWN ou UNREACHABLE.

Redémarrez ensuite l’agent :

systemctl start centagent

10.5 Vérification des Performances

Consultez les graphiques dans Centreon pour vérifier que les données de performance sont bien collectées et affichées.

Dépannage

Problème : L’agent ne se connecte pas au poller

Solutions :

  • Vérifiez que le port 4317/TCP est bien ouvert sur le poller
  • Contrôlez l’adresse IP/FQDN dans centagent.json
  • Vérifiez les logs : tail -f /var/log/centreon-monitoring-agent/centagent.log
  • Testez la connectivité : telnet <IP_POLLER> 4317
  • Vérifiez le token : Si le chiffrement est activé sur le poller, le token est obligatoire

Problème : Erreur d’authentification / Token invalide

Messages d’erreur typiques :

  • authentication failed
  • invalid token
  • unauthorized

Solutions :

  • Vérifiez que le token dans centagent.json correspond exactement à celui généré dans Centreon
  • Pas d’espaces avant/après le token
  • Régénérez un nouveau token dans Configuration > Collecteurs > Configurations d’agent
  • Exportez la configuration du collecteur après modification du token
  • Redémarrez l’agent : systemctl restart centagent

Problème : Erreur de certificat TLS

Solutions :

  • Vérifiez que ca_common_name correspond au CN du certificat (si le champ est renseigné)
  • Assurez-vous que le FQDN est utilisé dans endpoint, pas l’IP
  • Vérifiez que les certificats racine sont à jour : update-ca-trust
  • Testez manuellement : openssl s_client -connect <FQDN>:4317 -CAfile /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
  • Avec Let’s Encrypt, essayez de laisser ca_common_name vide ou de l’omettre complètement
  • Vérifiez que le certificat du poller est valide : openssl x509 -in /etc/pki/centreon/public_cert.crt -noout -dates

Problème : Les services restent en Pending

Solutions :

  • Vérifiez que le nom de l’hôte dans centagent.json correspond exactement à celui dans Centreon
  • Exportez à nouveau la configuration du collecteur
  • Redémarrez centengine sur le poller
  • Vérifiez les logs du poller : tail -f /var/log/centreon-engine/centengine.log

Problème : Les sondes personnalisées ne fonctionnent pas

Solutions :

  • Vérifiez que le script est exécutable : chmod +x /opt/centreon/sondes/votresonde.sh
  • Testez le script manuellement sur l’hôte
  • Vérifiez la whitelist sur le poller : /etc/centreon-engine-whitelist/custom-commands.yml
  • Redémarrez centengine après modification de la whitelist
  • Vérifiez les permissions SELinux si activé

Problème : SELinux bloque l’agent

Solutions :

  • Consultez les logs : ausearch -m avc -ts recent
  • Générez une politique : ausearch -m avc -ts recent | audit2allow -M ma_politique
  • Installez la politique : semodule -i ma_politique.pp
  • En dernier recours : setenforce 0 (mode permissif)

Bonnes Pratiques

  • Sauvegardez vos configurations avant toute modification importante
  • Documentez vos sondes personnalisées avec des commentaires dans les scripts
  • Surveillez l’expiration des certificats même avec le renouvellement automatique
  • Utilisez toujours un token d’authentification avec le chiffrement TLS activé
  • Conservez vos tokens en lieu sûr et ne les partagez jamais publiquement
  • Utilisez des variables dans vos scripts pour faciliter la maintenance
  • Testez en préproduction avant de déployer en production
  • Centralisez vos sondes dans un dépôt Git pour versionning
  • Activez SELinux en mode Permissive d’abord, puis en Enforcing une fois les règles validées
  • Surveillez les logs régulièrement pour détecter les anomalies
  • Créez des alertes sur l’expiration des certificats (60 jours avant)
  • Préférez « encryption »: « full » sur Centreon 25.10+ au lieu de l’ancien booléen true
  • Vérifiez la version de votre Centreon pour adapter les paramètres de configuration

Conclusion

Vous disposez maintenant d’une installation complète et sécurisée de Centreon Monitoring Agent sur RHEL 9, avec :

  • Un chiffrement TLS via Let’s Encrypt pour sécuriser les communications
  • Une authentification par token pour garantir que seuls les agents autorisés peuvent se connecter
  • Un renouvellement automatique des certificats pour éviter les interruptions de service
  • Une configuration SELinux adaptée pour maintenir un niveau de sécurité élevé
  • Des sondes personnalisées organisées dans /opt/centreon/sondes pour étendre les capacités de supervision

CMA représente une évolution majeure par rapport à NRPE, offrant de meilleures performances, une sécurité renforcée et une architecture moderne basée sur OpenTelemetry. Cette solution est parfaitement adaptée aux environnements de production exigeants.

Points clés à retenir :

  • Adaptez les paramètres encryption selon votre version de Centreon (24.10 vs 25.10+)
  • Le token d’authentification est indispensable avec le chiffrement activé
  • Utilisez ca_common_name (et non ca_name) dans vos fichiers de configuration
  • Le champ ca_common_name peut être omis avec Let’s Encrypt
  • Privilégiez reload sur restart pour les versions récentes lors du renouvellement des certificats

N’hésitez pas à adapter ce tutoriel à vos besoins spécifiques et à créer vos propres sondes pour superviser des aspects métier de votre infrastructure.

Ressources utiles :

  • Documentation officielle Centreon : https://docs.centreon.com
  • Let’s Encrypt : https://letsencrypt.org
  • SELinux Project : https://selinuxproject.org
  • OpenTelemetry : https://opentelemetry.io

Bon monitoring avec Centreon CMA !

Derniers Articles