What you will learn in this TP
- Auto-instrument every signal
- Ensure a shared resource
- Navigate between signals
Introduction #
What you will learn in this section
- Auto-instrument every signal
- Ensure a shared resource
- Navigate between signals
Context. A two-service shop returns intermittent errors. You instrument without touching code and investigate by navigating from one signal to another.
Prerequisites: Docker and Python 3.10 or later; the grafana/otel-lgtm stack (Collector, Tempo, Loki, Prometheus, Pyroscope and Grafana in one container) · Estimated time: 50 min
Hands-on #
Guided steps, with their solution.
1. Start the observability stack
Why? A single image provides an OTLP Collector and every backend: focus on the signal.
Startgrafana/otel-lgtm, create a Python environment and point exporters to OTLP/HTTP port 4318.2. Write the two services
Why? The code has no OpenTelemetry line: everything will come from auto-instrumentation.
Createfront.py(port 8001) callingstock.py(port 8002); the stock service fails 15% of requests with an error log.3. Start with a shared resource
Why? The same variables for all three signals ensure the same resource: that is the key to correlation.
Start each service withopentelemetry-instrument, the three OTLP exporters, log capture and shared resource attributes, then generate traffic.4. Start from the metric
Why? The investigation starts like an alert: an error metric from the HTTP conventions, the same for every service.
In Prometheus, compute the 5xx error rate per service from thehttp.server.request.durationhistogram (or its equivalent depending on the instrumentation version). Turn on exemplars and open a trace from a point.5. From trace to logs
Why? The trace shows which service failed; its logs say why.
In Tempo, search failed traces, open one, see thestockserver span is 503 and use Logs for this span to find the "connection pool exhausted" message. Do the reverse path from Loki.6. Service map and span metrics
Why? Metrics computed from spans give rate, errors and duration per service and a dependency map.
Open Tempo's Service Graph tab in Explore: check thefronttostockedge and its error rate. Note the configuration line (servicegraphconnector or Tempo metrics generator) that enables it.7. Break then fix correlation
Why? A different resource is enough to break every link: verify it to remember it.
RestartstockwithOTEL_LOGS_EXPORTER=none, regenerate traffic and see that Logs for this span returns nothing. Restore the configuration and stop everything.
Difficulty level : ●●●○○ (3/5)
My progress
Sign in to track your progress and take notes. Sign in
Recommended Articles
Corréler traces, métriques, logs et profils avec OpenTelemetry
Relier les quatre signaux pour diagnostiquer vite : ressource commune, trace_id dans les logs, ex...
Les métriques OpenTelemetry : instruments, temporalité, histogrammes et exemplars
Maîtriser le signal métrique : MeterProvider, instruments synchrones et asynchrones (Counter, UpD...
Les logs avec OpenTelemetry : modèle de données, appenders, corrélation et collecte
Maîtriser le signal log : modèle de données LogRecord, Logs Bridge API et appenders (Logback, Log...
Understanding the concept of score
The concept of score allows Elasticsearch to rank your documents by relevance during a search.
Understanding the Elastic Common Schema (ECS)
As always in our consulting engagements, we recommend that companies harmonise and standardise: k...
License consumption types
Understand the evolution of billing in Dynatrace: the difference between the old licensing model ...
Grafana Alloy: The importance of Self-Monitoring
Discover why and how to configure Grafana Alloy so that it monitors itself, collecting its own lo...
Grafana Alloy: Understanding and exploiting the User Interface (UI)
Discover how to enable, secure, and use Grafana Alloy's built-in web interface to visualize your ...
Grafana Alloy: Introduction and Architecture
Discover the fundamental concepts of Grafana Alloy, the transition from the static Agent to Alloy...