Adds observability to data pipelines: freshness checks, volume anomaly detection, schema drift alerts, lineage-aware alert routing, and a runbook for silent failures. Triggers when an agent needs to monitor a data pipeline, add data-quality checks, or debug a silently broken data flow.
./install.sh data-pipeline-observabilityname: "data_pipeline_observability" description: "Adds observability to data pipelines: freshness checks, volume anomaly detection, schema drift alerts, lineage-aware alert routing, and a runbook for silent failures. Triggers when an agent needs to monitor a data pipeline, add data-quality checks, or debug a silently broken data flow."
Catch pipeline failures before consumers notice. A pipeline that errors loudly is easy to fix. A pipeline that succeeds while writing stale, duplicated, or schema-shifted data is the one that quietly ruins dashboards and models. This skill sets up the checks that catch the quiet failures: freshness, volume, schema, and key integrity, with alerts routed through lineage so the right owner gets paged.
The bundled monitor (bin/pipeline_monitor.py) emits one JSON report per run:
json
{
"ran_at": "2026-10-01T21:37:00Z",
"tables": {
"orders": {
"checks": {
"freshness": {"status": "OK", "lag_hours": 1.2, "detail": "..."},
"volume": {"status": "WARN", "z_score": 4.1, "detail": "..."},
"schema": {"status": "OK", "detail": "matches pinned schema v3"},
"keys": {"status": "ERROR", "detail": "order_id has 14 duplicates"}
},
"worst": "ERROR"
}
},
"alerts": [
{"severity": "ERROR", "table": "orders", "check": "keys",
"owner": "payments", "consumers": ["rev_dashboard"], "detail": "..."}
]
}
Status levels: OK, INFO (compatible change, note only), WARN (review soon), ERROR (page the owner). Exit code 0 when worst is OK/INFO/WARN, 1 when any ERROR, 2 on config or database failure. Every run writes metrics to the history table (table_name, measured_at, metric, value) so the next run has a baseline.
bash
# 1. Pin a schema from the live table
python3 bin/pipeline_monitor.py --pin-schema --database warehouse.sqlite \
--table orders --schema-file schemas/orders.schema.json
# 2. Seed metric history, then check
python3 bin/pipeline_monitor.py --config checks.json --report report.json
cat report.json
Minimal checks.json:
json
{
"database": "warehouse.sqlite",
"metrics_table": "pipeline_metrics",
"owners": {"orders": "payments"},
"consumers": {"orders": ["rev_dashboard"]},
"tables": [
{"name": "orders", "tier": 1, "timestamp_column": "loaded_at",
"warn_after_hours": 2, "error_after_hours": 4,
"key_columns": ["order_id"], "schema_file": "schemas/orders.schema.json"}
]
}
For the silent-failure runbook (dashboard looks fine but numbers are wrong, jobs succeed on zero rows, upstream formats changed without warning), read references/silent-failure-runbook.md.
publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e
No ratings yet — be the first to rate it.