Micrometer : monitorez simplement votre application

on 27 September 2022 EVENT and Tags: , , , , , , , , with 0 comments

Le meetup Micrometer

Nous démarrons ici la saison 2022 / 2023 des meetups chez Ubik Ingénierie.
Il s’agit toujours de partager son retour d’expérience avec les autres Ubikois, d’échanger à propos de notre passion pour la technologie autour de Java.
Mais aussi de se retrouver un midi à Lille lors d’un échange convivial autour d’une bière et de pizzas 🙂

Previously in Ubik’s Meetups

Dans le dernier meetup Ubik sur les Circuit Breakers, nous avons vu comment couper l’accès à des services lorsqu’ils rencontrent des problèmes de charge, par exemple.

Ce nouveau meetup fait le lien avec Micrometer : on va pouvoir surveiller la fréquence de déclenchement des court-circuits.

Pourquoi monitorer son application ?

Il s’agit ici de surveiller la bonne santé de votre application. Quel est le taux d’erreurs ? Quels sont les problèmes techniques rencontrés ? Les temps de réponse sont-ils toujours bons ? L’application est-elle en train d’atteindre un point de rupture ? Globalement : le service est-il toujours bien rendu aux utilisateurs ? Il est crucial de surveiller ces indicateurs ou d’être alerté en cas de comportement suspect. Il en va de la survie de l’application.

Cet article résume une présentation orale lors d’un meetup.
Plus de détails sont disponibles dans les slides en bas de l’article.

Présentation de Micrometer

Florentin, notre speaker a commencé par présenter ce qu’est Micrometer !

C’est une bibliothèque qui permet à votre application de publier des logs et métriques. Aussi packagé pour plusieurs frameworks comme Spring et Quarkus.

Le protocole d’envoi des données est standard. Il existe ainsi plusieurs outils permettant de visualiser ces informations : Datadog, Prometheus, Dynatrace, Elastic Observability, et bien d’autres… Micrometer fournit des registries pour une vingtaine d’outils comme ceux-ci. Il est très facile d’en créer d’autres.

Ici, nous survolons globalement les possibilités offertes par l’outil.
Si après cela vous souhaitez explorer des points en particulier, vous pouvez voir le site officiel.

Mise en place de Micrometer avec Spring

Nous avons vu avec quelle simplicité déconcertante il est possible d’ajouter Micrometer dans Spring. Il s’agit d’inclure la dépendance Maven la dépendance Maven et une dépendance vers le registry voulu : le registry Datadog par exemple.

L’initialisation se fait en deux lignes de code simples.

Métriques par défaut dans Micrometer

Voici quelques métriques utilisables directement via Micrometer :

  • Uptime : temps de démarrage de l’application ;
  • JVM : threads vivants et actifs ;
  • Serveur : threads actifs ;
  • Disk space : espace disque disponible ;
  • CPU : utilisation du processeur ;
  • Cache : remplissage des caches…

D’autres composants rajoutent des métriques prêtes à utiliser :

  • C’est le cas de Kubernetes avec le nombre de pods actifs.
  • Également d’Hikari / Hibernate avec l’utilisation des pools de connexions aux bases de données.
  • Mais aussi de Tomcat avec le suivi des sessions.
  • Spring fournit aussi les temps de réponses des appels HTTP faits avec des RestTemplates.
  • Les patterns de Resilience4J comme les Circuit Breakers ont aussi leurs propres métriques.

Création de métriques personnalisées

Il est bien sûr possible d’ajouter vos propres métriques personnalisées si vous ne trouvez pas votre bonheur dans l’énorme offre de base.

Il y a différentes classes de métriques possibles :

  • Counter : compteur à incrémenter ;
  • Timer : recenser des temps ;
  • Gauge : envoie de statistiques uniquement lorsqu’un événement fixé est observé. Utile pour les statistiques sur les caches ou les collections ;
  • Et d’autres plus rares

Des exemples de définitions de métriques et leurs utilisations ont été montrés dans les slides.

En complément, les tags permettent de sectionner des métriques en fonction de critères définis.

Visualisation des métriques dans Datadog

Nous avons eu droit à un exemple d’intégration et de configuration pour brancher les métriques à Datadog grâce à Spring.

Après configuration de la clef d’API pour s’authentifier auprès de Datadog, les événements sont envoyés en mode PUSH à intervalles fixes.

Quelques clefs de configurations permettent de définir l’URL du serveur Datadog, ainsi que des tags par défaut.

Enfin, nous avons vu la création d’un dashboard sur Datadog pour visualiser les métriques de façon très graphique et pratique, ou pour configurer des alertes.

Plus en détails

Vous trouverez bien sûr de plus amples détails dans les slides de la présentation :