Successfully reported this slideshow.

Observabilité : de Zéro à OpenTelemetry [TNT22]

0

Share

Upcoming SlideShare
What to Upload to SlideShare
What to Upload to SlideShare
Loading in …3
×
1 of 43
1 of 43

Observabilité : de Zéro à OpenTelemetry [TNT22]

0

Share

Download to read offline

Avez-vous déjà entendu parler d’Observabilité ?

* Non ? Dommage pour votre prod ! Nous vous souhaitons une belle war room :-)
* Oui ? L’implémentez-vous pour autant ?

L’Observabilité est un concept qui n’est pas récent, mais qui a pris de l’ampleur ces dernières années, et plus encore avec l’arrivée de projets comme Prometheus, Grafana ou encore OpenTelemetry. En pratique ce sont tout plein d’outils qui vont vous permettre d’instrumenter et de connaître tous les petits secrets de votre application. Grâce à eux vous devriez être capable d’expliquer le moindre soubresaut, voir même de les prévoir et agir en conséquence ! Mais au fait que sont tous ses outils ? En quoi ça consiste ? Et surtout comme ça marche ?

Dans cette session, nous explorerons par le menu le concept d’Observabilité, de ses 3 Piliers jusqu’au principe d’instrumentation, tout cela illustré avec un peu de code. Nous verrons également comment OpenTelemetry se veut être la solution de référence qui abordera tous ces aspects, au plus grand bonheur de notre production (et des nuits de vos SRE préférés) !

Ce talk a été donné lors de la conférence Touraine Tech 2022 (https://touraine.tech/).

Ressources :

* Démonstration: https://github.com/foxlegend/observablity-from-zero-to-opentelemetry
* Injection de charge: https://github.com/TheCopycat/spring-petclinic-bench

Avez-vous déjà entendu parler d’Observabilité ?

* Non ? Dommage pour votre prod ! Nous vous souhaitons une belle war room :-)
* Oui ? L’implémentez-vous pour autant ?

L’Observabilité est un concept qui n’est pas récent, mais qui a pris de l’ampleur ces dernières années, et plus encore avec l’arrivée de projets comme Prometheus, Grafana ou encore OpenTelemetry. En pratique ce sont tout plein d’outils qui vont vous permettre d’instrumenter et de connaître tous les petits secrets de votre application. Grâce à eux vous devriez être capable d’expliquer le moindre soubresaut, voir même de les prévoir et agir en conséquence ! Mais au fait que sont tous ses outils ? En quoi ça consiste ? Et surtout comme ça marche ?

Dans cette session, nous explorerons par le menu le concept d’Observabilité, de ses 3 Piliers jusqu’au principe d’instrumentation, tout cela illustré avec un peu de code. Nous verrons également comment OpenTelemetry se veut être la solution de référence qui abordera tous ces aspects, au plus grand bonheur de notre production (et des nuits de vos SRE préférés) !

Ce talk a été donné lors de la conférence Touraine Tech 2022 (https://touraine.tech/).

Ressources :

* Démonstration: https://github.com/foxlegend/observablity-from-zero-to-opentelemetry
* Injection de charge: https://github.com/TheCopycat/spring-petclinic-bench

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Related Audiobooks

Free with a 14 day trial from Scribd

See all

Observabilité : de Zéro à OpenTelemetry [TNT22]

  1. 1. @charlesmariea @foxlegend Observabilité De Zéro à OpenTelemetry
  2. 2. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry CLIENT SYSTÈME RÉSEAU BDD PROJET DEV Crédits images : unsplash, Digiface by La Digitale
  3. 3. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry K8S Api Gateway User Service Audit Service Audit DB User DB Kafka Product Mongo DB Basket Service Product Service Authentication Delegation Payment Proxy Corp SSO Client SSO Payment Provider
  4. 4. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Crédits images : KC Green's 2013 webcomic "On Fire."
  5. 5. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry David Pequegnot @foxlegend https://github.com/foxlegend Ingénieur Performance @Worldline Charles-Marie Ambrosetti Ingénieur Performance @Worldline @charlesmariea https://github.com/TheCopycat Crédits images : flaticon, simple icons
  6. 6. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Notre Idéal… Crédits images : flaticon: Freepik, flatart_cions
  7. 7. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Crédits images : OpenTelemetry Day
  8. 8. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Crédits images : unsplash
  9. 9. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Observabilité ? Crédits images : DataDog
  10. 10. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Comment définir l’Observabilité ? L’Observabilité est une mesure de la capacité à déduire les états internes d’un système à partir de la connaissance de ses sorties externes. “ WIKIPEDIA The Free Encyclopedia
  11. 11. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Observabilité Observabilité et Télémétrie Métriques Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Logs Traces Stockage Traitement, Exploration & Alertes Crédits images : flaticon: srip, Becris, Freepik
  12. 12. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Logs Type de données : Evènements Composition : Ensemble de lignes de texte: - Timestamp - Tags - Message 1970-1990 1990-2010 2010-now [2022-01-21 14:25:30][INFO ][main-1] Hello Touraine tech [2022-01-21 14:25:31][INFO ][main-1] Observability [2022-01-21 14:25:32][DEBUG][main-1] Type=Talk [2022-01-21 14:25:33][DEBUG][main-1] Speakers=2 [2022-01-21 14:25:33][WARN ][main-1] Unknowns=Knowns [2022-01-21 14:25:34][TRACE][main-1] Coucou Maman [2022-01-21 14:25:34][ERROR][main-1] Exception in thread "main" java.lang.NullPointerException At tech.touraine.person.Speakers.submitTalk (Speakers.java:47) At tech.touraine.talk.Talk.submitTalk (Talk.kt:38) At java.lang.Thread.run (Unknown Source) [2022-01-21 14:25:35][FATAL][main-1] No Space Left on Device
  13. 13. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Metrics Type de données : aggrégeables Composition : Ensemble de mesures : - Timestamp - Nom - Tags - Valeur numérique 1970-1990 1990-2010 2010-now
  14. 14. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Metrics Système Métier Applicatives
  15. 15. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Traces Type de données : Transactionnel Composition : Arbre de “spans” : - Timestamps début/fin - Evénements - Tags 2000-2010 2010-2015 2015-now /submitTalk getSpeakers() validate() bdd() bdd() notify()
  16. 16. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Traces
  17. 17. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Métriques Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Logs Traces
  18. 18. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Et le Monitoring ? Le Monitoring désigne la mesure d’un système […] dans le cadre de la supervision d’un parc. “ WIKIPEDIA L’encyclopédie libre … { } Crédits images : flaticon: Freepik, Eucalyp, good-ware, srip, juicy-fish, smashicons
  19. 19. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Monitoring vs Observabilité Monitoring Observabilité Réactivité Proactivité Prévisible Imprévisible Quand ? Pourquoi ? Problème Compréhension
  20. 20. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry OpenTelemetry Crédits images : OpenTelemetry
  21. 21. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Origines Traces 2016 OpenCensus Métriques Traces 2018 2019 Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Logs Métriques Traces 2021 2022 ? Crédits images : flaticon
  22. 22. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry MonApp OpenTelemetry : c’est quoi ? Propagator (w3c, B3…) zipkin jaeger prometheus OTLP Collector Crédits images : flaticon
  23. 23. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Instrumentation Crédits images : Simple Icons
  24. 24. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Métriques : créer un compteur @ApplicationScoped public class BasketService { // Meter creates Instruments (Counter, Gauge, Histogram...) private static final Meter meter = GlobalOpenTelemetry .getMeter("basket.metrics"); // Creates a Counter private static LongCounter basketCounter = meter.counterBuilder("basket_creation") .setDescription("Compte les paniers créés") .setUnit("basket") .build(); // -- hidden code -- }
  25. 25. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Métriques : utiliser un compteur @ApplicationScoped public class BasketService { private static final Meter meter = ... private static LongCounter basketCounter = ... public Basket createBasket(Basket basket) { basketRepository.put(basket.id, basket); basketCounter.add(1, Attributes.of(stringKey("type"), "OPEN")); return basket; } public Basket checkoutBasket(Long id) { var basket = basketRepository.get(id); basketCounter.add(1, Attributes.of(stringKey("type"), "CLOSED")); return basket; } }
  26. 26. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Métriques : observer une Jauge @ApplicationScoped public class BasketService { private static final Meter meter = GlobalOpenTelemetry.getMeter("basket.metrics"); @PostConstruct void businessMetrics() { meter.gaugeBuilder("checkout_amount") .setDescription("Compte le montant des paniers") .setUnit("€") .buildWithCallback(result -> { result.record(getOpenBasketAmount(), Attributes.of(stringKey("type"), "OPEN")); result.record(getClosedBasketAmount(), Attributes.of(stringKey("type"), "CLOSED")); }); } }
  27. 27. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Métriques : Exporter # HELP basket_creation_total Compte les paniers créés # TYPE basket_creation_total counter basket_creation_total{type="OPEN",} 1.0 basket_creation_total{type="CLOSED",} 8.0 # HELP checkout_amount Compte le montant des paniers # TYPE checkout_amount gauge checkout_amount{type="OPEN",} 10.24 checkout_amount{type="CLOSED",} 805.63
  28. 28. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Traces : créer un span @Path("/api/basket") public class BasketResource { static final Tracer tracer = GlobalOpenTelemetry.getTracer("basket.traces"); @POST @Produces(MediaType.APPLICATION_JSON) public Response createBasket(@Context UriInfo uriInfo) { var span = tracer.spanBuilder("BasketResource::createBasket").startSpan(); span.setAttribute("http.method", "POST"); span.setAttribute("http.url", uriInfo.getRequestUri().toString()); try (var scope = span.makeCurrent()) { var basket = service.createBasket(Basket.randomBasket()); span.setAttribute("basket", basket.toString()); return Response.created().entity(basket).build(); } finally { span.end(); } } }
  29. 29. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Trace : créer une trace enfant @ApplicationScoped public class BasketService { private static final Tracer tracer = GlobalOpenTelemetry.getTracer("basket.traces"); // Appelé par BasketResource public Basket createBasket(Basket basket) { var span = tracer.spanBuilder("BasketService::createBasket").startSpan(); try (var scope = span.makeCurrent()) { basket.state = "OPEN"; span.addEvent("Start PUT Basket to repository"); basketRepository.put(basket.id, basket); span.addEvent("End PUT Basket to repository"); return basket; } finally { span.end(); } } }
  30. 30. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Traces : Exporter
  31. 31. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Make instrumentation easier…
  32. 32. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Bibliothèques/Packages Auto-instrumentation JDBC … Crédits images : Simple Icons, flaticon: Freepik
  33. 33. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Démonstration
  34. 34. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Spring Petclinic agent Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Logs Traces NODE EXPORTER Métriques application Métriques système
  35. 35. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry OpenTelemetry Collector - “otelcol” Batch Attributs Filtrer … Receiver Exporter Processor Jaeger OTLP OpenCensus Zipkin… Prometheus collectd JMX Statsd… Fluentd SysLog… Docker / Podman Kubernetes AWS Splunk… traces métriques logs misc. Jaeger OTLP OpenCensus Zipkin… Prometheus InfluxDB Graphite… Loki ElasticSearch… Alibaba AWS Azure DataDog Splunk… traces métriques logs misc.
  36. 36. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry OpenTelemetry Collector - Cas d’usage… otlp Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Bienvenue à TNT22, on est bien non ? lorem Logs Métriques Crédits images : flaticon: Freepik, Good Ware
  37. 37. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Pourquoi choisir OpenTelemetry ? Crédits images : flaticon: Freepik
  38. 38. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Pourquoi choisir OpenTelemetry ? Crédits images : flaticon: Freepik
  39. 39. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Pourquoi choisir OpenTelemetry ?
  40. 40. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Pourquoi choisir OpenTelemetry ? {Auto-}Instrumentation Extensibilité Crédits images : flaticon: Freepik, monkik
  41. 41. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Il est temps de passer à l’action… Métriques Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Bienvenue à TNT22, on est bien non ? Heureux de participer ! Logs Traces stable almost next Crédits images : flaticon: freepik
  42. 42. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry CLIENT SYSTÈME RÉSEAU BDD PROJET DEV Crédits images : Digiface by La Digitale
  43. 43. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Merci ! TheCopycat/spring-petclinic-bench foxlegend/observablity-from-zero-to-opentelemetry

×