New to Kestra?
Use blueprints to kickstart your first workflows.
Catch dlt pipelines that stopped without failing. Kestra queries the _dlt_loads audit table, computes last-load age per dataset, and alerts Slack on staleness.
The most dangerous pipeline failure is the one that does not fail: a disabled schedule, a revoked credential on a machine nobody watches, an upstream that quietly stopped producing. This blueprint monitors the one artifact every dlt pipeline maintains for free, the _dlt_loads audit table, and computes how long ago each dataset last completed a load. Any dataset older than the threshold triggers a Slack alert naming it and its age; a healthy warehouse produces a quiet log line.
check_freshness (io.kestra.plugin.dlt.CLI) ships a small Python script through inputFiles and runs it with commands. The script walks every schema in the warehouse, finds those containing a _dlt_loads table, and reads max(inserted_at) for completed loads (status = 0).route_result (io.kestra.plugin.core.flow.If) branches on stale_count: breaches page Slack with dataset names and ages; a clean sweep logs the report for the execution history.errors block alerts when the monitor itself cannot run, because an unmonitored warehouse feels identical to a healthy one until it is not.Schedule runs after the nightly loads should have landed.Freshness monitoring needs a scheduler, a place to run warehouse queries, branching logic, alert routing, and its own failure handling, exactly the primitives a workflow engine provides. Kestra runs the check on cadence, keeps every report in the execution history as a freshness time series, and guarantees that a monitor outage itself raises an alert instead of silence.
env.SLACK_WEBHOOK_URL: Slack incoming webhook URL.SLACK_WEBHOOK_URL secret and set WAREHOUSE_DB_PATH in the task env to your warehouse location.max_age_hours to fit your load cadence and enable the morning_check trigger._dlt_loads has the same shape in every dlt destination.