Data & Analytics

Data Observability: Anatomy of a Pipeline You Can Trust


Share

Data observability: a pipeline monitored through five health checks, freshness, volume, schema, distribution and lineage.

Pipelines You Can Trust: Key Takeaways

  • The failure that costs money is the job that succeeded on stale or partial input.
  • Five signals cover a pipeline's health: freshness, volume, schema, distribution, and lineage.
  • Capture each signal at the consumer boundary, not at the job's exit code.
  • An alert nobody acts on is worse than no alert at all.
  • Lineage converts an alert into a blast radius and a named downstream owner.

What Is Data Observability in a Data Pipeline?

Data observability is the instrumentation layer that reports whether a pipeline's output is fit to use, not merely whether its jobs ran. It captures freshness, volume, schema, distribution, and lineage as measured signals. The output is a pipeline that can prove what was true at the moment any downstream read happened.

Data observability and AI observability are not the same layer

The two share vocabulary and instrument different things. AI observability watches model behaviour: prompt and response traces, token cost, output drift, evaluation scores against a golden set. Data observability watches data movement: whether the rows arrived, on time, in the expected shape, with values inside the expected envelope.

A model can be perfectly instrumented and still answer from a table that stopped updating four days ago. Instrument both. This piece covers the data layer, which sits inside the modern data stack these pipelines run on.

Why a Job That Succeeded Is the Dangerous One

A crashed job pages someone. A job that succeeded on stale input does not, and its output reaches a dashboard, a pricing rule, or a feature store with no warning attached.

The Gartner Market Guide for Data Observability Tools (Gartner, 2024) names the structural reason: static, event-based monitoring cannot give a holistic view of modern data architectures, because those architectures are too complex and dynamic for it. Orchestrators report task status. They do not report whether the rows that arrived were the rows expected.

The consumer has changed too. Pipeline output now feeds retrieval layers and feature stores, so a quiet regression propagates into a system that answers with confidence rather than into a chart a human might squint at.

That is the gap an observability layer fills. The measurement surface is the data itself, not the process that moved it.

What Are the Five Signals Worth Instrumenting?

Each signal catches a class of failure the others are blind to, which is the argument for instrumenting all five rather than the two that are easiest to wire up.

SignalWhat it catchesWhere it is capturedWhat it misses
FreshnessStale partitions, late or skipped loadsConsumer read boundary, as event-time lagOn-time data that is wrong
VolumeTruncated extracts, duplicate or dropped rowsPost-load row counts against a rolling baselineRight row count, corrupted values
SchemaAdded, dropped, or retyped columns upstreamIngress, against a registered contractSemantic change inside an unchanged column
DistributionNull-rate spikes, range shifts, category driftPost-transform, per column, against a baseline windowFirst loads with no baseline
LineageWhich downstream assets a defect reachesOrchestration metadata plus query parsingCorrectness, on its own

ISO/IEC 25012:2008 defines 15 data quality characteristics for structured data, reconfirmed as current in ISO's 2025 systematic review. The five signals are the runtime measurement of those characteristics: freshness measures currentness, volume and distribution measure completeness and consistency, lineage measures traceability.

Teams retrofitting these signals onto an existing stack can see how data engineering and pipeline design services cover ingestion through instrumentation.

Data pipeline observability: monitored pipeline activity decides whether output is used, investigated or blocked.

Where in the Pipeline Does Each Signal Have to Be Captured?

Capture point decides whether a signal is an alert or an incident report. A freshness check that runs after the morning dashboard refresh tells you why the number was wrong. It does not stop the number being wrong.

Three placement rules hold across stacks.

  1. Schema at ingress, against a contract. When a producing team can change a column without coordinating, the architectural response is a registered schema contract at the write path, so the producer's change fails the load instead of the report.
  2. Freshness at the consumer boundary, as event-time lag. Job completion is the orchestrator's view. Event-time lag is the consumer's view, and the two diverge exactly when a partition falls behind while the task still exits zero.
  3. Volume and distribution post-transform, per column. Aggregate row counts survive a column going 90% null. Per-column statistics do not.

Telemetry shape matters as much as placement. OpenTelemetry semantic conventions standardise attribute names, span names, and metric instruments, which is what lets a pipeline's signals be correlated across the orchestrator, the warehouse, and the transport between them. Emitting signals as arbitrary application logs costs you that correlation later.

Streaming changes the placement, not the principle: freshness becomes consumer lag on the topic partition and volume becomes a windowed rate, a pattern visible in streaming ingestion architectures for sensor data.

Where freshness, volume, schema, distribution and lineage signals are captured across ingress, transform and consumer.

How Do You Set Thresholds an On-Call Rota Survives?

Most observability projects fail here, not at instrumentation. Wiring up signals is a sprint. Deciding what deserves a page at 2am is the hard part, and getting it wrong trains the rota to mute the channel.

Google's SRE guidance on service level objectives is direct: choosing too many indicators makes it hard to pay the right level of attention to the ones that matter, and the recommendation is to keep as few objectives as possible. Not every table gets an SLO. The tables with a consumer who has a deadline get one.

A workable threshold model has three tiers:

  • Page: the asset has a stated SLO and the signal breached it. Freshness on a table feeding an automated decision sits here.
  • Ticket: the signal deviated from baseline, but no SLO exists or none was breached. Distribution drift on a reporting table sits here.
  • Log only: the signal moved inside tolerance. Useful for the next investigation, useless as an interrupt.

Error budgets carry over cleanly. When the business accepts that a table can be late some of the time, the architectural expression is a freshness budget consumed over a rolling window, with alerting driven by burn rate rather than by a single breach. Static thresholds on seasonal data give you the opposite: a quiet channel in December, a noisy one in January.

Data observability alerting: signal changes routed to page, ticket or log by SLO breach and threshold.

Lineage Is What Turns an Alert Into a Decision

A freshness alert on a staging table tells an engineer something broke. It does not say who to tell. Lineage answers that, and it is the difference between a signal and a response.

DAMA's Data Management Body of Knowledge treats lineage as a metadata management function rather than a monitoring feature, and that framing is the useful one architecturally. Lineage is a graph built from orchestration dependencies and parsed query plans, maintained as a first-class asset and queried at alert time to resolve blast radius: which marts, dashboards, feature tables, and exports read from the broken node.

Column-level lineage earns its extra parsing cost when the pipeline carries derived fields, because a defect in one source column rarely invalidates the whole table. Table-level lineage over-escalates: it tells six teams to stand down when one of them was affected.

The same graph pays off on the way in. Versioned inputs plus lineage let you reconstruct what a downstream system read on a given day, the property that makes a pipeline reproducible rather than merely correct today. Who owns each node, and how that reconstruction is evidenced for an auditor, is the data governance half of the same design.

From a data problem to action: find the affected systems, find the owner, then fix, notify and monitor.

Lessons from Instrumenting Sub-Second Screening Pipelines

We built the real-time payment screening platform against a hard latency budget, and that constraint forced the instrumentation question early. A pipeline with no SLA can absorb a late file. One that screens a payment in flight cannot.

Three decisions carried over into the SWIFT Data Orchestration work and the Transaction Intelligence and Behavioral Analytics platform that consumed its output:

  • Freshness was measured as consumer lag on the Kafka partition, not as task completion in Airflow, because the task finishes on time while a partition sits behind.
  • Signal history landed in PostgreSQL with TimescaleDB, chosen over Prometheus because the queries we actually ran were historical and relational, asking what a table looked like on the day of a past alert. Prometheus retention limits and label cardinality fought both.
  • Schema checks ran at ingress against a registered contract, so a producer change failed the write rather than the downstream report.

The pattern that transferred: the analytical consumer inherits every silent defect upstream, so the signal belongs where the consumer reads.

Building an Observability Layer with DigiWagon

DigiWagon builds instrumentation into the pipeline rather than bolting a monitor onto a finished stack, inside wider analytics and data platform engagements. Typical scope:

  • Signal design and SLO definition per asset, tied to the consumer's deadline
  • Schema contracts and ingress validation at producer boundaries
  • Column-level lineage graphs wired into alert routing
  • Burn-rate alerting that survives seasonality

Making the Trust Call on Your Pipeline

Trust in a pipeline is a property you can evidence: it states how fresh its output is, proves the shape of what it loaded, and names every asset a defect reaches. Instrument the five signals, capture them where the consumer reads rather than where the job exits, and let SLOs decide which breaches are worth waking someone for. Get those three calls right and the argument shifts from whether the number is correct to what it means. What you will have built is a pipeline that can prove its freshness, not one that merely reports that it ran.

Ask an AI about this article

Turn this article into your own next step

Pick a question, then the assistant you use. It opens in a new tab with this article as its source.

The question it opens withRead https://digiwagon.com/blogs/data-observability-pipeline-signals and turn its key points into questions I should ask my own team, one per point. Stick to what the article says.

The question it opens withRead https://digiwagon.com/blogs/data-observability-pipeline-signals and explain its argument in plain language for a CFO, with the one decision it asks a business to make. Stick to what the article says.

The question it opens withRead https://digiwagon.com/blogs/data-observability-pipeline-signals and tell me what it means for a mid-size company, what to do first and what to avoid. Stick to what the article says and mark anything you are not sure about.

FAQ

Questions we get asked.

How much engineering effort does data observability add to an existing pipeline?
Less than teams expect for the instrumentation, more for the definitions. Emitting signals is a wrapper around the orchestrator and warehouse you already run. The effort is in agreeing which assets carry an SLO, defining schema contracts with producing teams, and backfilling enough history for baselines. Retrofitting is cheaper than rebuilding, because the signals attach at existing boundaries.
What are the most common mistakes when instrumenting a data pipeline?
Three recur. Alerting on every table, which produces a channel the rota soon mutes. Static thresholds on seasonal data, which fire at quarter-end and stay silent when something real breaks. No owner on the asset, so the alert lands in a shared channel and everyone assumes someone else has it. Each is a routing failure, not a detection failure.
Do dbt tests and orchestrator checks replace a data observability layer?
They cover a different case. Tests assert expectations you already know to state: not null, unique, accepted values, referential integrity. Observability detects deviation from learned baselines, where unknown failures live. Run both. Tests gate the transformation layer; observability measures continuously from ingestion through serving. A stack with tests and no baselines catches only the failures someone predicted.
What should you instrument first if you cannot instrument everything at once?
Start with freshness and volume on the assets with a named consumer and a deadline, usually a handful of tables. Add schema contracts at the ingress points where an external producer can change structure unannounced. Distribution and column-level lineage come third, once baselines exist and alert routing is proven. Instrumenting the whole warehouse on day one produces noise, not coverage.