New to Kestra?
Use blueprints to kickstart your first workflows.
Page Squadcast when an upstream heartbeat goes silent. Kestra probes the endpoint hourly and opens an incident with configurable priority and event id.
Systems that die loudly page themselves; systems that just stop need a witness. This blueprint is that witness. On a schedule, it probes an upstream heartbeat endpoint with io.kestra.plugin.core.http.Request and allowFailed: true, branches on the status code, and opens a Squadcast incident through io.kestra.plugin.squadcast.SquadcastIncomingWebhook when the answer is anything but 200. The incident's priority comes from an input, and its event id is stable per monitored endpoint, so an outage spanning several checks feeds one incident instead of paging on-call once an hour.
probe_heartbeat (io.kestra.plugin.core.http.Request) calls the heartbeat_url input with allowFailed: true, so 4xx and 5xx responses keep the task green and expose the code as an output.route_probe (io.kestra.plugin.core.flow.If) branches on outputs.probe_heartbeat.code != 200.page_silence opens the incident with priority from the page_priority input, status: trigger, tags carrying the flow and the observed HTTP code, and an eventId of heartbeat-{{ flow.namespace }}-{{ flow.id }}. The stable id lets Squadcast correlate repeated triggers and lets a resolve call close the incident when the heartbeat returns.log_alive writes one line, turning the execution history into an uptime trail.errors block, which tells Discord the upstream is currently unmonitored, because a dead monitor feels exactly like a healthy system.Schedule runs the check at the top of each hour.A heartbeat monitor needs a scheduler, an HTTP client, branching, a pager, and its own failure handling, and it must never be the thing that silently stops. Kestra supplies each piece declaratively and keeps every probe in the execution history, so the monitor's own liveness is auditable too.
SQUADCAST_WEBHOOK_URL: the full Squadcast incoming webhook endpoint, including its token.DISCORD_WEBHOOK_URL: Discord incoming webhook URL for the fallback alert.heartbeat_url at a URL returning 404 and confirm a Squadcast incident opens with your chosen priority.heartbeat_url to your real health endpoint and enable the hourly_check trigger.status: resolve with the same event id from the healthy branch, closing the loop when the heartbeat returns.ForEach and give each a distinct event id.