New to Kestra?
Use blueprints to kickstart your first workflows.
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.ForEach.http_request to ignore brief blips.