Slide 1

Slide 1 text

L'observabilité dès le développement: Maîtrisez vos applications Java en production avec Grafana David PEQUEGNOT / Alexandre TOURET

Slide 2

Slide 2 text

Il était une fois un vendredi en production… https://blog.worldline.tech/2020/01/22/back-to-basics-logging.html

Slide 3

Slide 3 text

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)

Slide 4

Slide 4 text

Observabilité

Slide 5

Slide 5 text

Alexandre TOURET Architecte logiciel @touret_alex blog.touret.info David PEQUEGNOT Ingénieur Performance @foxlegend blog.worldline.tech Qui sommes-nous? 5

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Workshop

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

Pré-requis github.com www.gitpod.io

Slide 10

Slide 10 text

https://worldline.github.io/observability-workshop https://github.com/worldline/observability-workshop The workshop

Slide 11

Slide 11 text

L’application EasyPay

Slide 12

Slide 12 text

L’ application

Slide 13

Slide 13 text

L’application poses t e s poses an c ec s & card aut ori es t e pa ent custo er

Slide 14

Slide 14 text

ense à l’ bservabilité dès la conception ! Tableaux de bord Alertes Logs Traces Métriques

Slide 15

Slide 15 text

Logs, traces & métriques Logs Traces Métriques Ou est-ce que ça arrive? Quelque chose se passe ’ - q ’ nous arrive?

Slide 16

Slide 16 text

Une plateforme observable poses t e s poses an c ec s & card aut ori es t e pa ent tores traces custo er

Slide 17

Slide 17 text

Logs & Traces tores traces tores Lo s

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

Grafana poses an c ec s & card aut ori es t e pa ent tores traces tores Lo s

Slide 20

Slide 20 text

OpenTelemetry Collector

Slide 21

Slide 21 text

Traces

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

Instrumentation Agent Instrumentation OTEL Collector

Slide 24

Slide 24 text

Observabilité & Performances

Slide 25

Slide 25 text

• 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

Slide 26

Slide 26 text

• 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/

Slide 27

Slide 27 text

• 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)

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

Explore our jobs in tech: careers.worldline.com Want to shape how the world pays and get paid?