Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[RVD24] L'observabilité dès le développement: Maîtrisez vos applications Java en production avec Grafana

[RVD24] L'observabilité dès le développement: Maîtrisez vos applications Java en production avec Grafana

Imaginez, c'est vendredi après-midi.
Vous êtes impatient de profiter de votre week-end quand un ingénieur Ops vous transfère un problème bloquant avec une erreur HTTP 500.

Il n'a en effet, pas réussi à identifier l'origine en raison d'un manque d'informations contextuelles.
Après quelques heures, vous parvenez enfin à l'identifier en le reproduisant et en le déboguant sur votre ordinateur.

Si vous avez l'habitude de faire face à de tels problèmes, cela signifie sûrement que vous avez négligé le développement d'une des fonctionnalités les plus importantes de votre application : l'observabilité !
Au cours de cet atelier, nous mettrons en place des outils et des bonnes pratiques pour rendre une application Java plus fiable et prête pour la production.
Nous aurons ainsi un aperçu de la manière dont les développeurs peuvent faire des Ops leurs meilleurs amis !

Alexandre Touret

July 08, 2024
Tweet

More Decks by Alexandre Touret

Other Decks in Programming

Transcript

  1. 2024-06-10T10:44:54.444+02:00 ERROR 387865 --- [easypay-service] [o-auto-1-exec-5] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for

    servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.NullPointerException: Cannot invoke "java.lang.Boolean.booleanValue()" because "java.util.List.get(int).active" is null] with root cause java.lang.NullPointerException: Cannot invoke "java.lang.Boolean.booleanValue()" because "java.util.List.get(int).active" is null at com.worldline.easypay.payment.control.PosValidator.isActive(PosVali dator.java:34) at com.worldline.easypay.payment.control.PaymentService.process(Paymen tService.java:46)
  2. We design payments technology that powers the growth of millions

    of businesses around the world. 7000+ engineers in over 40 countries Managing 43+ billion transactions per year €250M spent in R&D every year Handling 150+ payment methods #1 European payment processor
  3. Identifier les soucis dans les logs et les améliorer Remonter

    des métriques Mettre en place les traces Corréler le tout! Le déroulement
  4. L’application poses t e s poses an c ec s

    & card aut ori es t e pa ent custo er
  5. Logs, traces & métriques Logs Traces Métriques Ou est-ce que

    ça arrive? Quelque chose se passe ’ - q ’ nous arrive?
  6. Une plateforme observable poses t e s poses an c

    ec s & card aut ori es t e pa ent tores traces custo er
  7. Metrics poses t e s poses an c ec s

    & card aut ori es t e pa ent custo er
  8. Grafana poses an c ec s & card aut ori

    es t e pa ent tores traces tores Lo s
  9. Comment instrumenter mon programme ? 2 manières de faire Librairies

    • Plus rapide au démarrage • Indispensable pour le mode natif Agent • Fonctionne « out of the box » • Permet de décorréler le livrable fonctionnel d’un a ent • Offre plus de souplesse
  10. • Le manque de logs impacte la compréhension de l’application

    • Trop de logs impacte la performance Logs Benchmark from Sebastian Daschner: Logging Performance Comparison https://www.javacodegeeks.com/2022/07/logging-performance-comparison.html
  11. • Très utile pour comprendre l’état d’un système ou d’un

    processus • Mais… o Le nombre de métriques peut impacter les performances (ex. La mémoire) o Attention aux histogrammes, buc ets … o Attention à la cardinalité des labels Métriques Vert.X: Micrometer Metrics Performance https://vertx.io/blog/micrometer-metrics-performance/
  12. • Par défaut, on peut générer une trace pour chaque

    transaction • Mais… cela peut impacter les performances de votre application et de votre stockage ➢Utilisez un collecteur Traces 1201,51 1477,82371 1468,98875 0 200 400 600 800 1000 1200 1400 1600 100% DISABLED 0% RPS (29 spans/trace) 1471,708845 1478,591626 1478,69221 0 200 400 600 800 1000 1200 1400 1600 100% DIS. 0% RPS (7 spans/trace)
  13. Traces Head Sampling & Performance 1477,82371 1468,98875 1422,40019 1320,57735 1252,411

    1201,51 0 200 400 600 800 1000 1200 1400 1600 RPS - 29 spans/trace 549,89 553,13 571,25 615,37 648,82 676,22 0 100 200 300 400 500 600 700 800 Avg. Response Time (ms) – 29 spans / trace
  14. Traces Head Sampling & Resources Usage 0,00% 10,00% 20,00% 30,00%

    40,00% 50,00% 60,00% 70,00% 80,00% 90,00% 100,00% CPU% - 29 spans/trace 576,06 624,53 718,47 818,42 918,7 992,88 0 200 400 600 800 1000 1200 RSS (MB) - 29 spans/trace
  15. Don’t be a stran er! Follow & get in touch

    @foxlegend linkedin.com/in /davidpequegnot/ blog.worldline.tech @WorldlineTech Follow our tech team: Follow us: @touret_alex linkedin.com/in /atouret 30 | Feedback