Configuration avancée des conteneurs
Cette page décrit la configuration optionnelle d'un collecteur déployé dans un
conteneur,
au-delà des services centengine et gorgone présents par défaut.
Permettre au collecteur d'envoyer des notifications par e-mail
Cette section s'applique si vous souhaitez que votre collecteur puisse envoyer des notifications.
Un collecteur en conteneur dispose de deux moyens d'envoyer des notifications par e-mail : utilisez celui qui convient le mieux à votre infrastructure.
- Une commande SMTP native, qui utilise la commande
mail(du paquetmailutils) relayée parmsmtp. - Le connecteur centreon-plugin-notification-email.
Option 1 : Commande SMTP native
Il s'agit de la manière la plus courante d'envoyer des notifications.
La commande SMTP native a besoin d'un relais SMTP pour envoyer les e-mails. Configurez-le à l'aide de variables d'environnement sur le service centengine, dans le fichier docker-compose.
| Variable | Effet |
|---|---|
SMTP_HOST | Adresse du relais SMTP. Obligatoire pour la commande SMTP native : tant que cette variable est vide, les notifications ne sont pas envoyées, et aucune erreur n'est remontée. |
SMTP_PORT | Port du relais SMTP (par défaut : 25). |
SMTP_FROM | Adresse utilisée dans le champ From: des e-mails de notification envoyés. |
SMTP_TLS | Définissez cette variable sur on pour utiliser TLS lors de la connexion au relais (par défaut : off). |
Si vous utilisez la commande SMTP native, sachez que le fichier docker-compose.yaml généré
par le script d'installation ne renseigne pas ces variables par défaut. Ajoutez-les
directement dans le bloc environment: du service centengine ou, pour les garder hors du
fichier .env que le script d'installation régénère à chaque exécution, placez-les dans un
fichier distinct référencé comme env_file supplémentaire :
Ajoutez les 3 dernières lignes à votre fichier docker-compose.
services:
centengine:
# ...
env_file:
- .env
- .env.smtp
Stockez ensuite vos variables d'environnement dans un fichier .env.smtp situé dans le même répertoire que le fichier docker-compose.
# .env.smtp
SMTP_HOST=smtp.example.com
SMTP_PORT=25
SMTP_FROM=centreon-engine@example.com
SMTP_TLS=off
Redémarrez le service centengine (docker compose up -d) après avoir modifié ces variables.
mailutils et msmtp sont préinstallés dans l'image. Au démarrage, centengine écrit une
configuration msmtp à partir des variables SMTP_* ci-dessus : /usr/bin/mail envoie donc
les messages via votre relais, sans configuration supplémentaire.
Option 2 : Connecteur centreon-plugin-notification-email
Les paramètres du relais SMTP du connecteur sont de simples options en ligne de commande : vous pouvez donc les définir directement dans la commande.
Le connecteur est préinstallé dans $CENTREONPLUGINS$ (généralement
/usr/lib/centreon/plugins/), sous le nom centreon_notification_email.pl. Ses options
--smtp-address, --smtp-port et --from-address suffisent à renseigner votre relais,
sans aucune variable d'environnement.
Le connecteur choisit entre son modèle de notification d'hôte et son modèle de notification de
service selon que l'option --service-description est renseignée ou non : la même
command_line peut donc servir à la fois de commande de notification d'hôte et de service.
Remplacez les valeurs SMTP, l'URL Centreon et le jeton de l'exemple ci-dessous par les vôtres,
puis définissez la commande à la page Configuration > Commandes :
$CENTREONPLUGINS$centreon_notification_email.pl --plugin=notification::email::plugin --mode=alert --to-address='$CONTACTEMAIL$' --host-address='$HOSTADDRESS$' --host-name='$HOSTNAME$' --host-alias='$HOSTALIAS$' --host-state='$HOSTSTATE$' --host-output='$HOSTOUTPUT$' --host-attempts='$HOSTATTEMPT$' --max-host-attempts='$MAXHOSTATTEMPTS$' --host-duration='$HOSTDURATION$' --date='$SHORTDATETIME$' --type='$NOTIFICATIONTYPE$' --service-description='$SERVICEDESC$' --service-displayname='$SERVICEDISPLAYNAME$' --service-state='$SERVICESTATE$' --service-output='$SERVICEOUTPUT$' --service-longoutput='$LONGSERVICEOUTPUT$' --service-attempts='$SERVICEATTEMPT$' --max-service-attempts='$MAXSERVICEATTEMPTS$' --service-duration='$SERVICEDURATION$' --host-id='$HOSTID$' --service-id='$SERVICEID$' --notif-author='$NOTIFICATIONAUTHOR$' --notif-comment='$NOTIFICATIONCOMMENT$' --centreon-url='https://central.example.com' --smtp-address='smtp.example.com' --smtp-port='25' --from-address='centreon-engine@example.com' --centreon-user='admin' --centreon-token='your-autologin-key' --smtp-nossl
--centreon-url,--centreon-useret--centreon-token(une clé d'auto-connexion Centreon, Administration > Comptes > votre utilisateur > Sécurité) permettent d'inclure dans l'e-mail un lien vers la ressource ainsi que son graphique de performance. Omettez ces trois options si vous n'en avez pas besoin : l'e-mail est envoyé quand même.--insecureignore la vérification du certificat TLS lors de la récupération de ce graphique, ce qui est utile lorsque--centreon-urlutilise un certificat autosigné.- Ajoutez
--smtp-useret--smtp-passwordsi votre relais nécessite une authentification, et supprimez--smtp-nosslpour utiliser TLS.
Stocker
--centreon-tokendans une définition de commande revient à l'écrire en clair dans la configuration de Centreon Engine. Utilisez un jeton associé à un compte dédié disposant de droits limités plutôt qu'à un compte administrateur.
Ces options peuvent également utiliser les macros de ressources du collecteur
$SMTPADDRESS$, $SMTPPORT$ et $SMTPFROMADDRESS$. Dans un conteneur, ces
macros sont écrasées à chaque démarrage du conteneur par les valeurs des
variables SMTP_HOST, SMTP_PORT et SMTP_FROM (voir l'option 1) : définissez
ces variables plutôt que de définir les macros dans l'interface de Centreon.
Permettre au collecteur d'utiliser des plugins personnalisés pour la supervision
Cette section s'applique uniquement si vous souhaitez utiliser vos propres plugins personnalisés pour la supervision. Aucune action n'est nécessaire pour utiliser les connecteurs de supervision officiels Centreon.
Le conteneur centengine peut installer des scripts de contrôle personnalisés et des dépendances APT supplémentaires sans qu'il soit nécessaire de reconstruire l'image.
Dans le fichier docker-compose.yaml généré, ajoutez les volumes suivants au service centengine :
volumes:
# Scripts de plugins personnalisés (ils doivent être exécutables)
- ./custom-plugins:/usr/lib/nagios/plugins/custom:ro
# Paquets APT supplémentaires, installés au démarrage
- ./custom-deps.json:/etc/centreon-engine/custom-deps.json:ro
-
Créez un répertoire custom-plugins et placez-y vos scripts de plugins personnalisés. Le conteneur les copiera dans
/usr/lib/nagios/plugins/custom. -
Si votre plugin nécessite des dépendances système, vous devez les déclarer dans un fichier
custom-deps.json. Par exemple :{"apt": ["snmp", "jq"]}Ce fichier est lu au démarrage du conteneur, puis surveillé : le modifier depuis l'hôte déclenche automatiquement l'installation des paquets listés, sans qu'il soit nécessaire de redémarrer le conteneur. L'installation des paquets s'exécute en arrière-plan :
centenginen'est donc pas bloqué pendant ce temps.
Intégrer les dépendances dans une image personnalisée
Si vous avez un grand nombre de dépendances, vous pouvez construire une image personnalisée basée sur l'image officielle, plutôt que d'ajouter les dépendances une à une au fichier custom-deps.json. Votre image personnalisée sera déployée via le docker-compose.
FROM ghcr.io/centreon/centreon-engine:26.10
RUN sudo apt-get update && sudo apt-get install -y --no-install-recommends \
snmp \
jq \
&& sudo apt-get clean
Construisez-la, puis référencez-la dans ENGINE_TAG (ou remplacez directement la valeur
image:) dans votre fichier docker-compose.yaml. Le principal avantage de cette approche est
le temps de démarrage : lorsqu'un collecteur a besoin de nombreuses dépendances, les installer
une seule fois lors de la construction est plus rapide que de les installer à chaque démarrage
du conteneur via custom-deps.json.
Permettre au collecteur de superviser des ressources VMware
Suivez cette procédure avant de déployer un collecteur en conteneur avec l'option --with-vmware.
La supervision d'une infrastructure VMware nécessite le SDK Perl propriétaire de VMware :
sans lui, le démon ne peut pas démarrer du tout, même avec des identifiants en clair.
Comme ce SDK ne peut pas être redistribué pour des raisons de licence, l'image de conteneur
centreon-vmware n'est pas publiée sur un registre. Le fichier docker-compose.yaml généré
la référence sous la forme connector-vmware:${VMWARE_TAG:-local} avec pull_policy: never :
vous devez donc la construire localement, sur l'hôte des conteneurs, avant d'utiliser
--with-vmware.
Téléchargez les archives du SDK depuis le portail développeur de Broadcom (voir les
prérequis du connecteur de supervision VMware
ESX
pour la marche à suivre), puis clonez centreon-plugins, placez les archives dans son
répertoire sdks-vmware et construisez l'image :
git clone https://github.com/centreon/centreon-plugins.git
cd centreon-plugins
# Placez les archives du SDK téléchargées dans sdks-vmware/ avant de construire l'image
docker build \
--file .github/docker/connector/Dockerfile.connector-vmware \
--tag connector-vmware:local \
.
Cette commande télécharge le dernier paquet depuis le dépôt APT stable de Centreon et inclut le SDK par défaut. Ajoutez
--build-arg VERSION=<version>pour figer une version précise, ou--build-arg PACKAGE_SOURCE=mountpour construire l'image à partir d'un paquet.debplacé dans un répertoirepackages-centreon. Construire avec--build-arg WITH_SDK=falsepermet uniquement de vérifier que l'image se construit correctement : le démon obtenu ne peut pas démarrer, car le SDK est requis dans tous les cas.
Permettre au collecteur de recevoir des données des agents CMA
Ajoutez --with-cma à la commande d'installation du collecteur pour que centengine puisse
accepter les connexions de l'agent CMA (Centreon Monitoring Agent) via OpenTelemetry gRPC.
L'option --with-cma ajoute les éléments suivants au service centengine dans le docker-compose :
volumes:
- ./certs/poller.crt:/etc/pki/poller.crt:ro
- ./certs/poller.key:/etc/pki/poller.key:ro
ports:
- "4317:4317"
Générez ensuite les certificats TLS correspondants et configurez le côté agent en suivant les pages Configurer les certificats et Configurer l'environnement de l'agent.