Il y a quelques temps, j'avais déjà expliqué à quel point le logiciel de supervision Zabbix pouvait rendre service. Aujourd'hui nous allons voir ce que la version 1.8 apporte (ou semble apporter) par rapport à la 1.4. Bien entendu, j'invite tout ceux qui ne connaissent pas du tout zabbix à lire mon précédent billet avant celui ci...

Quelques notes préalables :

Je ne prétend pas du tout être un expert de ce logiciel. Au contraire même, je ne suis qu'un simple utilisateur, qui se dépatouille comme il peut avec la doc qu'il trouve, et qui est encore loin de comprendre tout ce qu'il pourrait faire avec. Il est donc probable que ce billet soit très incomplet, merci à tout ceux qui aurait vraiment étudié le sujet de m'apporter leurs lumières en commentaire :)

Je suis très en retard. Nous en sommes déjà à la version 1.8.4, et la version 2 semble bien avancée. Mais comme je suis du genre à utiliser les paquets fournis par mes distributions, je suis rarement à jour sur les versions :p

La tentative de jeu de mots dans le titre de ce billet est vraiment foireuse. Pardon, je le ferai plus.

Ce qui ne change pas

En résumé, tout ce qui était présent dans la 1.4 est toujours la. Les principes restent les mêmes :

  • On crée des modèles (templates) contenant des éléments (item).
  • On crée des machines (hotes), auxquelles on affecte des modèles, et qu'il est possible d'organiser dans des groupes.
  • On crée des déclencheurs (trigger) qui changent d'état en fonctions de certaines conditions
  • On crée des actions (envoi de mails, lancement de scripts...) en fonction de l'état de certains déclencheurs (entre autre).
  • On peut aussi créer des graphiques assez sophistiquées, basés sur l'historique des valeurs d'un ou plusieurs item.
  • On peut créer des écrans (screen), contenant plusieurs graphiques agencés comme on le souhaite, pour simplifier la supervision.

Ce qui a été ajouté

  • Traductions plus nombreuses
  • La création de "diapositives" (slides)
  • La création de "cartes" (map).
  • La gestion de la qualité de service (calcul automatique du SLA).
  • Améliorations des modes de découvertes automatiques des hôtes.
  • Plusieurs types de vérifications

Voyons ces différents points plus en détail :

Les traductions

Zabbix est maintenant officiellement traduit dans plus de 16 langues. En ce qui concerne le français, c'est une vraie réussite. (Chose qui est assez rare en informatique pour être soulignée). Vraiment, je félicite le traducteur. Et en cas d'appel à l'aide auprès d'une communauté anglophone, il suffit de deux clics pour revenir à l'anglais. Mais en utilisation courante, je trouve même certains menus plus explicites en français !

Les diapositives

Je n'ai pas testé, mais l'idée est simple. Créer un "défilement d'écrans". C'est donc une nouvelle notion qui vient se placer "au dessus" des écrans. On crée des graphiques, on les utilise pour créer des écrans, puis on place les écrans dans un ordre précis pour créer une présentation qui défilera automatiquement.

Les cartes

Le but est d'avoir une représentation graphique de son réseau, avec les liens entre les équipements (switchs, machines...). Bien sur, cette carte est dynamique est doit afficher les alertes qui remontent sur les différents équipements. Je n'ai pas passé beaucoup de temps sur cette fonction qui me semble encore bien jeune (et quelque peu buguée...) Tout ceci s'arrangera probablement avec la version 2 en cours de développement.

La QOS

Voila quelque chose de très intéressant... Superviser des machines, c'est bien. Intervenir (peut être même automatiquement) en cas de problèmes, c'est super. Mais pouvoir en plus, à la fin de l'année, montrer à vos clients ou à votre patron qu'au final le service attendu à été rendu 99,99% du temps, la c'est la cerise sur le gâteau. Et c'est exactement à cela que sert la nouvelle notion de "service".

Prenons un exemple très simple. Vous êtes payés pour fournir un service d'hebergement web. Le service (et donc vos objectifs) sont atteints lorsque :

  • Le serveur fonctionne correctement (le cpu n'est pas débordé etc)
  • Le serveur web tourne normalement (apache est lancé, et ces métriques sont bonnes)
  • Le serveur de base de données fonctionne aussi (car si le SGBD ne fonctionne pas, le site web ne fonctionnera en fait plus non plus).

Et bien il est maintenant possible, dans Zabbix, de lui indiquer cela. De le paramétrer en lui expliquant que le service "web-prod" par exemple, n'est rendu que si ces trois conditions sont respectées. Mais on peut même faire mieux. Peut etre que votre contrat avec vos clients précisent que vous avez le droit de mettre le site web à l’arrêt pendant 2 heures tous les mois, afin de procéder aux mises à jour etc. La encore, Zabbix saura en tenir compte. Il suffira de lui indiquer les plages horaires à ne pas prendre en compte dans ces calculs. Et au final, Zabbix vous affichera donc de jolis graphiques avec les calculs de SLA correspondant. Vous serez donc en mesure de démontrer que vos objectifs sont atteints, et que le site web à été opérationnel pendant X % du temps sur l'année.

A titre personnel, et juste pour rigoler, j'ai crée un élément qui stock le temps de ping entre mon lan et une machine chez mon FAI. J'estime que ma qualité de connexion n'est pas bonne lorsque ce temps dépasse les 60 ms. J'ai aussi indiqué que j'accepte de mon FAI un SLA de 90% (autrement dit, tant que la durée pendant laquelle le temps de ping est supérieur à 60 ms ne dépasse pas 90% du temps, tout va bien).

Voici le graphique obtenu (ne pas tenir comptes des premiers barres):

SLA_Internet.png

En moyenne, et sur une journée, j'ai donc un ping correct plus de 95% du temps. Je peux donc objectivement dire que je suis satisfait de mon FAI :)

Nouveaux mode de découvertes.

N'utilisant pas du tout cette fonction, je n'ai rien de particulier à dire sur le sujet...

Nouveaux modes de vérifications

La par contre...

Le nombre de méthodes de supervision devient tellement important qu'il me semble important de les reprendre un par un. Voila donc ce dont Zabbix est actuellement capable de faire en la matière. Je rappel une dernière fois que, dans tous les cas, le but est le même. Obtenir une valeur (numérique ou chaine de caractère) et l'associer à un élément. Notez aussi qu'une étoile (*) en face du nom de la méthode indique que le déploiement d'un agent est nécessaire sur la machine "cliente" pour profiter de ce mode de supervision.

Zabbix agent (passif) *

Le serveur se connecte régulièrement a l'agent et demande la valeur de l’élément. En plus de toutes les fonctions implantés par défaut, ce mode de fonctionnement permet d'obtenir les valeurs en lançant des scripts coté clients. (Si l’exécution de commandes a distances sont autorisés, voir le fichier de config).

Zabbix agent (actif) *

L'agent se connecte périodiquement au serveur, et obtient une liste de valeurs à renvoyer. Cela permet de déporter la charge de travail du serveur de supervision sur la machine à superviser. (Mais si la machine cliente à un soucis, le serveur n'en saura peut être rien...)

Vérification simple

Simples tests réseaux depuis le serveur (connexion ftp, http etc).

Zabbix Interne

Test sur des valeurs internes à Zabbix, déjà dans la base (quantité d'item etc).

Agent SNMP v1, v2 ou v3

Le serveur interroge la machine cible en utilisant le protocole SNMP.

Vérifications agrégées

Calcul d'une nouvelle donnée, à partir de valeurs déjà présentes dans la base

Items calculés *

Calcul d'une nouvelle donné à partir de données récupérés à un instant t via l'agent.

Vérifications externe

Lancement d'un script ou d'un binaire coté serveur

Agent ssh ou telnet

Connexion ssh faite par le serveur sur la machine cliente et lancement d'un script.

Zabbix trapper

Le serveur ne fait rien de son coté. Il attend simplement que les données lui soient envoyées, directement par l'applicatif à superviser. (voir Zapcat Trapper) Cette méthode implique donc que l'application supervisée soit développée pour envoyer les infos à Zabbix.

Conclusions

Beaucoup de bonnes choses. Zabbix évolue vite, et il évolue bien. Comme on pouvait l'éspérer, la mise à jour des agents n'est pas nécessaires, et un serveur en version 1.8 par exemple, pourra parfaitement interroger de agents avec une version inférieure.

Si vous êtes un geek, que vos machines sont déjà parfaitement sécurisés (sauvegardes etc), mais qu'elles n'étaient pas encore véritablement supervisées... Vous savez ce qu'il vous reste à faire : A vos claviers !