Skip to content

Voici tritondigital-counters: surveillance d’application pragmatique pour la JVM

by Julien on juin 7th, 2015

An english version of this post is available here.

Il existe un certain nombre de systèmes dédiés à la surveillance de vos applications distribuées. Du coté des serveurs, on peut citer par exemple OpenTSDB, Datadog ou InfluxDB. Ces systèmes autorisent des applications comptant plusieurs centaines d’instances à publier des métriques variées, puis de les analyser.

Malheureusement, il n’est pas toujours aisé de les utiliser, et quelques problèmes pratiques se posent lorsqu’en tant qu’entreprise, on souhaite les adopter:

  • Prisonier: la plupart des APIs clientes sont spécifiques à ces systèmes, et ne facilite pas vraiment le passage de l’un à l’autre. Changer de système requiert de modifier en profondeur les applications.
  • Performance: la plupart des APIs clientes appellent leur back-end sur le réseau à chaque mise à jour d’un métrique, ce qui est prohibitif pour des applications chargées qui répondent à des milliers de transactions par seconde.
  • Coût: la plupart des APIs clientes se connectent à leur serveur de façon bloquante. Ici encore, ce n’est pas optimal pour les applications réactives et à forte charge.

A l’autre bout de la chaîne, il existe des APIs bien pensées pour surveiller une instance d’une application. En particulier, les Codahale Metrics sont très populaires, du à leur simplicité et leur bonne performance. Mais là encore, ce n’est pas parfait:

  • Pas de serveur: si vous avez plusieurs instances de votre application, vous n’aurez pas de vue aggrégée de votre système.
  • Pas de tags dynamiques: la plupart des serveurs supportent des tags rajoutés à la volée lors de chaque mise à jour des métriques. Cela permet des analyses indispensables en pratique, mais malheureusement, Codahale Metrics ne les supporte pas.

C’est pourquoi à Triton Digital, nous avons développé une librarie simple pour répondre à toutes ces problématiques. Elle est utilisée en production depuis 8 mois environ dans une dizaine de systèmes différents. Nous sommes excités de la rendre disponible à la communauté Open Source aujourd’hui!

Voici quelque points saillants:

  • Serveurs multiples: support de plusieurs serveurs différent. Présentement, la librairie supporte Datadog et Logback (pour le débuggage). Initialement, elle supportait également OpenTSDB. Si vous êtes intéressés, contactez moi, je pourrais ré-introduire son support.
  • Faible coût: 100% asynchrone et IO non bloquant, basé sur akka-io. La librarie utilise également Codahale Metrics derrière le rideau pour maintenir les valeurs des métriques entre chaque appel aux serveurs. Les serveurs ne sont appelés qu’au 15 secondes pour recevoir un snapshot de tous les métriques. Ainsi, les applications n’ont pas à ce soucier d'”économiser” leurs mise à jour de métriques.
  • Tags: la librairie utilise une API proche de celle de Codahale, mais tout en supportant les tags à la volée.
  • Pour la JVM: Developé en Scala, mais avec une API pensée pour JAVA, qui devrait convenir à tous les languages de la JVM.

La librairie est disponible sous Maven Central. Vous trouverez le code source et la documentation sur GitHub:

tritondigital-counters sur Github

N’hésitez pas à poser des questions, soumettre des bugs, etc… sur GitHub.

From → Uncategorized

One Comment
  1. With so many application monitoring tools being launched every year, finding the best one that suits your IT needs can sometimes become a challenge. There might be a great one but its too expensive to acquire by small scale IT industry.

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS