Localisation : Lyon, FR
06 43 94 28 86
contact@logired.fr

Prometheus : système de supervision et d’alertes

Plusieurs problèmes peuvent survenir en production. Par exemple, un certificat SSL qui expire, une solution qui plante, un problème réseau ou un espace disque manquant sur une machine. Ainsi, l’objectif de la supervision est de s’assurer du bon fonctionnement d’un système. Cette technique de suivi peut couvrir plusieurs niveaux : infrastructure, application, processus métier ou contrat de service. Dans cet article d’introduction (d’autres viendront sur le même sujet), nous allons vous présenter Prometheus, un système de supervision et d’alertes, 100% open source.

Prometheus Késako ?

Créé en 2012 par SoundCloud, Prometheus a connu un succès auprès de plusieurs entreprises. Il est d’ailleurs devenu comme la solution de référence en matière de supervision. La simplicité et l’efficacité de lui font de lui un outil incontournable sur le marché du monitoring.

Mais comment ça marche ?

Plusieurs briques sont nécessaires pour profiter pleinement de Prometheus. Le schéma ci-dessous résume les interactions entre les différents composants.

Le serveur Prometheus récupère les métriques de l’ensemble des services surveillés via des requêtes http, lesquelles sont exécutées de façon périodique. Elles sont par la suite enregistrées au niveau de Prometheus dans une base de données interne sous le format série temporelle.

Enfin, ces métriques enregistrées peuvent par la suite être exploitées par les outils suivants:

1 – Prometheus web UI, fourni avec Prometheus, est un outil qui permet d’afficher les métriques via des requêtes PromQL. Très pratique pour faire des tests, ce module n’est généralement pas utilisé en tant qu’outil principal de visualisation.

2 – Grafana génère et présente de façon intuitive de grande quantité de données à travers des tableaux de bord. Un autre avantage de l’outil est sa gestion des utilisateurs.

3 – Alertmanager déclenche l’émission d’alertes via des emails ou des services de messagerie instantanée telle que Slack.

Exposition des métriques

Pour exposer les métriques, les systèmes surveillés affichent une page qui contient les données au format suivant :

# HELP http_requests_total The total number of HTTP requests.
# TYPE http_requests_total counter
http_requests_total{method=”post”,code=”200″} 1027 1395066363000

L’exemple précédent indique le nombre de réponses d’un serveur HTTP. Les données remontées sont :

ChampDescription
http_requests_totalLe nom de la métrique
{method=”post”, code=”200″}Les labels de la métrique
1027La valeur de la métrique
1395066363000Le timestamp

Exporters

Un exporter permet d’évaluer le statut du service. Une des forces de prometheus est le nombre d’exporters disponibles. Il en existe des centaines qui sont soit officiel, soit communautaire.

Les plus connus sont :

Node exporter : founit des métriques matérielles et OS UNIX.
Exemple d’utilisation : utilisation CPU, mémoire, espace disque.

Blackbox exporter : permet d’envoyer des requêtes en utilisant les protocoles suivants : ICMP, TCP, HTTP et DNS et de retourner le résultat.
Exemple d’utilisation : vérifier qu’un site web est opérationnel en retournant des informations sur le temps de réponse, la validité du certificat SSL.

Grok exporter : permet d’extraire des métriques à partir de fichier texte.
Exemple d’utilisation : lire des fichiers de log pour compter le nombre de fois qu’apparaissent les mots Warning et Error.

JMX exporter : permet de se connecter à une JVM et d’exposer les métriques qui nous intéressent.
Exemple d’utilisation : certaines librairies java exposent des informations via JMX, par exemple Camel retourne le nombre de message traités ainsi que les temps de traitements.

CloudWatch exporter : transforme des métriques Amazon CloudWatch pour les intégrer au niveau de Prometheus.

Par ici la liste non exhaustive des exporters : https://prometheus.io/docs/instrumenting/exporters/

Instrumentation

En plus des exporters, il est souvent intéressant de surveiller d’autres métriques métiers qui ne peuvent pas être exposées que via un développement spécifique.
Pour un site marchand, les informations utiles peuvent être à titre d’exemple :
– Le nombre d’inscriptions, de commandes passées ou de paniers non validés.

Prometheus offre des librairies pour instrumenter son code pour différents langages de programmation, par exemple : Java, Go, Python, Ruby, PHP, etc.

Pour aller plus loin, je vous invite à consulter la liste complète des librairies d’instrumentations via le lien suivant : https://prometheus.io/docs/instrumenting/clientlibs/

Conclusion

Et voilà pour cette rapide présentation de Prometheus. Il est important de noter que la supervision seule n’est pas suffisante. Il est ainsi indispensable de l’associer à un système d’alerting afin de notifier les opérateurs.

Pour ceux qui le souhaitent, nous avons mis en place et configuré ces outils pour plusieurs de nos clients. Logired se tient donc à votre disposition pour vous accompagner durant toutes les étapes de l’installation de manière cadrée, rapide, simple et sans risque.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *