Data Engineering Pipeline example, Getting started with Kestra
An end-to-end extract, transform, load pipeline that pulls JSON from an API, cleans it in Python, and aggregates it with DuckDB.
Monitor any HTTP endpoint with Kestra. Probe the server, branch on the status code, and send a Slack webhook alert when the service goes down.
Keep your microservices and APIs honest with a lightweight, scheduled health check that pings any HTTP endpoint, inspects the response code, and pages your team on Slack the moment the service stops returning a healthy 200. It is the simplest possible uptime monitor expressed as declarative orchestration: no cron daemon to babysit, no shell script glued to a server, just a parameterized flow you can clone across every environment you run.
http_request task (io.kestra.plugin.core.http.Request) sends an HTTP request to the server_uri input and captures the response. It runs with options.allowFailed: true so a non-2xx response does not abort the flow before you can react to it.check_status task (io.kestra.plugin.core.flow.If) branches on the condition {{ outputs.http_request.code != 200 }}.server_unreachable_alert task (io.kestra.plugin.slack.notifications.SlackIncomingWebhook) posts a "server is down" message to the slack_webhook_uri.healthy task (io.kestra.plugin.core.log.Log) records that the server is responding normally.daily trigger (io.kestra.plugin.core.trigger.Schedule) shows how to run the check automatically every morning at 09:00 with the cron 0 9 * * *.server_uri and slack_webhook_uri inputs for instant reuse across dev, staging, and production.A bare cron job can hit a URL, but it cannot branch on the result, retry on transient errors, alert on failure, or give you searchable execution history and lineage. Kestra turns the check into a declarative YAML flow with event and schedule triggers, built-in retries, full execution logs, and conditional logic, all observable from one UI. You replace a brittle script plus a separate alerting hack with a single versioned definition.
server_uri input).slack_webhook_uri input).This starter flow passes the webhook through the slack_webhook_uri input for easy demos. For production, store the webhook as a Kestra secret and reference it with {{ secret('SLACK_WEBHOOK_URI') }} instead of a plaintext default.
server_uri input to the endpoint you want to watch.slack_webhook_uri input to your real Slack Incoming Webhook URL.healthy log fires for a live endpoint.disabled: true from the daily trigger to run the check every day at 09:00.io.kestra.plugin.core.flow.Loop.http_request to ignore brief blips.