Clint Checketts, responsable principal du projet Micrometer, a récemment pris la parole lors de la conférence SpringOne Platform 2019 sur le framework de surveillance et d'alerte Micrometer. Micrometer fournit une façade simple au dessu des clients d'instrumentation pour différents systèmes de surveillance, ce qui permet aux développeurs d'instrumenter des applications basées sur JVM. Il peut non seulement être utilisé pour enregistrer des métriques, mais également un large éventail de fonctionnalités d'observabilité lorsqu'il est utilisé avec d'autres outils tels que Prometheus et Grafana afin de fournir une résilience aux applications.
Clint Checketts a discuté de l'importance des métriques dimensionnelles dans la surveillance globale des systèmes. Semblable à d'autres produits tels que Google Prometheus et Netflix Atlas, Micrometer prend en charge la gestion des données métriques dimensionnelles basées sur des séries chronologiques.
Il a parlé de la différence entre les mesures dimensionnelles et les mesures hiérarchiques. Les métriques dimensionnelles suivent les métriques différemment, en ce sens qu'elles sont tagguées, chaque métrique étant composée d'un nom et pouvant contenir plusieurs statistiques. Cela permet une meilleure flexibilité et extensibilité des requêtes. Il ne s'agit pas uniquement de surveiller les erreurs, mais bien de comprendre la santé globale du système.
L'observabilité repose fondamentalement sur trois piliers:
- Journalisation (Loggin) : informations détaillées sur les actions individuelles. Les bibliothèques incluent SLF4J, Log4J, Logback et JUL.
- Métriques (Metrics) : regrouper des informations sur les fonctionnalités de l'application. Les bibliothèques concernent les métriques de Micrometer, Prometheus et Drop Wizard.
- Traçage (Tracing) : Informations échantillonnées sur plusieurs services. La bibliothèque Zipkin entre dans cette catégorie.
Clint Checketts a également discuté des principales fonctionnalités de journalisation et de la comparaison entre Micrometer et la journalisation traditionnelle. Il prend en charge la journalisation commune avec des destinations telles que Elasticsearch. Il peut également être utilisé pour ajouter des métadadonnées transversales telles que des contextes de diagnostic imbriqués (NDC) aux messages du journal.
La terminologie de Micrometer inclut les composants suivants : Meter (ce qui est mesuré. Exemples: compteurs, minuteries et jauges), MeterRegistry (une abstraction d'un magasin de Meter), Tag (une mesure de Meter) et Metric (mesure individuelle).
Clint Checketts a montré comment utiliser ce framework de surveillance dans différentes applications et a donné des exemples de Micrometer utilisant Docker et de Kotlin utilisant les classes SimpleMeterRegistry et CompositeMeterRegistry.
Il a parlé de l'intégration de Micrometer dans les applications basées sur Spring. Le support est intégré à Spring et la classe doit simplement être injectée par autowiring. Une autre démon a montré comment configurer une application Spring avec Micrometer et activer l'Actuator Prometheus . De plus, le Metrics Actuator est alimenté par Micrometer.
Resilience4J, une bibliothèque pour la tolérance aux pannes, inclut la prise en charge de Micrometer et peut être utilisée pour surveiller les statistiques telles que l'état du disjoncteur et les taux de réussite / échec. Client Checketts a également montré comment obtenir des métriques personnalisées du front à partir d'une application Angular, en envoyant des métriques à Micrometer toutes les cinq secondes.
Vous pouvez télécharger l'exemple de code présenté dans la présentation à partir du projet Github.