Vous verrez check_cluster sous un autre angle

Posted by on 27 Août 2010 in Astuces, Planet | 1 comment

Le plugin check_cluster sert à superviser un regroupement d’hôtes et de services que vous considérez comme un cluster dans votre supervision. Nous allons voir que si on regarde ce plugin sous un autre angle, son utilisation peut être très utile et surtout très simplifié.

Par exemple, vous disposez d’une batterie de serveur Web et vous désirez créer un service capable de vous alerter quand votre cluster apache commence à être défaillant.

Admettons que vous avez 5 hôtes :

  • WEB_1
  • WEB_2
  • WEB_3
  • WEB_4
  • WEB_5

Ce qui vous intéresse est de contrôler que tous vos serveurs soient disponible. Pour se faire, l’utilisation traditionnelle de check_cluster veut que vous définissiez dans votre fichier commands.cfg la commande suivante :

define command {
command_name check_cluster_host
command_line /usr/local/nagios/libexec/check_cluster -h -d $ARG1$ -w $ARG2$ -c $ARG3$
}

  • $ARG1$ : prend les valeurs des états des hôtes de votre cluster ($HOSTSTATEID)
  • $ARG2$ : prend la valeur de la limite d’hôtes en états non-OK avant de passer en WARNING
  • $ARG3$ : prend la valeur de la limite d’hôtes en états non-OK avant de passer en CRITICAL

Donc dans votre fichier services.cfg, votre déclaration ressemble à ça :

define service {
host_name SURV_CLUSTER
service_description Cluster WEB
check_command check_cluster_host!$HOSTSTATEID:WEB_1$,$HOSTSTATEID:WEB_2$,$HOSTSTATEID:WEB_3$,$HOSTSTATEID:WEB_4$,$HOSTSTATEID:WEB_5$!2!4
...
}

Ce que l’on remarque c’est que l’option -d donc le $ARG1$ peut être très rébarbative si vous disposez d’un cluster assez gros. Vous me direz que les clusters courent pas les rues forcément et quand il y en a, ça reste relativement petit.

Mais imaginez, que vous désirez appliquer ce « principe » de cluster à d’autres utilisations.

  • Regrouper les machines d’un site de production pour avoir un service de surveillance de ce site
  • Regrouper les machines d’une région afin de remonter les impacts d’une coupure d’une fibre ou autre
  • etc …

Pour vous simplifier la vie du check_cluster, il est possible de mixer la puissance du check_cluster avec celle des macros à la demande de Nagios (cf : Chapitre 26 – Utilisation des macros dans les commandes.

On va reproduire le même exemple que ci-dessus mais avec les macros à la demande.

La définition de la commande reste la même.

Nous avons toujours nos 5 hôtes. Nous allons les regrouper dans un groupe d’hôtes que nous allons appeler HSTG_CLUSTER_WEB.


define hostgroup{
hostgroup_name HSTG_CLUSTER_WEB
alias Groupe d'hôtes de notre cluster Web
members WEB_1,WEB_2,WEB_3,WEB_4,WEB_5
}

Pour finir, la déclaration de notre service se fera de la manière suivante :

define service {
host_name SURV_CLUSTER
service_description Cluster WEB
check_command check_cluster_host!$HOSTSTATEID:HSTG_CLUSTER_WEB:,$!2!4
...
}

J'explique un peu le principe de ma macro. La macro $HOSTSTATEID:HSTG_CLUSTER_WEB:,$ retournera une liste d'états hôtes séparés par des virgules pour les hôtes membres du groupe HSTG_CLUSTER_WEB:

$HOSTSTATEID:HSTG_CLUSTER_WEB:,$

La définition de cette macro retournera quelque chose ressemblant à ceci :

0,2,1,1,0,0,2

Ca tombe bien c'est ce que désire l'option -d de check_cluster. Donc vous voyez cette petite astuce permet de vous simplifier la vie pour la saisie de cette commande et surtout de ne pas se limiter qu'à une utilisation de cluster.

A vos config !

Read More