Cédric Temple - Chef de Projet Supervision Open Source Me contacter Vous aussi, créez Gratuitement votre CV sur www.doyoubuzz.com

Chef de Projet Supervision Open Source

Cédric Temple

Cédric Temple
    Infos
  • 31 ans
  • PACSé
  • Yerres  (91330) France
  • Permis de conduire

Situation professionnelle
En poste

Emploi et carrière Indisponible

Cédric TEMPLE - Chef de Projet Supervision OpenSource

Je suis spécialisé dans la gestion de Projets Open Source. J'ai d'excellentes connaissances autour de Centreon, Nagios et dans la création de paquets RPMs. J'ai lancé le projet Open Source FAN, Fully Automated Nagios, projet dont j'ai passé le relais à LKCO.

Blog

Weblog de Cédric Temple

Blog sur la supervision Centreon et le Logiciel Libre en général.

Parisien tournant le dos aux transports en commun

26/01/2012

Ce n’est pas parce qu’on vit dans la région où les transports en commun sont les plus développés qu’on se doit de les emprunter. On peut même être contre et leur tourner le dos.

parisien_tournant_le_dos_aux_transports_en_commun

parisien_tournant_le_dos_aux_transports_en_commun

Green communication

23/01/2012

L’écologie est a la mode. Le Green IT est a la mode. Et il est nécessaire pour les entreprises de communiquer sur ce sujet. Rien de mieux qu’une publicité dans le RER parisien pour afficher sa Green attitude.

Une question cependant : quelle entreprise a pu acheter cette green publicité?

green_communication

green_communication

Ezwebplayer-lite pour wordpress : incapacité à poster une vidéo depuis l’édition d’un article

17/01/2012

J’ai déjà parlé du plugin Ezwebplayer-lite pour wordpress. Ce plugin permet d’afficher dans WordPress des vidéos en Flash (vidéos au format FLV), sans passer par une plate-forme d’hébergement de vidéos. Dans la version que j’avais installée, un bug était présent. Il m’empêchait de poster une vidéo depuis la page d’écriture d’un article. Lorsque je cliquais sur l’icône de ce plugin, une page blanche s’affichait. Je n’avais pas cherché bien longtemps car je préfère passer par la ligne d’appel : c’est simple, rapide et efface:

[ EZWebPlayerLite VIDEOURL="http://urlcomplete/wordpress/wp-content/uploads/ANNEE/MOIS/video.flv" / ]

ATTENTION : j’ai volontairement ajouté un espace supplémentaire juste après le crochet ouvrant et juste avant le crochet fermant afin d’indiquer la ligne de code. Penser à les supprimer!

Pour forcer la taille de la vidéo, c’est aussi très simple:

[ EZWebPlayerLite VIDEOURL="http://urlcomplete/wordpress/wp-content/uploads/ANNEE/MOIS/video.flv" WIDTH="640" HEIGHT="360" / ]

Mais il est toujours mieux de corriger une erreur. J’ai donc cherché et rapidement trouvé. Il suffit de modifier le fichier ezwebplayer-wordpress-lite-video-plugin/ezwplite_form.php à la ligne 3 et de remplacer:

require_once(../../../wp-includes/classes.php);

par

require_once(../../../wp-includes/class-wp.php);

Et voici le résultat:

Formulaire d'ajout d'une vidéo avec EZWebplayer Lite pour wordpress

Formulaire d'ajout d'une vidéo avec EZWebplayer Lite pour wordpress

Changement de thème

15/01/2012

J’ai décidé de changer de thème pour ce blog. L’ancien, appelé Freshy2, était bien et je m’y étais attaché. De plus, c’était le même que j’utilisais sur mon ancien blog Dotclear. Il m’a servi longtemps et je remercie l’auteur du thème Freshy2 pour son travail. Mais trois éléments m’ont fait changer de thème:

  1. l’ancien thème ne semble plus maintenu : que va-t’il se passer quand il sera trop ancien pour être utilisé avec WordPress? J’ai préféré anticiper et m’éviter tout stress inutile!
  2. Freshy2 disposaient de toutes les fonctionnalités… de l’époque où il a été développé. Aujourd’hui, les blogs utilisent des nouvelles fonctionnalités, non incluses dans Freshy2. Je me trouvais un peu limité. Dommage! Aujourd’hui, elles ne sont pas encore en place mais vous les verrez apparaître au fur et à mesure sur ce blog.
  3. Les titres de niveaux 1 et 2 étaient identiques (couleur et taille de police). Moi même, sur la première page de mon blog, j’avais beaucoup de mal à identifier un article du titre de niveau deux d’un article. La lisibilité de ce blog n’était donc pas suffisante.

Voilà, rien de révolutionnaire pour l’instant, ce n’est qu’un thème qui a changé.

Pour information, j’utilise le thème Mangos, réalisé par SimpleWPThemes.com. Je l’ai trouvé par l’intermédiaire de wp-themes-pro. Attention : comme l’indique l’auteur de ce site, le thème “Mangos” contenait des liens “cachés”. Il a donc nettoyé ce thème pour les supprimer. Je vous invite à télécharger ce thème sur son site plutôt que sur le site officiel du thème.

Quelques retours sur Centreon-Syslog

14/01/2012

Suite à mes articles sur Centreon-Syslog (1, 2 et 3), le développeur de ce module et Community Leader de Centreon (AkHeNaToN) m’a fait quelques retours.

Tout d’abord, il me précise que la syntaxe que j’ai donnée envoie les messages syslog au travers du protocole TCP (grâce au double ‘@’):

*.* @@192.168.0.11:514

Il m’indique qu’une autre syntaxe permet d’envoyer les messages au travers du protocole UDP (avec un seul ‘@’):

*.* @192.168.0.11:514

 

Il m’indique aussi que le protocole syslog défini que le protocole par défaut est le protocole UDP, le protocole TCP ne devant être utilisé que pour des évènements prioritaires ou demandant un accusé de réception. Par exemple, les évènement “>=kernel.warning” pourront être envoyés par TCP et le reste en UDP.

La configuration des règles de filtrage que j’ai présentées est un peu… datée selon lui. Il existe des règles plus avancées ( à base de if, elsif, and, or, msg::contain::, …) permettant d’ajouter des conditions sur tout type de champ de l’évènement. Certes, mais une configuration simple est tout aussi efficace lorsque le besoin… est simple!

Merci Laurent pour ces retours.

Centreon méta service

01/01/2012

J’ai décidé de faire une série d’articles sur les fonctions mal connues de Centreon. Le premier de cette série est les méta services de Centreon.

Définition d’un méta service Centreon

Un méta service Centreon agrège les données de performance de plusieurs services Centreon pour effectuer sur celles-ci des calculs mathématiques et fournir un nouvel objet (appelé méta service Centreon), équivalent à un service.

Cette définition n’étant pas simple à comprendre, nous allons l’illustrer par des cas d’utilisation. Les cas d’utilisation permettent de mieux exprimer la fonctionnalité apportée par les méta services.

Cas d’utilisation du méta service Centreon

  1. Vous disposez d’une application 3-Tiers avec 2 serveurs frontaux Apache, 2 serveurs MySQL en maître-esclave et 5  serveurs d’application JBoss. Sur chaque serveur JBoss, vous supervisez le taux d’occupation du CPU. Avec Centreon, vous pouvez créer un méta service qui sera la moyenne des taux d’occupation du CPU des serveurs JBoss. Vous pouvez alors désactiver les notifications sur chaque service “CPU” des serveurs JBoss et ne l’activer que sur le méta-service.
  2. Autre exemple, toujours sur le même contexte (Apache/JBoss/MySQL). Vous avez configuré un service sur chaque serveur JBoss qui mesure le nombre de connexions. Vous pouvez créer un méta service correspondant au nombre total de connexions : c’est la somme de toutes les connexions.
  3. Vous disposez d’imprimantes sur lesquelles vous mesurez le nombre de pages imprimées. Grâce au méta service, vous pouvez connaître le nombre total de pages imprimées. Vous pourrez alors vérifier l’impact des recommandations faites aux utilisateurs de ces imprimantes et même communiquer avec eux sur ce graphique.

D’autres exemples, plus concis :

  1. connaître la bande passante totale consommée lorsque vous disposez de plusieurs connexions internet
  2. disposer du nombre total de connexions sur les 2 pare-feux en cluster
  3. obtenir la consommation électrique totale de tous les serveurs
  4. temps moyen de connexion sur plusieurs frontaux web

Fonctionnalités du méta-service

Le méta service se base sur des services existants. Il ne permet pas d’inventer des chiffres : des données doivent exister avant la création du méta service. Dans tous les cas ci-dessus, le méta service ne fait qu’effectuer des calculs sur des données pré-existantes. Les services doivent donc exister mais leurs données de performance doivent aussi être identiques. Par exemple, il n’est pas logique d’effectuer la moyenne d’un taux d’occupation du cpu et du taux d’occupation de la mémoire. Le type de donnée de performance doit être exactement le même quelques soient les services sur lesquels seront effectués le calcul.

En créant un méta service, vous choisissez les services sur lesquels seront effectués les calculs, la donnée de performance et la fonction (somme, moyenne, minimum et maximum) à appliquer sur les données de performance. De ce fait, vous choisissez l’expression de votre méta service. A vous de définir quelle expression vous souhaitez obtenir. Les exemples ci-dessus peuvent vous aider.

Un méta service se comporte comme un service. Il a donc:

  1. un état : ok/warning/unknown/critical
  2. une période de supervision, un intervalle de test et de retry, un nombre maximum de tentatives, …
  3. des valeurs seuils : si le résultat du calcul dépasse la valeur seuil critical alors le méta service sera en état critical
  4. des notifications : le(s) contact(s) ou le(s) groupe(s) de contact(s) à notifier, un intervalle de notification, une période de notification, …
  5. un graphique permettant de tracer au cours du temps le résultat de la fonction de calcul sur les données de performance
  6. un modèle de graphique

Configuration d’un méta service

La configuration d’un méta service impose les réflexions préalables suivantes :

  1. quels sont les services sur lesquels effectués mon calcul?
  2. quelle est la donnée de performance sur laquelle le calcul sera effectué? C’est ce que l’on appelle aussi “metric”
  3. quelle est la formule de calcul?

Les réponses aux questions 2 et 3 sont très évidentes dès que l’on a identifié l’expression que l’on souhaite représentée à l’aide d’un méta service. La réponse à la question 1 est soit:

  1. “tous les services identiques”. Dans ce cadre, la configuration du méta service se fera par un “matching SQL”. Il s’agit d’identifier tous les services portant le même nom. Exemple : tous les services portant le nom “pages_imprimees” pour traduire “la somme des pages imprimées de toutes les imprimantes”
  2. “une liste identifiée de services”. C’est le cas du groupe de machines ayant un même rôle dans une grappe (exemple : les serveurs JBoss). Ce sera traduit par la sélection précise des services dans une liste lors de la configuration du méta service.

 

Configuration d’un méta service par matching SQL

Pour configurer un méta service, il faut se rendre dans le menu “Configuration –> Services –> Meta Services –> Add”. Le formulaire suivant apparaît:

Centreon méta service : configuration par SQL Matching

Centreon méta service : configuration par SQL Matching

Les paramètres sont les suivants:

  • Meta Service Name : le nom que vous choisissez pour le méta service
  • Output format string (printf-style) : l’affichage du statut lorsque vous parcourez l’interface de supervision. C’est “l’output” d’un service. En général, la donnée est décrite et affichée à l’aide d’un appel équivalent à la commande “printf”. Par exemple: “Load15 is : %f”. Le “%f” représente la valeur calculée par l’opération mathématique et affichée sous forme d’un nombre flottant.
  • Warning Level : la valeur seuil warning
  • Critical Level : la valeur seuil critique
  • Calculation Type : la fonction de calcul
  • Selection Mode : le type de sélection des services. Dans notre cas, SQL Matching.
  • SQL LIKE-clause expression : l’expression SQL permettant de filtrer les services. Dans notre cas, nous mettons le nom du service tel que nous l’avons défini dans notre configuration. Il est possible d’utiliser les filtres SQL (% par exemple)
  • Metric : le nom de la donnée de performance (metric) sur laquelle le calcul sera effectué.

Les autres paramètres non présentés ici sont identiques à ceux présents pour un service. Je vous laisse les remplir puis sauvegarder.

Attention : le méta service ne sera créé que lorsque la configuration Nagios sera générée et Nagios redémarré.

Représentation dans l’interface de Supervision

Le résultat de la configuration apparaît dans le menu “Monitoring –> Services –> Meta-Services”:

Centreon méta service : résultat obtenu dans l'interface de supervision

Centreon méta service : résultat obtenu dans l'interface de supervision

 

Configuration d’un méta service par sélection unitaire dans une liste

La création d’un méta service par sélection unitaire des services dans une liste se fait en deux étapes:

  1. création du méta service en sélectionnant le type “Service list” et sauvegarde
  2. sélection unitaire des services

Pour simplifier la compréhension, une vidéo est meilleure qu’une série de screenshots:

2364

Enfin, penser à générer la configuration Nagios et à redémarrer Nagios!

 

Faire parvenir à un serveur Centreon-Syslog les messages d’un serveur Linux

30/12/2011

On continue notre série d’articles sur Centreon-Syslog. Après avoir découvert Centreon-Syslog et comment supprimer les messages d’erreur générés au démarrage de RSyslog, nous allons voir comment faire parvenir les messages syslog d’un serveur Linux au serveur Centreon-Syslog. Cependant, pour éviter de saturer le réseau ou le serveur Centreon-Syslog, nous filtrerons les messages envoyés. Seuls ceux considérés comme intéressants seront envoyés. Les autres seront uniquement stockés en local. Dans cet article, je ne parle que de RSyslog et je pars du principe que Centreon-Syslog est installé et configuré par défaut sur un serveur Centreon Enterprise Server (CES) dont l’adresse IP est 192.168.0.11. Je nomme sender le serveur qui doit envoyer les messages syslog sur le serveur Centreon-Syslog.

Envoyer tous les messages à un serveur Centreon-Syslog

Pour envoyer tous les messages à un serveur Centreon-Syslog, il suffit d’ajouter la ligne suivante au fichier /etc/rsyslog.conf sur le sender:

*.* @@192.168.0.11:514

Dans la ligne ci-dessus:

  • *.* signifie “tous les messages”
  • @@192.168.0.11 : signifie “seront envoyés à l’adresse IP 192.168.0.11
  • :514 signifie “sur le port 514″

Remarque: chaque serveur (le serveur Centreon-Syslog comme le serveur envoyant les messages) doivent avoir un nom d’hôte réel. Si ces deux serveurs possèdent le même nom d’hôte, vous ne pourrez savoir quel est le serveur qui a envoyé le message. Cette configuration se fait par la commande setup puis “Configuration du Réseau”, “Edit DNS Configuration” et en modifiant la première ligne. Pensez à sauvegarder la configuration par la bouton “Save” et à modifier le fichier /etc/hosts.

Enfin, il faut redémarrer rsyslog sur le sender :

/etc/init.d/rsyslog restart

Aucune action n’est nécessaire sur le serveur Centreon-Syslog (c’est la magie CES ;-) ).

 Filtrer les messages : où réaliser cette action?

Dans la configuration ci-dessus, tous les messages sont envoyés. Cela n’est pas forcément négatif si:

  • le réseau est capable d’encaisser cette charge supplémentaire
  • le serveur Centreon-Syslog est correctement dimensionné pour intégrer tous ces messages dans la base de données
  • l’espace disque du serveur hébergeant la base de données n’est pas limité

Dans tous les autres cas, il faut filtrer les messages pour éviter de les envoyer. Ce filtrage peut se faire à deux endroits. Le choix ne se fait pas à pile ou face mais selon la stratégie définie. Le filtrage peut être fait :

  • soit sur le serveur Centreon-Syslog : tous les messages sont reçus, seuls les messages considérés comme importants sont stockés en base. Les autres sont stockés dans les fichiers textes uniquement. Cela évite de surcharger la base de données tout en centralisant le stockage des logs.
  • soit sur chaque sender : chaque sender filtre les messages à envoyer pour éviter de saturer le réseau ou le serveur Centreon-Syslog.

Aucune des deux stratégies n’est la meilleure! Il faut choisir selon les critères suivants:

  1. performances du réseau et du serveur Centreon-Syslog
  2. besoin de centraliser ou non les messages syslog
  3. capacité de stockage du serveur Centreon-Syslog

Filtrer les messages selon leur “facilité” et/ou leur criticité

Dès que le choix est fait, il faut maintenant définir quelles données vont être stockées. Pour cela, il est possible de filtrer par:

  • “facilité” : cela correspond à l’origine du message, au type de programme l’ayant généré. Exemples : le kernel, les news, les mails, les crons, … Attention : ce n’est pas le nom du programme mais son type (“mail” est utilisé en lieu et place de postifx/exim/sendmail).
  • “criticité” : la gravité du message.

Le filtre se fait de la façon suivante:

facilité.criticité

Le caractère “.” est utilisé pour séparer la facilité de la criticité. Il est possible d’utiliser le caractère “*” pour définir “tous”. Exemples:

  • kern.* : tous les messages du kernel
  • *.err : tous les messages de criticité “err” ou supérieure

Exemple de configuration: modifier le fichier /etc/rsyslog.conf en ajoutant les deux directives suivantes:

kern.* @@192.168.0.11:514
*.notice @@192.168.0.11:514

Penser à redémarrer rsyslog après cette modification!

 

Centreon-Syslog : suppression des messages d’erreur au redémarrage de rsyslog

27/12/2011

Suite de l’article précédent sur La découverte de Centreon-Syslog. Si vous redémarrez RSyslog, vous trouverez ces messages d’erreur dans /var/log/messages:

rsyslogd: WARNING: rsyslogd is running in compatibility mode. Automatically generated config directives may interfer with your rsyslog.conf settings. We suggest upgrading your config and adding -c3 as the first rsyslogd option.
rsyslogd: Warning: backward compatibility layer added to following directive to rsyslog.conf: ModLoad immark
rsyslogd: Warning: backward compatibility layer added to following directive to rsyslog.conf: MarkMessagePeriod 1200
rsyslogd: Warning: backward compatibility layer added to following directive to rsyslog.conf: ModLoad imuxsock

Pour supprimer ces erreurs, il faut modifier le fichier /etc/sysconfig/rsyslog et remplacer la ligne suivante:

SYSGLOD_OPTIONS="-c3"

Par:

SYSLOGD_OPTIONS="-c3"

La correction est mise en évidence en rouge. Sauvegarder le fichier et redémarrer rsyslog:

/etc/init.d/rsyslog restart

Bien entendu, j’ai prévenu le responsable de Centreon-Syslog pour qu’il corrige ce problème.

Centreon Syslog : découverte

20/12/2011

Dans le cas d’erreurs systèmes ou de configuration, les serveurs Linux/Unix écrivent des messages dans des “logs”. Ce sont des fichiers textes contenant la date de l’erreur, sa criticité, le programme l’ayant généré et le message lui-même. C’est le fameux système syslog, généralement remplacé par ses successeurs rsyslog ou syslog-ng. Étant donné que ce sont des fichiers textes, ils sont lisibles par tous les outils systèmes comme sed/grep/awk/less/tail… L’enchaînement des commandes permet de filtrer et de rechercher le message d’erreur à une date et une heure précise et contenant le mot clé recherché. Les applications installées sur le système génèrent elles-aussi des messages d’erreur. Une bonne application doit envoyer ses messages à syslog afin qu’il les stocke dans ses fichiers.

Cependant, pour faire ces recherches, un compte administrateur est nécessaire sur le système. Admettons qu’un responsable d’application ait besoin de rechercher des messages dans les journaux, doit-il disposer d’un compte administrateur sur le serveur? Dans les services informatiques de taille moyenne, ce n’est pas problématique : les personnes installant les applications et les administrateurs sont les mêmes. Dans les services informatiques de taille plus importante, le responsable d’application n’a pas forcément les connaissances système suffisantes. Il ne doit pas avoir un compte administrateur pour éviter toute erreur de manipulation. De plus, si le serveur est partagé et pour des raisons de sécurité, ce responsable d’application ne doit pas non plus accéder à toutes les logs. La problématique est qu’il doit être suffisamment autonome pour éviter de solliciter les administrateurs systèmes… sans avoir accès à toutes les logs ni toutes les commandes systèmes. Comment lui donner un accès aux logs? La commande sudo, si bien configurée, est une première réponse. Mais elle ne sera pas simple à configurer.

Une autre solution est de centraliser la collecte de toutes les logs et de les présenter dans une application dédiée. Le mieux est encore d’intégrer cette interface directement dans l’outil de supervision. C’est possible avec Centreon et son module Centreon-Syslog. Cet article détaille l’utilisation de Centreon-Syslog.

Description du module

Centreon-Syslog permet d’afficher dans l’interface Centreon les messages syslog stockés dans une base de données. Il suffit de configurer tous les équipements réseaux et les serveurs pour qu’ils transfèrent leurs logs au serveur Centreon. Ce dernier, avec le module installé et correctement paramétré, stockera tous les événements syslog dans sa base de données et permettra de les visualiser grâce à son interface.

Installation

L’installation du module est beaucoup plus simple si vous utilisez Centreon Enterprise Server (CES). La version “Standard” suffit pour disposer du module. Je vous invite à télécharger la dernière version de CES afin de profiter de tous les avantages de cette distribution Linux dédiée à la supervision Centreon. Une fois CES installée, la vie est beaucoup plus simple:

yum install centreon-syslog-server centreon-syslog-frontend

Ensuite, vous devez vous rendre dans l’interface Centreon, dans le menu “Administration –> Modules” et cliquer sur l’icône tout à droite du module Centreon-Syslog et ensuite valider l’installation.

Configuration basique

Dans ce premier article, nous allons voir une configuration basique. Nous allons juste faire en sorte que le serveur de supervision stocke ses logs dans la base de données créée par le module Centreon-Syslog. Avantage de Centre Enterprise Server : c’est déjà fait! RSyslog est déjà configuré pour stocker toutes ses logs dans la base de données.

Cependant, il est nécessaire de modifier le mot de passe permettant l’accès à la base de données dans l’interface du module. Pour ce faire, toujours dans le menu “Administration –> Modules” , il faut cliquer sur le lien “Configuration” en dessous du titre “Syslog”. Ce lien se trouve dans le menu gauche. Pour identifier plus facilement, je l’ai encadré de rouge dans la capture d’écran ci-dessous:

Menu de configuration pour Centreon Syslog

Menu de configuration pour Centreon Syslog

Ensuite, il est nécessaire de modifier le mot de passe. Par défaut, il est vide. Or un mot de passe a été généré pour l’utilisateur MySQL “centreon-syslog”. Pour le connaître, il suffit de regarder la dernière ligne du fichier /etc/rsyslog.conf:
[root@ces ~]# tail -n 1 /etc/rsyslog.conf
*.* >127.0.0.1,centreon_syslog,centreon_syslog,Btjh1203;sysMysql
Le mot de passe créé automatiquement par Centreon Syslog est en rouge. Il suffit de saisir le même mot de passe pour le champ “Password of Database user” et sauvegarder.

Utilisation de l’interface

Ci-dessous, une vidéo présentant rapidement l’utilisation de l’interface temps-réel de Centreon-Syslog.

1

Une deuxième vidéo présentant l’interface de recherche de Centreon-Syslog.

1754

 

Interface vide?

Si jamais vous vous demandez pourquoi la partie “Search” est vide, c’est parce que vous êtes… impatient! ;-) En fait, une tâche cron est lancée toutes les nuits et archive les messages dans des tables spécifiques afin d’accélérer la recherche et le filtrage. Comme ce script n’a jamais été lancé, la page de recherche ne fonctionne pas. Bref, “ça ira mieux demain!”.

Centreon CLAPI : Command Line API

17/12/2011

 

Centreon est une interface web de supervision. Une partie de l’interface web est dédiée à la supervision : voir les status des équipements supervisés, diagnostiquer plus finement un problème en analysant les graphiques, disposer d’un reporting basique de la supervision, … Une autre partie de l’interface web de Centreon est dédiée à la saisie des éléments à superviser : ajouter un équipement à superviser, déclarer un processus système à superviser, mettre en place la supervision du CPU ou de la mémoire d’un équipement, … Cette saisie se fait au travers de formulaire: un formulaire permet de saisir tous les champs nécessaires à Centreon pour superviser efficacement l’élément. Les fonctionnalités du moteur de supervision étant nombreuses (principes d’ordonnancement, de notification, groupes, contacts, …) les formulaires sont conséquents. Ils reposent sur plusieurs onglets avec de nombreux champs à saisir. La très large majorité des utilisateurs de Centreon utilise principalement 2 onglets sur les 4 disponibles. Même si les modèles/templates de supervision permettent de simplifier et d’accélérer la saisie des champs des onglets, on est très loin de l’automatisation. Par exemple, comment saisir rapidement 300 hôtes? En utilisant l’interface web, c’est très fastidieux. Surtout, cette étape est source de très nombreuses erreurs.

Heureusement, Centreon CLAPI (“Centreon Command Line API” ou “CLAPI” pour les intimes) permet d’automatiser la saisie des éléments grâce… à la ligne de commande. La bonne vieille ligne de commande qui gagnera toujours lors de la saisie de nombreuses informations redondantes. Nous allons voir dans cet article quelques fonctionnalités bien pratiques de CLAPI.

Installation sur Centreon Enterprise Server

Je pars du principe que vous avez installé Centreon Enterprise Server (“CES“). Si ce n’est pas le cas, télécharger CES sur le site officiel de Centreon et installer la. CES, pour rappel, est une distribution Linux dédiée à Centreon : elle permet d’installer rapidement et simplement Centreon et tous les logiciels associés. Si vous avez installé CES, alors… CLAPI est déjà installé. C’est magique non? Si tel n’était pas le cas:root@ces # rpm -qa centreon-clapi
root@ces # yum update
root@ces # yum install centreon-clapi

Vérifications de base

Quelques vérifications pour s’assurer que tout fonctionne:

root@ces # ls -l /usr/share/centreon/www/modules/centreon-clapi/core/centreon
-rwxr-xr-x 1 root root 3971 jui  8 14:33 /usr/share/centreon/www/modules/centreon-clapi/core/centreon
root@ces # /usr/share/centreon/www/modules/centreon-clapi/core/centreon -u admin -p centreon -a POLLERLIST
1       Central
L’interpréteur de commande de CLAPI est le fichier “/usr/share/centreon/www/modules/centreon-clapi/core/centreon”. Celui-ci doit être exécutable pour pouvoir envoyer les commandes à Centreon. La seconde commande a permis de vérifier qu’il y avait bien au moins un poller.

Description du cas “théorique

Prenons un cas théorique pour expliciter l’utilisation de CLAPI. Ce cas est en réalité très pratique car c’est le cas que l’on retrouve dans de nombreux projets de supervision. Lorsqu’un projet de supervision est de taille importante, que le nombre de ressources à superviser dépasse 100, il est nécessaire d’industrialiser la configuration de la supervision. Pour cela, on réalise les actions suivantes:

  1. identification des équipements “types” : les équipements qui sont présents de nombreuses fois (exemple : “serveur Windows”, “serveur Linux”, “switch Cisco”, …)
  2. création des modèles/templates pour superviser parfaitement ces équipements
  3. test sur un environnement restreint (3 à 4 équipements de chaque type)
  4. déploiement.

Les 3 premières étapes doivent être réalisées dans l’interface de supervision. La dernière peut être faite en ligne de commande, grâce à CLAPI. Donc, lorsqu’on utilise CLAPI, les modèles sont déjà définis et “parfaits” : il n’est plus nécessaire de revenir dessus, de les corriger. Nous allons voir maintenant comment bien se servir de CLAPI.

Utilisation de CLAPI pour le déploiement

Tout d’abord, il faut se créer un fichier sous LibreOffice Calc. Ce fichier va contenir tous les équipements à déclarer. Ensuite, un export CSV sera réalisé grâce à LibreOffice pour pouvoir le passer à un script. Ce script aura pour but de lire toutes les lignes du fichier CSV et de réaliser les appels à CLAPI pour ajouter les équipements dans la base Centreon.

Exemple de fichier LibreOffice:

Host name host adress Poller hostgroups Templates
Linux1 192.168.0.1 Central Linux Linux,Apache
Linux2 192.168.0.2 Central Linux,MySQL Linux,MySQL
Linux3 192.168.0.3 Central Linux,MySQL Linux,Apache,MySQL

L’algorithmie du script est donc:

  •  pour chaque ligne CSV (sauf la première, correspondant généralement au titre)
    • Découper la ligne selon le caractère de séparation (le caractère ‘;’ dans l’exemple ci-dessus)
    • le nom de l’hôte est la première colonne
    • l’adresse de l’hôte est la deuxième colonne
    • le poller est dans la troisième colonne
    • les hostgroups sont tous dans la quatrième colonne
    • les templates d’hôte sont tous dans la cinquième colonne
    • ajouter l’hôte grâce à la commande CLAPI
  • Lister tous les pollers
  • Pour chaque poller
    • Lancer la génération des fichiers de configuration
    • Lancer le test de vérification des fichiers de configuration
    • Redémarrer le poller

C’est donc très simple et très rapide à développer.

Les commandes CLAPI

Les commandes CLAPI permettant de lancer les actions ci-dessus sont notées dans la documentation officielle de Centreon CLAPI. Je les résume ici pour faciliter la lecture de l’article.

Globalement, pour la suite de l’article :

  1. l’utilisateur s’est placé dans le répertoire “/usr/share/centreon/www/modules/centreon-clapi/core”
  2. le compte utilisateur “admin” (paramètre de l’option -u) est un compte administrateur de Centreon et il a pour mot de passe (paramètre de l’option -p) “centreon”
  3. une action est faite après l’option “-a”
  4. les arguments passés à l’action sont fournis par l’option “-v”
  5. une action est faite sur le type d’objet passé en argument à l’option “-o”

Traitement des pollers

Lister les pollers avec leur identifiant :

root@ces # ./centreon -u admin -p centreon -a POLLERLIST
1       Central

Générer la configuration d’un poller, en passant l’identifiant du poller (1 pour le poller Central) :

root@ces # ./centreon -u admin -p centreon -a POLLERGENERATE -v 1
Configuration files generated for poller 1
Return code end : 0

Tester la configuration d’un poller, en passant l’identifiant du poller :

root@ces # ./centreon -u admin -p centreon -a POLLERTEST -v 1
OK: Nagios Poller 1 can restart without problem...
Return code end : 0

Redémarrer un poller, en passant l’identifiant du poller :

root@ces # ./centreon -u admin -p centreon -a POLLERRESTART -v 1
Starting nagios: done.Return code end : 0

Ajouter un hôte

root@ces # ./centreon -u admin -p centreon -o HOST -a ADD -v "Linux1;Linux1;192.168.0.1;Linux,Apache;central;Linux" Les paramètres sont:

  • le nom de l’hôte
  • l’alias de l’hôte (remarque : je définis l’alias de l’hôte comme identique à son nom pour éviter d’alourdir le propos. Dans les faits, il est préférable de mettre un alias différent et significatif)
  • son adresse IP
  • la liste des modèles d’hôtes dont il hérite. Les membres de cette liste sont séparés par des virgules.
  • le nom du poller sur lequel il doit être attaché (le nom du poller, non son identifiant)
  • la liste des groupes d’hôtes dont il fera parti. Les membres de cette liste sont séparés par des virgules.

 

Conclusion

Centreon CLAPI permet d’accélérer grandement le déploiement. Grâce à une bonne méthode d’implémentation des modèles d’hôtes, un fichier LibreOffice Calc bien écrit et un peu de scripting, on peut accélérer grandement l’étape de déploiement. Je vous invite à voir toutes les autres commandes dans documentation officielle de Centreon CLAPI.