Notes — Module 01: Introduction to Observability¶
These are your personal study notes. Write freely and honestly. Incomplete notes are fine — they show where your understanding still needs work. Return to this file to add insights as they develop over time.
Module: [[modules/01_introduction]] Topic: [[feature-flags-monitoring]] Date started: To be filled in Status: Not started
Concept Map¶
Sketch how the concepts in this module relate to each other. Fill in the Mermaid diagram.
mindmap
root((Observability))
Three Pillars
Metrics
Prometheus
Counters / Gauges / Histograms
Logs
Structured logging
Correlation IDs
Traces
Spans
Trace ID propagation
Service Levels
SLI
SLO
SLA
Error Budget
Feature Flags
Dark launch
Progressive rollout
Kill switch
A/B testing
Toolchain
Prometheus + Grafana
Sentry
OpenTelemetry
PostHog
DataDog
Alternative: draw this on paper, photo it, and link the image here.
Key Insights¶
The "aha moments" — the things that, once understood, made the rest clear. Be specific: "I finally understood X because Y" is more useful than "X makes sense".
- [Insight title]: To be filled in
- [Insight title]: To be filled in
- Add insights as you discover them
My Understanding¶
Explain the core concepts in your own words, as if teaching them to someone else.
Monitoring vs. Observability¶
Your explanation here
What I'm still unsure about: To be filled in
The Three Pillars¶
Your explanation here
What I'm still unsure about: To be filled in
SLI/SLO/SLA and Error Budget¶
Your explanation here
What I'm still unsure about: To be filled in
Feature Flags¶
Your explanation here
Connections to Other Topics¶
How does this module connect to things you already know?
| This module's concept | Connects to | How |
|---|---|---|
| Error budgets | [[devops-platform-engineering]] | Deployment frequency decisions depend on error budget health |
| Distributed traces | [[systems-architecture]] | Microservice architectures create the need for trace propagation |
| Feature flags | [[django-fastapi-flask]] | Flask/FastAPI apps are where flags are implemented |
Questions That Arose¶
Log questions as they appear. Don't stop to answer them now — just capture them.
- Question 1 → add to QUESTIONS.md
- Question 2 → needs more study
- Question 3 → might be answered in Module 02
Code Snippets Worth Remembering¶
Basic Prometheus Counter¶
from prometheus_client import Counter
REQUESTS = Counter('http_requests_total', 'Total HTTP requests', ['method', 'status'])
REQUESTS.labels(method='GET', status='200').inc()
Why I'm saving this: The pattern of defining metric name, help text, and labels in the constructor, then calling .labels().inc() is the fundamental Prometheus SDK pattern.
Error Budget Formula¶
error_budget_minutes = (1 - slo_target) * 30 * 24 * 60
# For 99.9% SLO: (1 - 0.999) * 43200 = 43.2 minutes/month
Why I'm saving this: Easy to forget the formula; this is used constantly in SLO conversations.
What Tripped Me Up¶
Mistakes I made, misconceptions I had, things that confused me more than they should have.
- [Stumbling block]: To be filled in
Summary in My Own Words¶
Write a 3–5 sentence summary of this entire module without looking at any notes. If you can't do this, you need more study time.
To be filled in after completing the module.
Last updated: 2026-06-09