Adaptation du service centengine à systemd
08/07/15 07:03 Classé dans: Techniques
En attendant le packaging complet de Centreon qui ne devrait plus tarder, je vous annonce la mise à jour du dépôt Centreon-Deb avec la version 1.4.14 de Centreon-engine pour la distribution Wheezy 64 bits. Et dans la continuité de l'article précédent sur systemd avec Debian Jessie, nous allons étudier le cas du service centengine.
Le service centengine est plus délicat à modifier car celui-ci doit être piloté par l'application Centreon via sudo. Lors de l'installation avec les binaires de Centreon sur votre distribution Debian Jessie, ce service sera de type init SysV. Le script sera copié dans /etc/init.d, Debian Jessie assurant la compatibilité avec init SysV, votre service sera complètement fonctionnel. En voici la preuve :
Maintenant que nous avons vu que notre service fonctionnait sous Jessie, nous allons nous intéresser à la migration sous systemd.
Commençons par arrêter le service et le désactiver.
Cela ne suffit pas, comme nous avons la compatibilité avec systemd, supprimons le fichier /etc/init.d/centengine. Il ne faut pas oublier les changements à systemd.
Il nous reste à créer le service centengine dans le dossier /lib/systemd/system. Nous le nommerons centengine.service. Voici le contenu de ce fichier.
Comme vous le constatez, le service comprend deux paramètres Start et Reload. Start permet le démarrage ou redémarrage du service et Reload permet le rechargement à chaud du moteur de supervision. Je n'ai pas trouvé la correspondance du paramètre Force-Reload. La valeur de TimeoutSec à 30 secondes permet d'éviter une trop longue attente lors d'un arrêt ou redémarrage du serveur. Il reste à faire prendre en compte ce service à systemd et le rendre automatique au démarrage.
La dernière commande renvoie le résultat suivant.
Nous allons maintenant adapter le fichier de configuration de sudo pour permettre la prise en compte des changements de la configuration Centreon. Comme nous ne pouvons pas utiliser les commandes de systemd, ce qui nous obligerait à modifier le code source de l'interface UI de Centreon, nous utiliserons un stratagème pour duper le programme. Créons un script centengine dans le dossier /usr/share/centreon/bin
Le script simulera le paramètre Force-Reload. Maintenant, modifions le fichier de configuration de sudo avec la commande visudo
Nous terminerons par la modification des paramètres dans l'interface web Centreon UI. Sélectionnez Configuration / Centreon et modifier chaque poller concerné comme ci-dessous.
Sauvegardez et appliquez la configuration.
Terminons par la vérification du fonctionnement du service. Tout d'abord, on démarre le service.
Puis on vérifie si celui-ci est démarré.
Il sera intéressant vérifier le bon fonctionnement de centengine en utilisant l'interface Web et l'option reload.
Le service centengine
Le service centengine est plus délicat à modifier car celui-ci doit être piloté par l'application Centreon via sudo. Lors de l'installation avec les binaires de Centreon sur votre distribution Debian Jessie, ce service sera de type init SysV. Le script sera copié dans /etc/init.d, Debian Jessie assurant la compatibilité avec init SysV, votre service sera complètement fonctionnel. En voici la preuve :
systemctl status centengine
● centengine.service - LSB: Start and stop Centreon Engine
Loaded: loaded (/etc/init.d/centengine)
Active: active (running) since jeu. 2015-07-09 19:15:57 CEST; 55s ago
Process: 3389 ExecStart=/etc/init.d/centengine start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/centengine.service
└─3408 /usr/sbin/centengine /etc/centreon-engine/centengine.cfg
juil. 09 19:15:55 debian8 centreon-engine[3408]: [1436462155] [3408] Event loop start at Thu Jul ...015
juil. 09 19:15:55 debian8 centreon-engine[3408]: [1436462155] [3408] Processing object config fil...fg'
juil. 09 19:15:55 debian8 centreon-engine[3408]: [1436462155] [3408] Processing object config fil...fg'
juil. 09 19:15:55 debian8 centreon-engine[3408]: [1436462155] [3408] Processing object config fil...fg'
juil. 09 19:15:55 debian8 centreon-engine[3408]: [1436462155] [3408] Processing object config fil...fg'
juil. 09 19:15:55 debian8 centreon-engine[3408]: [1436462155] [3408] Warning: host failure_predic...red
juil. 09 19:15:55 debian8 centreon-engine[3408]: [1436462155] [3408] Warning: service parallelize...red
juil. 09 19:15:55 debian8 centreon-engine[3408]: [1436462155] [3408] Warning: service failure_pre...red
juil. 09 19:15:55 debian8 centreon-engine[3408]: [1436462155] [3408] Processing object config fil...fg'
juil. 09 19:15:57 debian8 centengine[3389]: centengine start: done.
Hint: Some lines were ellipsized, use -l to show in full.
Maintenant que nous avons vu que notre service fonctionnait sous Jessie, nous allons nous intéresser à la migration sous systemd.
Désactivation du service
Commençons par arrêter le service et le désactiver.
service centengine stop
update-rc.d centengine remove
Cela ne suffit pas, comme nous avons la compatibilité avec systemd, supprimons le fichier /etc/init.d/centengine. Il ne faut pas oublier les changements à systemd.
rm /etc/init.d/centengine
systemctl daemon-reload
Création du service centengine
Il nous reste à créer le service centengine dans le dossier /lib/systemd/system. Nous le nommerons centengine.service. Voici le contenu de ce fichier.
[Unit]
Description=Start and stop Centreon Engine
After=syslog.target network.target
ConditionPathExists=/usr/sbin/centengine
[Service]
Type=simple
PIDFile=/var/run/centengine.pid
User=centreon-engine
ExecStart=/usr/sbin/centengine /etc/centreon-engine/centengine.cfg
ExecReload=/bin/kill -HUP $MAINPID
TimeoutSec=30
[Install]
WantedBy=multi-user.target
Comme vous le constatez, le service comprend deux paramètres Start et Reload. Start permet le démarrage ou redémarrage du service et Reload permet le rechargement à chaud du moteur de supervision. Je n'ai pas trouvé la correspondance du paramètre Force-Reload. La valeur de TimeoutSec à 30 secondes permet d'éviter une trop longue attente lors d'un arrêt ou redémarrage du serveur. Il reste à faire prendre en compte ce service à systemd et le rendre automatique au démarrage.
systemctl daemon-reload
systemctl enable centengine.service
La dernière commande renvoie le résultat suivant.
Created symlink from /etc/systemd/system/multi-user.target.wants/centengine.service to /lib/systemd/system/centengine.service.
Prise en compte du service centengine par Centreon
Nous allons maintenant adapter le fichier de configuration de sudo pour permettre la prise en compte des changements de la configuration Centreon. Comme nous ne pouvons pas utiliser les commandes de systemd, ce qui nous obligerait à modifier le code source de l'interface UI de Centreon, nous utiliserons un stratagème pour duper le programme. Créons un script centengine dans le dossier /usr/share/centreon/bin
#!/bin/sh
if [ "$1" = "force-reload" ]; then
/bin/systemctl reload centengine.service
/bin/systemctl restart centengine.service
else
/bin/systemctl $1 centengine.service
fi
Le script simulera le paramètre Force-Reload. Maintenant, modifions le fichier de configuration de sudo avec la commande visudo
# Monitoring engine Restart
CENTREON ALL = NOPASSWD: /usr/share/centreon/bin/centengine restart
# Monitoring engine reload
CENTREON ALL = NOPASSWD: /usr/share/centreon/bin/centengine reload
# Monitoring engine force-reload
CENTREON ALL = NOPASSWD: /usr/share/centreon/bin/centengine force-reload
Nous terminerons par la modification des paramètres dans l'interface web Centreon UI. Sélectionnez Configuration / Centreon et modifier chaque poller concerné comme ci-dessous.
On modifiera le paramètre suivant
Monitoring Engine Init Script /usr/share/centreon/bin/centengine
Sauvegardez et appliquez la configuration.
Finalisation
Terminons par la vérification du fonctionnement du service. Tout d'abord, on démarre le service.
systemctl start centengine.service
Puis on vérifie si celui-ci est démarré.
/lib/systemd/system# systemctl status centengine.service
● centengine.service - Start and stop Centreon Engine
Loaded: loaded (/lib/systemd/system/centengine.service; enabled)
Active: active (running) since jeu. 2015-07-09 19:49:34 CEST; 44s ago
Main PID: 718 (centengine)
CGroup: /system.slice/centengine.service
└─718 /usr/sbin/centengine /etc/centreon-engine/centengine.cfg
juil. 09 19:49:36 debian8 centengine[718]: [1436464176] [718] Processing object config file '/etc...fg'
juil. 09 19:49:36 debian8 centengine[718]: [1436464176] [718] Processing object config file '/etc...fg'
juil. 09 19:49:36 debian8 centengine[718]: [1436464176] [718] Processing object config file '/etc...fg'
juil. 09 19:49:36 debian8 centengine[718]: [1436464176] [718] Processing object config file '/etc...fg'
juil. 09 19:49:36 debian8 centengine[718]: [1436464176] [718] Processing object config file '/etc...fg'
juil. 09 19:49:36 debian8 centengine[718]: [1436464176] [718] Processing object config file '/etc...fg'
juil. 09 19:49:36 debian8 centengine[718]: [1436464176] [718] Processing object config file '/etc...fg'
juil. 09 19:49:36 debian8 centengine[718]: [1436464176] [718] Processing object config file '/etc...fg'
juil. 09 19:49:36 debian8 centengine[718]: [1436464176] [718] Processing object config file '/etc...fg'
juil. 09 19:49:36 debian8 centengine[718]: [1436464176] [718] Reading resource file '/etc/centreo...fg'
Hint: Some lines were ellipsized, use -l to show in full.
Il sera intéressant vérifier le bon fonctionnement de centengine en utilisant l'interface Web et l'option reload.
Et voilà votre service centengine opérationnel avec Debian Jessie et systemd. Il reste à trouver la bonne configuration pour le service cbd de centreon-broker, suite au prochain épisode
blog comments powered by Disqus