Observability Fundamentals
Observability is the ability to understand a system's internal state from its external outputs: metrics, logs, and traces. It provides the instrumentation and tooling needed to answer novel questions about system behavior without deploying new code.
itObservability and performance | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — Observability Fundamentals
The word is borrowed from control theory, where it describes how well a system's internal states can be inferred from its external outputs.
Ported into software it reduces to a test anyone can run this afternoon: can a question nobody anticipated be answered about a system already in production, without shipping code first? Yes means the system is observable. If the answer needs a new field and a deploy, what exists is monitoring — not an insult, merely a narrower thing.
Monitoring watches thresholds somebody chose in advance, and it is genuinely good at the failure modes that were predicted. Distributed systems mostly fail in ways nobody predicted, across services and queues and bought-in components nobody operates directly, in configurations that refuse to reproduce on a laptop.
The extension exists so a novel problem can still be investigated afterwards, out of signals gathered before anyone knew they would matter. Which is why the property is bought at instrumentation time rather than at purchase time: no dashboard product confers it.
The signals divide the work. Metrics are numbers aggregated over time — cheap, quick to query, volume unaffected by traffic, the right backbone for alerting, and they have thrown the detail away.
Logs are timestamped records of individual events: rich, universally available, unpleasant at scale.
Traces follow one request across process and service boundaries, assembled from spans — the individual units of work — and show where the time went.
None is sufficient alone. Metrics say what is wrong at predictable cost; logs and traces say why, at a far higher cost per event. So the grown-up move is correlation: shared labels, trace identifiers written into log lines, sample requests attached to an aggregated metric so a spike leads back to one real case.
Beside that sits the vocabulary used in meetings, and its order is the point. Pick a number reflecting something a user actually experiences and that is the indicator, the SLI; commit to a target for it and you have an objective, the SLO; let somebody sell a contract on that target, with penalties, and it becomes an agreement, the SLA. Whatever the objective leaves spare is the error budget.
Latency, traffic, errors and saturation are the four golden signals, the least worth measuring on anything user-facing.
Now the tension that shapes the entire subject. The fields that answer new questions are exactly the ones the cheapest storage punishes. Novel incidents get resolved by high-cardinality dimensions — ones with very many distinct values, such as a tenant, a build identifier, a feature flag — and every combination is another series to pay for. Choose which few are worth carrying, and put them on traces or events rather than metrics.
Two more worth arriving with. Alert on what users feel rather than on causes: cause-based alerts multiply with every component added, most fire when nobody was harmed, and a page deserving only a robotic response should not be a page.
And the telemetry bill scales with architecture rather than traffic — splitting one service into eight multiplies spans per request and adds a dimension to every metric at identical load.
Slides if you want the shape fast, Cheatsheet for the signal comparison. Then Field Notes, for the one uncomfortable number nothing you buy can improve.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://opentelemetry.io/docs/concepts/observability-primer/
Supports
- Observability as understanding a system from the outside, asking questions without knowing internals, troubleshooting unknown unknowns, answering "why is this happening"
- Proper instrumentation defined as needing no additional instrumentation to troubleshoot
- Telemetry as data emitted from a system about its behavior; traces, metrics, logs as signal forms
- Reliability as "is the service doing what users expect"
- Metrics as aggregations over time of numeric data (error rate, CPU utilization, request rate)
- SLI as user-perspective measurement of service behavior (e.g. page load speed); SLO as the means reliability is communicated, attaching SLIs to business value
- Distributed tracing for requests propagating through distributed systems; essential where problems are nondeterministic or not reproducible locally
- Log as timestamped message not necessarily tied to a request; more useful when correlated with spans/traces
- Span as single unit of work with name, timing data, structured log messages (events), and attributes
- Infographic labels for the definition, instrumentation bar, and signal descriptions
- https://github.com/cncf/tag-observability/blob/main/whitepaper.md
Supports
- Control-theory definition of observability (internal states inferred from external outputs)
- Primary signals framing vs "three pillars"; emerging signals (profiles, crash dumps)
- Metric types (gauge, counter, histogram); timeseries as name + labels + values; metric volume not scaling with traffic; known-unknowns efficiency
- Metric cardinality definition, PID-label explosion example, cost growing with cardinality, unique detail belonging in events
- Prometheus and OpenTelemetry as the two popular open metric data models
- Log categories (application, security, system, audit, infrastructure), log levels (ERROR/WARNING/INFO/DEBUG), PII prohibition, non-guaranteed delivery, encryption guidance
- Traces as span trees; W3C Trace Context standardization; instrumentation purposes (context propagation, span mapping)
- Sampling profilers adding only a few percent overhead; profiler types
- Signal correlation via consistent target metadata, shared trace/request IDs in logs, and exemplars; example troubleshooting flows
- Recommendation to start with existing signals (metrics in cloud-native, logs in traditional setups) and branch out
- Monitoring as known unknowns vs observability including unknown unknowns; close-box vs open-box monitoring
- SLI/SLO/SLA/error budget definitions and stakeholder-agreement requirement
- Alert actionability, paging vs ticketing distinction, alert fatigue, target-error-rate alerting and its noisiness, burn-rate alerting (burn rate 1 = budget exactly exhausted at window end; burn rate 1000 at 99.9%/30d ≈ 43 minutes)
- USE method (Brendan Gregg) and RED method (Tom Wilkie) attributions
- Data-lake anti-pattern (collecting without an objective); multi-signal learning-curve and separate-systems challenges
- Cloud computing/microservices motivation for observability; instrumentation as an early design concern
- Target audience (SREs, DevOps engineers, sysadmins, developers)
- Infographic labels for signals, correlation, cardinality, and starting-point guidance
- https://sre.google/sre-book/monitoring-distributed-systems/
Supports
- Definitions of monitoring, white-box and black-box monitoring, dashboards, alerts (tickets, email alerts, pages), root cause
- Reasons to monitor (long-term trends, comparisons, alerting, dashboards, retrospective debugging)
- Four golden signals (latency including failed-request latency, traffic, errors including implicit and policy failures, saturation with p99 latency as early signal)
- Symptoms-versus-causes distinction; limited success of dependency-based cause rules
- Tail latency via bucketed histograms rather than means (100 ms average can hide 5 s outliers at 1% of requests)
- Paging philosophy (urgent, actionable, user-visible; every page should require intelligence; rote responses should be automated)
- Alert fatigue consequences (ignored pages masking real problems)
- Infographic labels for the golden signals and paging discipline
- https://sre.google/sre-book/service-level-objectives/
Supports
- Rationale in 06-links.yaml — canonical chapter on SLIs, SLOs, SLAs, and error budgets, referenced by the CNCF whitepaper
- https://opentelemetry.io/docs/concepts/signals/
Supports
- Rationale in 06-links.yaml — per-signal OpenTelemetry documentation covering traces, metrics, logs, baggage, and profiles
- https://prometheus.io/docs/concepts/data_model/
Supports
- Rationale in 06-links.yaml — Prometheus metric names, labels, and timeseries model, referenced as a popular metric data model by the CNCF whitepaper
- https://www.brendangregg.com/usemethod.html
Supports
- Rationale in 06-links.yaml — USE method checklist (Utilization, Saturation, Errors per resource), referenced by the CNCF whitepaper
- https://opentelemetry.io/docs/demo/docker-deployment/
Supports
- Local OpenTelemetry Demo prerequisites, Compose deployment, minimal mode, web-store endpoint, Grafana and Jaeger views, and collector export configuration
- https://opentelemetry.io/docs/demo/feature-flags/
Supports
- Local feature-flag UI and controlled payment, product-catalog, latency, memory, and queue-failure scenarios
- https://research.google/pubs/dapper-a-large-scale-distributed-systems-tracing-infrastructure/
Supports
- 2010 Dapper paper, production tracing design, application-level transparency, sampling, and ubiquitous deployment
- https://prometheus.io/docs/introduction/overview/
Supports
- Prometheus origin at SoundCloud in 2012, CNCF membership in 2016, label-based time-series data model, pull collection, PromQL, and metrics role in the Landscape
- https://prometheus.io/blog/2016/01/26/one-year-of-open-prometheus-development/
Supports
- Prometheus public announcement in January 2015 after production use and early external adoption
- https://opentelemetry.io/blog/2023/sunsetting-opencensus/
Supports
- OpenTracing and OpenCensus merger announcement in 2019, OpenTelemetry feature parity, and OpenCensus archival in July 2023
- https://www.w3.org/news/2020/trace-context-is-a-w3c-recommendation/
Supports
- Trace Context W3C Recommendation on 6 February 2020 and standardized propagation headers for distributed tracing
- https://opentelemetry.io/blog/2021/
Supports
- OpenTelemetry Collector first GA release and tracing stability milestone in September 2021
- https://opentelemetry.io/blog/2022/metrics-announcement/
Supports
- 2022 OpenTelemetry metrics 1.0 release candidates, shared metadata and semantic conventions, and Collector support for OTLP and Prometheus-compatible metrics
- https://docs.datadoghq.com/opentelemetry/
Supports
- Datadog's OpenTelemetry instrumentation and export choices, feature compatibility, and Collector-based vendor-neutral path
- https://docs.newrelic.com/docs/opentelemetry/opentelemetry-introduction/
Supports
- New Relic's OpenTelemetry ingestion, comparison with its agents, and Collector role in processing, filtering, enriching, and exporting telemetry
- https://docs.honeycomb.io/send-data/metrics
Supports
- Honeycomb's OpenTelemetry and Prometheus metric ingestion, telemetry attributes used in query grouping, and correlation of metrics with query results
