Zabbix : nettoyer les faux-positifs pour le SLA

Publié le jeu. 25 août 2016 dans Informatique

Zabbix est un outil de supervision (monitoring) Open Source, très flexible et performant. Parmi ses nombreuses fonctionnalités, on retrouve le calcul de SLA (Service Level Agreement), une méthode de calcul de disponibilité des services que l'on propose. Mais comment faire quand ce calcul utilise des données temporairement erronées ?

De nombreuses sociétés s'appuient sur cet indicateur, soit pour assurer à leurs clients une qualité de service, soit en tant que clients pour imposer à leurs fournisseurs des pénalités en cas de qualité insuffisante du service qu'ils achètent.

La problématique

Le SLA calculé par Zabbix est généré par les événements (events), eux-mêmes générés par les déclencheurs (triggers), liés aux éléments (items), dans lesquels on retrouve les données remontées lors de la supervision...

Cependant, comme toute méthode, la supervision n'est pas parfaite et il peut arriver de rencontrer des faux positifs. Imaginons le cas où un indicateur se repose sur une page web en vérifiant son contenu. Si les développeurs de cette page web la font évoluer sans prévenir la personne en charge de la supervision, la sonde peut remonter une erreur alors qu'il s'agit d'un changement tout à fait normal. Le temps que la sonde soit modifiée, elle remontera des alertes, celles-ci impacteront négativement le SLA alors que le service est bel et bien encore fonctionnel.

Dans ce cas, on peut souhaiter corriger le SLA en supprimant ces faux-positifs, tout en gardant la trace de ces alertes dans la base de données.

Pour cela, une seule solution : aller modifier à la main le contenu de la base de données !

La méthode

1. Le service

Commençons par retrouver l'identifiant du service concerné. Pour cela, utilisons la commande SQL SELECT * FROM services; afin de lister l'ensemble des SLA configurés : la colonne serviceid contient cet identifiant.

zabbix=> SELECT * FROM services;
 serviceid |     name      | status | algorithm | triggerid | showsla | goodsla | sortorder
-----------+---------------+--------+-----------+-----------+---------+---------+-----------
         1 | Web main page |      0 |         1 |     14140 |       1 | 99.9500 |         0
         2 | Mail service  |      0 |         1 |     14643 |       1 | 99.9950 |         0

Ici, on s'intéressera au service ayant l'identifiant 1.

2. Les dates

Pour récupérer les dates des événements qui ont généré des faux-positifs, le plus simple est de retrouver leur historique (par exemple en passant par l'écran Surveillance → Aperçu et en cliquant sur le lien Dernières valeurs), de filtrer l'historique afin de n'afficher que les erreurs puis de cliquer sur le bouton Format texte en haut à droite.

Les champs du fichier texte résultat sont les suivants :

  • date
  • heure
  • horodatage système
  • valeur

On pourra par exemple rencontrer le contenu suivant :

19/08/2016 13:01:14 1471604474 Wrong page
19/08/2016 11:48:14 1471600094 Wrong page
19/08/2016 09:09:13 1471590553 Wrong page

Le champs qui nous concerne est l'horodatage, dont les valeurs sont ici 1471604474, 1471600094 et 1471590553.

3. Supprimer les alarmes

On ne supprimera pas les événements eux-mêmes, afin de conserver un historique réaliste. Par contre, on peut supprimer les "alarmes" des SLA, c'est-à-dire l'information de laquelle découle le calcul du SLA ; cette information est totalement décorrélée de l'événement.

Cela se passe dans la table service_alarms : il faut y supprimer les lignes dont les champs serviceid et clock correspondent aux cas que l'on a retrouvés.

Dans notre exemple, on exécutera donc les commandes SQL suivantes :

DELETE FROM service_alarms WHERE serviceid=1 AND clock=1471604474;
DELETE FROM service_alarms WHERE serviceid=1 AND clock=1471600094;
DELETE FROM service_alarms WHERE serviceid=1 AND clock=1471590553;

À partir de ce moment-là, les SLA seront calculés sans prendre en compte les faux positifs, tout en conservant les événements correspondant dans la base de données.

Commentaires
Il n'y a aucun commentaire sur cet article.

Écrire un commentaire