Pinpoint un APM Opensource simple pour débuter

Quelques définitions

APM Quesako ?

APM comme Application Performance Monitoring, un outil qui permet d’avoir une visibilité sur l’ensemble des requêtes d’une application. Mais aussi de mieux connaitre les interactions, entre les backends, frontend, middleware, API, etc. Et bénéficier de métriques sur chacun de ses composants.

Pourquoi Pinpoint ?

  • Il est écrit en Java et PHP, basé sur Dapper de Google (rien que ça), qui est un système de traces distribuées très puissant et rapide au demeurant.

  • Pinpoint a des agents Python, PHP et bien sur Java

  • Son overhead (cpu/mem), est aux alentours de 3% même en traçant 100% des requêtes

    NB : Pour ma part, sur certaines grosses applications, j’ai noté plus une consommation de 6-8% mais avec une haute fréquence en quasi temps réel

  • Il est opensource, avec une belle communauté : 10k étoiles sur Github, plus de 3k fork, 15 commits / mois

  • Je l’ai découvert il y a environ 3 ans, à l’époque il n’y avait pas forcément beaucoup d’APM opensource aussi complet et je trouve qu’il est simple d’usage

Comment Pinpoint fait pour colorer les flux ?

Grâce aux agents, qui plus est sans modifier une seule ligne de code

Les fonctionnalités

  • ServerMap : affiche la topologie des différents composants (back/front/middleware/API, etc.)
  • Realtime Active Thread Chart : monitoring des threads en temps réel
  • Request/Response Scatter Chart : visualiser le nombre de requêtes, leurs temps de réponse, et bien sur un filtre
  • CallStack : détails des requêtes
  • Inspector : des métriques (cpu, mémoire, tps, connexions aux bases de données, etc)
  • Alarmes : on peut fixer des alertes SMS/Mail sur pas mal d’indicateurs

Les composants

  • pinpoint-hbase : SGBD NoSQL
  • pinpoint-mysql : SGDB pour la persistance des utilisateurs, groupes et alarmes
  • pinpoint-web : IHM de consultation
  • pinpoint-collector : collecte les données des agents et gére la persistance vers Hbase
  • pinpoint-quickstart : application de démo Java
  • pinpoint-agent : agent de collecte
  • zookeepers : gère la communication distribuées entre les agents et le collecteur
  • jobmanager et taskmanager : gestion de flux temps réel Apache Flink

Schéma d’architecture

Architecture Pinpoint

Source : Naver

Déploiement de PinPoint sur Docker

On va faire simple, je dirai même simpliste, on va utiliser leur image Docker all inclusive :)

git clone https://github.com/naver/pinpoint-docker.git
docker-compose up
  • On patiente environ 5min
  • Puis on se rend sur l’application de démo http://FQDN:8000/
  • On clic sur l’UI pour générer du trafic (il y a même des stress test).
  • Direction vers PinPoint Web http://FQDN:8079 pour visualiser vos statistiques
  • Et on sélectionne Quickapp dans le champ application, puis dans le datepicker “last 5min” par exemple

Conclusion

Pinpoint est un bon APM, il manque encore beaucoup de fonctionnalités, de métriques supplémentaires, des vues différentes, des statistiques, etc.

Mais si vous n’avez pas la volonté de passer à Dynatrace, New Relic, SignalFX, etc. Pinpoint est un bon début.

Et si vous êtes sur Kubernetes, il faut savoir qu’il y a des outils encore plus spécifiques pour analyser les performances de vos applicatifs.

Quelques aperçu

Pinpoint apercu 1

Pinpoint apercu 2

Pinpoint apercu 3

Pinpoint apercu 4

Pinpoint apercu 5

Pinpoint apercu 6

PinPoint apercu 7