
Il y a quelques mois, Google annonçait OpenCensus, une bibliothèque open source indépendante de tout fournisseur, dédiée à la collecte de télémétrie et de traces. OpenCensus simplifie la collecte de métriques depuis votre application ainsi que le traçage de la progression des requêtes.
Dans la plupart des cas, la collecte des données et leur export vers les systèmes de traçage et de monitoring sont clairement dissociés. Une fois OpenCensus intégré à votre projet, et après avoir identifié les métriques qui vous intéressent particulièrement, vous pouvez passer d'un système de monitoring à un autre, voire en utiliser plusieurs en parallèle, sans rien modifier à votre logique de collecte.
Chez DoiT International, nous développons actuellement une architecture de référence et une implémentation concrète d'un pipeline d'analytique d'événements (encore en chantier, mais vous pouvez y jeter un œil ici).
Notre API est écrite en Go et nous voulions offrir à ses utilisateurs une certaine visibilité sur le système ainsi que sur quelques métriques personnalisées que nous souhaitions exposer. Avant, il fallait choisir son système de monitoring, et le remplacer par un autre demandait du temps (et de l'argent). Mais comment faire lorsque l'on construit un système open source sans savoir à l'avance où ni comment il sera déployé, ni comment il sera supervisé ?
Avec OpenCensus, vous n'avez quasiment rien à décider à l'avance. Le choix du système de monitoring n'est pas étroitement couplé, et vous pouvez même en utiliser plusieurs en parallèle.
Pour exposer les métriques au système de monitoring de votre choix, il vous suffit de créer un nouvel exporter et de l'enregistrer :
https://gist.github.com/avivl/15fd071ca0212838aebec2e45430eb1c
Créer des métriques est tout aussi simple : il suffit de choisir leur type et la manière dont vous souhaitez les afficher :
https://gist.github.com/avivl/32ed40cbbfb8bbc07e3b3ae07a161251
Vous voilà prêt à collecter les métriques : appelez simplement la méthode Record en lui passant les données requises.
https://gist.github.com/avivl/f49969508a846fbf0abd1a7a37825c52
Comme le montrent les graphiques suivants, les métriques sont exportées à la fois vers Prometheus et Stackdriver, et visualisées dans chaque système :
Dashboard Prometheus-Grafana
Dashboard Stackdriver
Envie d'en lire davantage ? Découvrez notre blog, ou suivez Aviv sur Twitter.