Adaptation du service cbd à systemd
10/07/15 13:06 Classé dans: Techniques
![debian](debian.jpg)
Mais comme vous êtes sysadmin, vous connaissez les risques du métier
![Winking](../../rw_common/plugins/blog/smiley_wink.png)
Le service cbd
Le service cbd a la particularité de lancer deux daemons en s'appuyant sur le fichier /etc/centreon-broker/master.run, de plus 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 cbd
● cbd.service - LSB: Start daemon cbd at boot
Loaded: loaded (/etc/init.d/cbd)
Active: active (running) since sam. 2015-07-11 10:07:13 CEST; 29s ago
Process: 10192 ExecStart=/etc/init.d/cbd start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/cbd.service
├─10209 /usr/sbin/cbd /etc/centreon-broker/central-broker.xml
└─10222 /usr/sbin/cbd /etc/centreon-broker/central-rrd.xml
juil. 11 10:07:13 debian8 cbd[10192]: Starting cbd_central-broker: cbd.
juil. 11 10:07:13 debian8 cbd[10192]: Starting cbd_central-rrd: cbd.
On remarque les deux processus associés au service cbd. Maintenant que nous avons vu que notre service fonctionnait sous Jessie, nous allons nous intéresser à la migration sous systemd.
Création des services pour Centreon-Broker
Afin de minimiser le temps d'indisponibilité du serveur, nous avons créer en premier les deux services de centreon-broker dans le dossier /lib/systemd/system. Nous nommerons le premier service cbd_central-broker.service. Voici le contenu de ce fichier.
[Unit]
Description=Start and stop Centreon Broker
After=syslog.target network.target
ConditionPathExists=/usr/sbin/cbd
[Service]
Type=simple
PIDFile=/var/run/cbd_central-broker.pid
User=centreon-broker
ExecStart=/usr/sbin/cbd /etc/centreon-broker/central-broker.xml
ExecReload=/bin/kill -HUP $MAINPID
TimeoutSec=30
[Install]
WantedBy=multi-user.target
Et le deuxième service cbd_central-rrd.service
[Unit]
Description=Start and stop Centreon Broker rrd
After=syslog.target network.target
ConditionPathExists=/usr/sbin/cbd
[Service]
Type=simple
PIDFile=/var/run/cbd_central-rrd.pid
User=centreon-broker
ExecStart=/usr/sbin/cbd /etc/centreon-broker/central-rrd.xml
ExecReload=/bin/kill -HUP $MAINPID
TimeoutSec=30
[Install]
WantedBy=multi-user.target
Prise en compte des services broker 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 comme pour centengine un stratagème pour duper le programme. Créons un script cbd dans le dossier /usr/share/centreon/bin
#!/bin/sh
/bin/systemctl $1 cbd_central-broker.service
/bin/systemctl $1 cbd_central-rrd.service
Le script lancera les deux services avec les paramètres start ou reload appropriés. Maintenant, modifions le fichier de configuration de sudo avec la commande visudo
# Broker engine Restart
CENTREON ALL = NOPASSWD: /usr/share/centreon/bin/cbd restart
# Broker engine reload
CENTREON ALL = NOPASSWD: /usr/share/centreon/bin/cbd reload
Désactivation du service
Maintenant il faut effectuer l'interruption de service. Commençons par arrêter le service cbd et le désactiver.
service cbd stop
update-rc.d cbd remove
Cela ne suffit pas, comme nous avons la compatibilité avec systemd, supprimons le fichier /etc/init.d/cbd. Il ne faut pas oublier les changements à systemd.
rm /etc/init.d/cbd
systemctl daemon-reload
Les deux nouveaux services sont pris en charge grâce à la commande précédente. Il faut les rendre automatique au démarrage.
systemctl enable cbd_central-broker.service
La commande renvoie le résultat suivant.
Created symlink from /etc/systemd/system/multi-user.target.wants/cbd_central-broker.service to /lib/systemd/system/cbd_central-broker.service.
Faites de même pour le deuxième service.
systemctl enable cbd_central-rrd.service
Prise en compte du script cbd par Centreon
Nous terminerons par la modification des paramètres dans l'interface web Centreon UI. Sélectionnez Administration / Options / Monitoring et modifiez le paramètre Start script for broker daemon comme ci-dessous.
On modifiera le paramètre suivant
Start script for broker daemon /usr/share/centreon/bin/cbd
Sauvegardez et appliquez la configuration.
Finalisation
Terminons par la vérification du fonctionnement du service. Tout d'abord, on démarre les services.
systemctl start cbd_central-broker.service
systemctl start cbd_central-rrd.service
Puis on vérifie si ceux-ci sont démarrés.
systemctl status cbd_central-broker.service
● cbd_central-broker.service - Start and stop Centreon Broker
Loaded: loaded (/lib/systemd/system/cbd_central-broker.service; enabled)
Active: active (running) since ven. 2015-07-10 07:47:06 CEST; 15s ago
Main PID: 7133 (cbd)
CGroup: /system.slice/cbd_central-broker.service
└─7133 /usr/sbin/cbd /etc/centreon-broker/central-broker.xml
juil. 10 07:47:07 debian8 cbd[7133]: [1436507227] config: log applier: applying 1 logging objects
systemctl status cbd_central-rrd.service
● cbd_central-rrd.service - Start and stop Centreon Broker rrd
Loaded: loaded (/lib/systemd/system/cbd_central-rrd.service; enabled)
Active: active (running) since ven. 2015-07-10 07:50:25 CEST; 9s ago
Main PID: 7249 (cbd)
CGroup: /system.slice/cbd_central-rrd.service
└─7249 /usr/sbin/cbd /etc/centreon-broker/central-rrd.xml
juil. 10 07:50:25 debian8 cbd[7249]: [1436507425] config: log applier: applying 1 logging objects
Il sera intéressant vérifier le bon fonctionnement des deux services en utilisant l'interface Web et l'option reload.
Et voilà nos services centreon-broker opérationnels avec Debian Jessie et systemd. Il reste le dernier service centreontrapd, suite au prochain épisode
blog comments powered by Disqus