Cet article présente la mise à jour d'une version de Centreon-Broker. On se basera sur une installation distribuée comprenant un serveur Central et un satellite avec un ordonnanceur Nagios et Centreon-Broker 2.4. La version de l'interface Centreon a déjà migré en 2.4. Nous commencerons par la mise à jour du serveur Central et nous terminerons par la mise à jour du serveur Satellite.
Je vous déconseille de migrer Centreon-Broker 2.4 avant Centreon 2.4 pour des problèmes de données de performances que j'ai rencontrés.
Avant la mise à jour, nous allons préparer cette migration en nous rapprochant le plus possible de l'installation de Centreon-Broker 2.4 en ce qui concerne les scripts et l'utilisateur système. Nous en profiterons pour mettre en place les statistiques et le mécanisme de failover.
1 Modification des scripts de démarrage
1.1 Modification du Poller Central
Nous allons utiliser les scripts de Centreon-Broker 2.4. De cette façon, nous utiliserons un seul script pour démarrer nos processus distincts broker et rrd. Nous commencerons à modifier l'emplacement des fichiers de configuration de Centreon-Broker sur le serveur Central.
Dans l'interface WEB, sélectionnez Configuration / Centreon / Pollers
Modifier le paramètre Centreon Broker configuration path avec le nouveau chemin.
C'est le user système d'apache qui exporte les fichiers de configuration, vérifiez les droits du dossier et apportez les modifications suivantes le cas échéant :
Exporter la configuration de Centreon.
Dans l'interface WEB, sélectionnez Configuration / Centreon / Pollers
Modifier le paramètre Centreon Broker configuration path avec le nouveau chemin.
/usr/local/centreon-broker/etc
C'est le user système d'apache qui exporte les fichiers de configuration, vérifiez les droits du dossier et apportez les modifications suivantes le cas échéant :
chown nagios:nagios /usr/local/centreon-broker/etc
chmod 775 /usr/local/centreon-broker/etc
Exporter la configuration de Centreon.
1.2 Création du script cbd
Créons le fichier de paramétrage du script cbd /etc/default/cbd
Nous utiliserons l'utilisateur système nagios.Créons le script /etc/init.d/cbd
Appliquons les droits d'exécution et automatisons le script.
Maintenant, il faut créer le script qui dupliquera les processus cbd. Ce fichier s'appelle master.run et est situé dans /usr/local/centreon-broker/etc
Appliquez les droits nécessaire à la bonne marche des scripts.
# Configuration for /etc/init.d/cbd
# If run cbd at startup default: YES
RUN_AT_STARTUP="YES"
# Centreon Broker user : default centreon-broker
USER="nagios"
Nous utiliserons l'utilisateur système nagios.Créons le script /etc/init.d/cbd
#!/bin/sh
##
## Copyright 2009-2012 Merethis
##
## This file is part of Centreon Broker.
##
## Centreon Broker is free software: you can redistribute it and/or
## modify it under the terms of the GNU General Public License version 2
## as published by the Free Software Foundation.
##
## Centreon Broker is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
## General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with Centreon Broker. If not, see
## <http://www.gnu.org/licenses/>.
##
#
# Script init
#
### BEGIN INIT INFO
# Provides: bcd
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon bcd at boot
# Description: Enable service provided Centreon Broker
### END INIT INFO
PKGNAME=cbd
DESC="Centreon Broker"
DAEMON="/usr/local/centreon-broker/bin/cbd"
PID_PATH="/var/run"
MASTER_FILE="/usr/local/centreon-broker/etc/master.run"
CONFIG_DIR="/usr/local/centreon-broker/etc"
# Check that bcd is executable.
if [ ! -x "${DAEMON}" ] ; then
echo "The bcd binary can't be run."
exit 3
fi
# Check that configuration file exists.
if [ ! -e "${MASTER_FILE}" ] ; then
echo "The master file isn't found."
exit 3
fi
# Include the default user configuration if exists
[ -r /etc/default/${PKGNAME} ] && . /etc/default/${PKGNAME}
# Load the VERBOSE setting and other rcS variables
[ -f /etc/default/rcS ] && . /etc/default/rcS
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
if [ -z "${RUN_AT_STARTUP}" -o "${RUN_AT_STARTUP}" != "YES" ]; then
log_warning_msg "Not starting $PKGNAME, edit /etc/default/$PKGNAME to start it."
exit 0
fi
if [ -z "${USER}" ]; then
log_warning_msg "Not starting $PKGNAME, USER not set in /etc/default/$PKGNAME."
exit 0
fi
# Start cbd.
do_start()
{
cat ${MASTER_FILE} | grep -v '^#'| while read line; do
global_retval=0
daemon_name="cbd_$(echo ${line} | awk '{ print $1 }')"
daemon_config="${CONFIG_DIR}/$(echo ${line} | awk '{ print $2 }')"
running="$(echo ${line} | awk '{ print $3 }')"
pidfile="${PID_PATH}/${daemon_name}.pid"
if [ "${running}" = "y" ]; then
[ "${VERBOSE}" != "no" ] && log_daemon_msg "Starting ${daemon_name}" "${PKGNAME}"
start-stop-daemon --start --background --quiet --pidfile ${pidfile} --exec ${DAEMON} \
--chuid ${USER} --user ${USER} --test
[ "$?" = "0" ] || global_retval=1
start-stop-daemon --start --background --quiet --pidfile ${pidfile} --exec ${DAEMON} \
--make-pidfile --chuid ${USER} --user ${USER} -- ${daemon_config}
[ "$?" = "0" ] || global_retval=2
case "${global_retval}" in
0|1) [ "${VERBOSE}" != "no" ] && log_end_msg 0 ;;
2) [ "${VERBOSE}" != "no" ] && log_end_msg 1 ;;
esac
fi
done
return ${global_retval}
}
# Stop cbd.
do_stop()
{
cat ${MASTER_FILE} | grep -v '^#'| while read line; do
global_retval=0
daemon_name="cbd_$(echo ${line} | awk '{ print $1 }')"
daemon_config="${CONFIG_DIR}/$(echo ${line} | awk '{ print $2 }')"
running="$(echo ${line} | awk '{ print $3 }')"
pidfile="${PID_PATH}/${daemon_name}.pid"
if [ "${running}" = "y" ]; then
[ "${VERBOSE}" != no ] && log_daemon_msg "Restarting ${daemon_name}" "${PKGNAME}"
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user ${USER} --pidfile ${pidfile}
[ "$?" = "2" ] && global_retval=2
rm -f ${pidfile}
[ "$?" = "0" ] || global_retval=1
case "${global_retval}" in
0|1) [ "${VERBOSE}" != "no" ] && log_end_msg 0 ;;
2) [ "${VERBOSE}" != "no" ] && log_end_msg 1 ;;
esac
fi
done
}
# Send kill HUP
do_reload()
{
cat ${MASTER_FILE} | grep -v '^#'| while read line; do
daemon_name="cbd_$(echo ${line} | awk '{ print $1 }')"
daemon_config="${CONFIG_DIR}/$(echo ${line} | awk '{ print $2 }')"
running="$(echo ${line} | awk '{ print $3 }')"
reload="$(echo ${line} | awk '{ print $4 }')"
pidfile="${PID_PATH}/${daemon_name}.pid"
if [ "${running}" = "y" -a "${reload}" = "y" ]; then
[ "${VERBOSE}" != no ] && log_daemon_msg "Reloading ${daemon_name}" "${PKGNAME}"
start-stop-daemon --stop --quiet --signal=HUP --user ${USER} --pidfile ${pidfile}
case "$?" in
0|1) [ "${VERBOSE}" != "no" ] && log_end_msg 0 ;;
2) [ "${VERBOSE}" != "no" ] && log_end_msg 1 ;;
esac
fi
done
}
# Status
status_all()
{
cat ${MASTER_FILE} | grep -v '^#'| while read line; do
daemon_name="cbd_$(echo ${line} | awk '{ print $1 }')"
daemon_config="${CONFIG_DIR}/$(echo ${line} | awk '{ print $2 }')"
running="$(echo ${line} | awk '{ print $3 }')"
pidfile="${PID_PATH}/${daemon_name}.pid"
if [ "${running}" = "y" ]; then
status_of_proc ${DAEMON} ${daemon_name} -p ${pidfile}
fi
done
}
# Switch case.
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
restart)
do_stop
do_start
;;
reload)
do_reload
;;
status)
status_all
;;
*)
echo "Usage: ${daemon_name} {start|stop|restart|status}"
exit 3
esac
Appliquons les droits d'exécution et automatisons le script.
chmod +x /etc/init.d/cbd
update-rc.d cbd defaults
Maintenant, il faut créer le script qui dupliquera les processus cbd. Ce fichier s'appelle master.run et est situé dans /usr/local/centreon-broker/etc
## This file define the Centreon Broker daemons to start
# Example :
# central-cbd central-cbd.xml y y
# central-rrd central-rdd.xml y n
#
# The first line the daemon central-cbd is started with start action from
# /etc/init.d/cbd and it's reload by action reload of init script
#
# The second line the daemon central-rrd is started but it is not reload by
# action in /etc/cbd reload
#
#
# daemon_name daemon_config running reload
central-broker central-broker.xml y y
central-rrd central-rrd.xml y y
Appliquez les droits nécessaire à la bonne marche des scripts.
chmod 775 /usr/local/centreon-broker/etc/master.run
chown nagios:nagios /usr/local/centreon-broker/etc/master.run
1.3 Modification du redémarrage du script par Centreon
Il faut modifier le paramètre de sudo pour permettre le rechargement de la configuration du Broker par l'interface de Centreon. Modifier les lignes contenant broker pour arriver à ces lignes ci-dessous. Lancez visudo.
Rechargez la configuration de sudo.
Il faudra modifier la configuration du paramètre Start script for broker daemon dans le menu Administration / Options / Monitoring
# Broker engine Restart
CENTREON ALL = NOPASSWD: /etc/init.d/cbd* restart
CENTREON ALL = NOPASSWD: /etc/init.d/cbd restart
# Broker engine reload
CENTREON ALL = NOPASSWD: /etc/init.d/cbd* reload
CENTREON ALL = NOPASSWD: /etc/init.d/cbd reload
Rechargez la configuration de sudo.
service visudo restart
Il faudra modifier la configuration du paramètre Start script for broker daemon dans le menu Administration / Options / Monitoring
/etc/init.d/cbd
1.4 Mise en service du script
Arrêtons les anciens scripts et supprimons le démarrage automatique.
Avant de démarrer le nouveau script, vérifier que l'utilisateur nagios ai les droits d'écriture sur les logs de Centreon-Broker, les métriques, les fichiers statistiques et les fichiers fail-over. Par exemple, les logs ont été créés avec l'utilisateur root, mettre les droits pour nagios car les services broker et rrd ne pourront pas démarrer.
Ensuite, redémarrer le nouveau service.
vérifier le fonctionnement
service broker stop
service rrd stop
update.rc-d rrd remove
update-rc.d broker remove
Avant de démarrer le nouveau script, vérifier que l'utilisateur nagios ai les droits d'écriture sur les logs de Centreon-Broker, les métriques, les fichiers statistiques et les fichiers fail-over. Par exemple, les logs ont été créés avec l'utilisateur root, mettre les droits pour nagios car les services broker et rrd ne pourront pas démarrer.
chown nagios:nagios /usr/local/centreon/log/central-*
Ensuite, redémarrer le nouveau service.
service cbd start
vérifier le fonctionnement
ps aux | grep cbd
nagios 7965 0.1 3.7 71612 9500 ? Sl 07:43 0:00 /usr/local/centreon-broker/bin/cbd
/usr/local/centreon-broker/etc/central-broker.xml
nagios 7985 0.0 3.1 46236 7944 ? Sl 07:43 0:00 /usr/local/centreon-broker/bin/cbd
/usr/local/centreon-broker/etc/central-rrd.xml
2 Serveur Central
2.1 Pré Requis
Tout d'abord, Il faudra créer un groupe système et un compte utilisateur système centreon-broker
le user Apache devra être membre du groupe centreon-broker pour ajouter la configuration du broker. Relancez le service Web.
Comme nous utilisons Nagios comme ordonnanceur, il devra être membre du groupe centreon-broker pour pour pouvoir créer le fichier de log de central-module.
L'utilisateur système centreon-broker devra faire parti du groupe nagios pour qu'il puisse écrire les données de performances dans les RRD.
groupadd -g 999 centreon-broker
useradd -u 999 -g centreon-broker -m -r -d /var/lib/centreon-broker -c "Centreon-broker Admin" centreon-broker
le user Apache devra être membre du groupe centreon-broker pour ajouter la configuration du broker. Relancez le service Web.
usermod -aG centreon-broker www-data
service apache2 restart
Comme nous utilisons Nagios comme ordonnanceur, il devra être membre du groupe centreon-broker pour pour pouvoir créer le fichier de log de central-module.
usermod -aG centreon-broker nagios
L'utilisateur système centreon-broker devra faire parti du groupe nagios pour qu'il puisse écrire les données de performances dans les RRD.
usermod -aG nagios centreon-broker
2.2 Installation
Téléchargez le binaire dans le dossier /usr/local/src et décompressez-le.
Préparons la compilation.
Extrait du résultat
Ensuite compilons cette configuration et installons dans le dossier /usr/local
Les ligne suivantes :
ne sont pas graves et seront corrigées dans la prochaine version. Terminons par la création des droits et l'application des droits sur certains dossiers
Créons le dossier pour les logs de Centreon-broker
L'installation de Centreon-Broker est terminée, il faut effectuer la mise à jour de Centreon UI.
cd /usr/local/src
tar xzf centreon-broker-2.4.0.tar.gz
cd centreon-broker-2.4.0/build/
Préparons la compilation.
cmake \
-DWITH_DAEMONS='central-broker;central-rrd' \
-DWITH_GROUP=centreon-broker \
-DWITH_PREFIX=/usr/local/centreon-broker \
-DWITH_STARTUP_DIR=/etc/init.d \
-DWITH_STARTUP_SCRIPT=auto \
-DWITH_TESTING=0 \
-DWITH_USER=centreon-broker .
Extrait du résultat
-- Configuration Summary
-- ---------------------
--
-- Project
-- - Name Centreon Broker
-- - Version 2.4.0
--
-- System
-- - Name Linux
-- - Version 2.6.32-5-686
-- - Processor i686
--
-- Build
-- - Compiler /usr/bin/c++ (GNU)
-- - Extra compilation flags
-- - Qt 4.6.3
-- - Unit tests disabled
-- - Startup script sysv
--
-- Install
-- - Prefix /usr/local/centreon-broker
-- - Binary prefix /usr/local/centreon-broker/bin
-- - Library prefix /usr/local/centreon-broker/lib
-- - Modules prefix /usr/local/centreon-broker/lib/centreon-broker
-- - Include prefix /usr/local/centreon-broker/include/centreon-broker
-- - Configuration prefix /usr/local/centreon-broker/etc
-- - Startup dir /etc/init.d
-- - User centreon-broker
-- - Group centreon-broker
-- - Package None
--
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/src/centreon-broker-2.4.0/build
Ensuite compilons cette configuration et installons dans le dossier /usr/local
make
make install
Les ligne suivantes :
chown: impossible d'accéder à « »: Aucun fichier ou dossier de ce type
ne sont pas graves et seront corrigées dans la prochaine version. Terminons par la création des droits et l'application des droits sur certains dossiers
chown centreon-broker:centreon-broker /usr/local/centreon-broker
chown centreon-broker:centreon-broker /usr/local/centreon-broker/bin
chown centreon-broker:centreon-broker /usr/local/centreon-broker/lib
chown centreon-broker:centreon-broker /usr/local/centreon-broker/lib/centreon-broker
chown centreon-broker:centreon-broker /usr/local/centreon-broker/etc
chmod 775 /usr/local/centreon-broker/etc
chmod 775 /var/lib/centreon-broker
Créons le dossier pour les logs de Centreon-broker
mkdir /var/log/centreon-broker
chown centreon-broker:centreon-broker /var/log/centreon-broker
chmod 775 /var/log/centreon-broker
L'installation de Centreon-Broker est terminée, il faut effectuer la mise à jour de Centreon UI.
3 Serveur Satellite
Le but de l'installation est de compiler la librairie faisant le lien entre le l'ordonnanceur et le broker du serveur Central. Nous n'avons pas besoin de créer un utilisateur spécifique pour le processus Centreon-Broker.
Téléchargez le binaire dans le dossier /usr/local/src et décompressez-le.
Préparons la compilation.
Compilez et installez
L'installation est terminée pour le serveur satellite, il faut effectuer la mise à jour de Centreon UI.
Téléchargez le binaire dans le dossier /usr/local/src et décompressez-le.
cd /usr/local/src
tar xzf centreon-broker-2.4.0.tar.gz
cd centreon-broker-2.4.0/build/
Préparons la compilation.
cmake \
-DWITH_DAEMONS='central-broker;central-rrd' \
-DWITH_GROUP=nagios \
-DWITH_PREFIX=/usr/local/centreon-broker \
-DWITH_STARTUP_DIR=/etc/init.d \
-DWITH_STARTUP_SCRIPT=no \
-DWITH_TESTING=0 \
-DWITH_USER=nagios .
Compilez et installez
make
make install
L'installation est terminée pour le serveur satellite, il faut effectuer la mise à jour de Centreon UI.