Complete observability framework for Databricks data pipelines β lineage tracking, anomaly detection, SLA monitoring, and alerting.
By Datanest Digital | Version 1.0.0 | $49
data-observability-setup/
βββ README.md
βββ manifest.json
βββ LICENSE
βββ src/
β βββ lineage_tracker.py # Sourceβtransformβtarget lineage
β βββ metric_collector.py # Pipeline metric collection
β βββ anomaly_detector.py # Statistical anomaly detection
β βββ freshness_monitor.py # Data freshness & SLA monitoring
β βββ alert_manager.py # Multi-channel alert routing
β βββ dashboard_data.py # Dashboard aggregation & health scores
βββ configs/
β βββ observability_config.yaml # Main configuration
β βββ alert_rules.yaml # Alert rule definitions
βββ notebooks/
β βββ observability_dashboard.py # Health & lineage dashboard
β βββ setup_observability.py # Initialize observability tables
βββ tests/
β βββ conftest.py # Shared fixtures
β βββ test_anomaly_detector.py # Anomaly detection tests
β βββ test_freshness_monitor.py # SLA breach tests
βββ guides/
βββ data-observability-guide.md # Observability strategy guide
Follow this guide to get data observability setup up and running in your environment.
Run the setup notebook in your Databricks workspace to create the required Delta tables:
# In Databricks β run notebooks/setup_observability.py
# Creates: observability.lineage, observability.metrics,
# observability.alerts, observability.anomaliesfrom src.lineage_tracker import LineageTracker
tracker = LineageTracker(catalog="main", schema="observability")
tracker.register_source("raw_orders", "s3://lake/raw/orders/")
tracker.register_transformation(
"clean_orders",
sql="SELECT * FROM raw_orders WHERE status != 'cancelled'",
input_datasets=["raw_orders"],
)
tracker.register_target("curated_orders", "main.curated.orders")
tracker.commit_lineage(pipeline_name="orders_etl")from src.metric_collector import MetricCollector
collector = MetricCollector(config_path="configs/observability_config.yaml")
with collector.track_pipeline("orders_etl"):
# ... your pipeline code ...
collector.record_metric("orders_etl", "row_count", 125430)
# Duration is recorded automaticallyfrom src.anomaly_detector import AnomalyDetector
detector = AnomalyDetector(method="zscore", threshold=3.0)
anomalies = detector.detect(
pipeline_name="orders_etl",
metric_name="row_count",
lookback_days=30,
)
# Returns list of AnomalyResult with severity, score, detailsfrom src.freshness_monitor import FreshnessMonitor
from src.alert_manager import AlertManager
monitor = FreshnessMonitor(config_path="configs/observability_config.yaml")
breaches = monitor.check_all_slas()
alerts = AlertManager(config_path="configs/observability_config.yaml")
for breach in breaches:
alerts.send(
severity="critical",
title=f"SLA Breach: {breach.table_name}",
message=f"Data is {breach.hours_stale:.1f}h stale (SLA: {breach.sla_hours}h)",
)βββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββββ
β Data βββββΆβ Lineage βββββΆβ Delta Tables β
β Pipelines β β Tracker β β (lineage store) β
ββββββββ¬ββββββββ ββββββββββββββββββββ βββββββββββββββββββββ
β
βΌ
ββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββββ
β Metric βββββΆβ Anomaly βββββΆβ Alert β
β Collector β β Detector β β Manager β
ββββββββββββββββ ββββββββββββββββββββ ββββββββββ¬βββββββββββ
β
ββββββββββββββββββββ βΌ
β Freshness β βββββββββββββββββββββββββ
β Monitor βββββββββββββββΆβ Slack / PagerDuty / β
ββββββββββββββββββββ β Email β
βββββββββββββββββββββββββ
ββββββββββββββββββββ
β Dashboard ββββββ Aggregated metrics & health scores
β Data β
ββββββββββββββββββββ
Get the full Data Observability Setup and unlock everything.
Get the complete guide with every chapter unlocked, including code samples, diagrams, and best practices.
Access all interactive tools with complete data, all workload profiles, and the full scenario library.
Downloadable source code, configuration files, and working examples from every chapter.
Free updates for life. Every new chapter, tool, and improvement included.