Overview
When a bug is reported, most teams spend hours searching through logs. Logs, metrics and traces linked by a trace ID turn those hours into minutes. In this training we instrument .NET services with OpenTelemetry, send the data to the Grafana stack and follow a request across services and a message queue as a single trace. The dashboards and alerts of our own products run on this setup.
Course content
1. Observability fundamentals
- Monitoring versus observability
- Logs, metrics and traces: which question each answers
- Cardinality and cost
- The RED and USE methods
2. OpenTelemetry
- API, SDK and Collector
- The OTLP protocol
- Automatic and manual instrumentation
- Resource attributes: service name, environment, version
3. Traces
- Spans, traces and context
- W3C traceparent
- Propagating context over HTTP and gRPC
- Propagating context through Kafka and the outbox
- Sampling strategies
4. Logs
- Structured logging
- Putting the trace ID on every log line
- Log levels and noise
- Loki and LogQL
5. Metrics
- Counters, gauges and histograms
- Prometheus and PromQL
- Error rate and latency from span metrics
- Lab: an end-to-end trace across three services
6. Grafana
- Data sources: Loki, Tempo, Prometheus
- Moving between logs, traces and metrics
- Dashboard design: summary first, then detail
- Managing dashboards as code
7. Alerting
- Alerting on symptoms
- SLOs and error budgets
- Cutting noise and grouping
- Alert channels and on-call
8. The client side
- Browser telemetry (Faro)
- Mobile crash reporting linked to traces
- Real user monitoring and Core Web Vitals
9. Personal data and retention
- What must not be stored in logs and traces
- Masking and filtering
- Retention periods and storage cost
10. Incident investigation
- From the alert to the line of code
- Finding where latency comes from
- A post-incident review template
- Lab: following a real bug end to end
Schedule
Each module takes about 4 hours, half a day; 40 hours in total.
- Day 1: modules 1 and 2
- Day 2: modules 3 and 4
- Day 3: modules 5 and 6
- Day 4: modules 7 and 8
- Day 5: modules 9 and 10
Prerequisites
- Experience building services in a backend language (C# preferred)
- HTTP and basic networking
- Running containers locally with Docker
Training format
- On site or remote: at your office or in live virtual sessions.
- Hands-on: every day ends with lab sessions where you apply that day’s topic to a working example.
- Lab environment: participants get a prepared working environment and a sample code repository.
- Tailored to your team: content and examples are adapted to your stack after a short call before the training.
- Materials: slides, lab guides and reference code stay with you after the training.