SlideShare a Scribd company logo
1 of 43
Download to read offline
@charlesmariea @foxlegend
Observabilité
De Zéro à OpenTelemetry
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
CLIENT SYSTÈME
RÉSEAU
BDD
PROJET
DEV
Crédits images : unsplash, Digiface by La Digitale
@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
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
Crédits images : KC Green's 2013 webcomic "On Fire."
@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
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
Notre Idéal…
Crédits images : flaticon: Freepik, flatart_cions
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
Crédits images : OpenTelemetry Day
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
Crédits images : unsplash
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
Observabilité ?
Crédits images : DataDog
@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
@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
@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
@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
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
Metrics
Système Métier
Applicatives
@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()
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
Traces
@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
@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
@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
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
OpenTelemetry
Crédits images : OpenTelemetry
@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
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
MonApp
OpenTelemetry : c’est quoi ?
Propagator (w3c, B3…)
zipkin
jaeger
prometheus
OTLP
Collector
Crédits images : flaticon
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
Instrumentation
Crédits images : Simple Icons
@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 --
}
@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;
}
}
@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"));
});
}
}
@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
@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();
}
}
}
@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();
}
}
}
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
Traces : Exporter
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
Make instrumentation easier…
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
Bibliothèques/Packages Auto-instrumentation
JDBC
…
Crédits images : Simple Icons, flaticon: Freepik
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
Démonstration
@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
@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.
@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
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
Pourquoi choisir OpenTelemetry ?
Crédits images : flaticon: Freepik
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
Pourquoi choisir OpenTelemetry ?
Crédits images : flaticon: Freepik
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
Pourquoi choisir OpenTelemetry ?
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
Pourquoi choisir OpenTelemetry ?
{Auto-}Instrumentation Extensibilité
Crédits images : flaticon: Freepik, monkik
@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
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
CLIENT SYSTÈME
RÉSEAU
BDD
PROJET
DEV
Crédits images : Digiface by La Digitale
@charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry
Merci !
TheCopycat/spring-petclinic-bench
foxlegend/observablity-from-zero-to-opentelemetry

More Related Content

Featured

Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 

Featured (20)

Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 

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

  • 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. @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. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Crédits images : KC Green's 2013 webcomic "On Fire."
  • 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. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Notre Idéal… Crédits images : flaticon: Freepik, flatart_cions
  • 7. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Crédits images : OpenTelemetry Day
  • 8. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Crédits images : unsplash
  • 9. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Observabilité ? Crédits images : DataDog
  • 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. @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. @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. @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. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Metrics Système Métier Applicatives
  • 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. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Traces
  • 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. @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. @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. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry OpenTelemetry Crédits images : OpenTelemetry
  • 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. @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. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Instrumentation Crédits images : Simple Icons
  • 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. @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. @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. @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. @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. @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. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Traces : Exporter
  • 31. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Make instrumentation easier…
  • 32. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Bibliothèques/Packages Auto-instrumentation JDBC … Crédits images : Simple Icons, flaticon: Freepik
  • 33. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Démonstration
  • 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. @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. @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. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Pourquoi choisir OpenTelemetry ? Crédits images : flaticon: Freepik
  • 38. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Pourquoi choisir OpenTelemetry ? Crédits images : flaticon: Freepik
  • 39. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Pourquoi choisir OpenTelemetry ?
  • 40. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Pourquoi choisir OpenTelemetry ? {Auto-}Instrumentation Extensibilité Crédits images : flaticon: Freepik, monkik
  • 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. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry CLIENT SYSTÈME RÉSEAU BDD PROJET DEV Crédits images : Digiface by La Digitale
  • 43. @charlesmariea @foxlegend Observabilité : de Zéro à OpenTelemetry Merci ! TheCopycat/spring-petclinic-bench foxlegend/observablity-from-zero-to-opentelemetry