पाठ 21 / 25

Monitoring, Logs और SLAs

UI, logs, metrics और alerts से pipeline की सेहत देखें और देरी ट्रैक करें।

व्यवसाय से पहले आपको पता चले

UI DAG runs, task स्थितियाँ, अवधियाँ, logs और graph दिखाता है; Grid और Graph views पढ़ना सीखें। Production के लिए Grafana जैसे dashboard में metrics जोड़ें (Airflow scheduler lag, task अवधि और विफलताओं के StatsD/OpenTelemetry metrics भेज सकता है), logs केंद्रीकृत करें (object storage पर remote logging), और विफलताओं, लंबे चलने वाले tasks और शुरू न हुए runs के लिए alerts लगाएँ। आपकी pipelines जो डेटा बनाती हैं उसकी ताज़गी ट्रैक करें, क्योंकि "DAG सफल हुआ" का मतलब "डेटा सही और समय पर है" नहीं। डेटा-गुणवत्ता जाँचें (row counts, nulls, duplicates) ऐसे tasks के रूप में जोड़ें जो अपेक्षाएँ टूटने पर run विफल करें।

देरी का गणित, चलाकर

मैंने यह चलाया: 06:00 के लिए निर्धारित रिपोर्ट 30 मिनट के लक्ष्य के विरुद्ध 06:47 पर ख़त्म हुई, यानी अनुमति से 17 मिनट देर।

from datetime import datetime, timedelta
sched = datetime(2026, 10, 2, 6, 0); finished = datetime(2026, 10, 2, 6, 47); target = timedelta(minutes=30)
print("late by", finished - sched - target)

Output:

late by 0:17:00

डेटा-गुणवत्ता task

दिन की row count असंभावित हो तो run विफल करें। warehouse_count आपके अपने query helper का प्रतीक है। उदाहरण।

@task
def check_rows(ds=None) -> None:
    n = warehouse_count(f"SELECT COUNT(*) FROM analytics.daily_orders WHERE order_date = '{ds}'")
    if n < 1000:
        raise ValueError(f"Only {n} rows for {ds}; expected at least 1000")

त्वरित जाँच: Pipeline के भीतर डेटा-गुणवत्ता क्यों जाँचें?

  • गुणवत्ता जाँचें सिर्फ़ डिज़ाइन से DAGs को ज़्यादा विफल करती हैं
  • सफल DAG run भी ग़लत या ग़ायब डेटा बना सकता है
  • Airflow SQL नहीं चला सकता
  • यह monitoring की जगह लेता है
Answer

सफल DAG run भी ग़लत या ग़ायब डेटा बना सकता है — Task सफलता का मतलब बस यह कि कोड चला; स्पष्ट जाँचें पुष्टि करती हैं कि डेटा अपेक्षाओं पर खरा है।