Vous êtes ici:

Menu

Adaptation du service centengine à systemd

debian
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


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.

modif-centengine01

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.

modif-centengine02

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 Happy

blog comments powered by Disqus
 Vous êtes ici: