RunRule icon
DiscordIncomingWebhook icon
Schedule icon

Schedule a Daily Sifflet Observability Sweep

Schedule a daily Sifflet observability sweep with Kestra. The flow runs your critical monitoring rule and posts the outcome to Discord every morning.

Categories
Data

The most dangerous monitoring failure is the silent one: the rule that stopped running weeks ago while everyone assumed it was green. This blueprint gives your most critical Sifflet rule a scheduled heartbeat inside Kestra. io.kestra.plugin.sifflet.RunRule launches the run every morning, Discord gets the outcome either way, and every sweep leaves an execution record you can audit, so the question is never whether the check ran, only what it found.

How it works

  1. The daily_sweep trigger (io.kestra.plugin.core.trigger.Schedule) fires at 06:15 every day. It ships disabled so importing the blueprint never starts unreviewed API calls.
  2. run_critical_rule (io.kestra.plugin.sifflet.RunRule) authenticates with the API key, targets your tenant through baseUrl, and launches a run of the rule named by the rule_id input.
  3. The task exposes status, statusCode, ruleId, and the raw response as outputs; notify_channel posts the status and HTTP code to Discord.
  4. The errors block posts a distinct alert when the sweep fails, naming the likely suspects: the API key, the tenant URL, or the rule ID.
  5. Kestra's execution history becomes the audit log for the sweep, one entry per day, filterable by state.

What you get

  • A daily guarantee that the critical rule run was launched, with a notification either way.
  • An execution history that doubles as an audit trail for the check itself, not just the data it checks.
  • Loud failure when the sweep breaks, so an expired API key surfaces the same morning instead of during an incident.
  • A single input to repoint the sweep at a different rule, no logic changes.

Who it's for

  • Data platform teams who treat their observability tooling as production and want it monitored like production.
  • On-call engineers who want one Discord message each morning confirming the safety net is active.
  • Compliance-minded teams who need evidence that critical data checks ran every day.

Why orchestrate this with Kestra

Sifflet schedules rule runs on its own, but then the schedule, the result, and your pipelines live in different systems. Running the sweep from Kestra puts the heartbeat next to the pipelines it protects: the same execution history, the same alerting channel, and the same place you look when something is off. It also catches the failure mode Sifflet cannot report on itself, credentials or connectivity breaking between your platform and the observability tool.

Prerequisites

  • The Sifflet rule ID of your critical check.
  • A Sifflet API key with permission to run rules.
  • A Discord incoming webhook for sweep reports.

Secrets

  • SIFFLET_API_KEY: Sifflet API bearer token used to run the rule.
  • SIFFLET_BASE_URL: base URL of your Sifflet tenant API.
  • DISCORD_WEBHOOK_URL: Discord incoming webhook URL.

Quick start

  1. Add the SIFFLET_API_KEY, SIFFLET_BASE_URL, and DISCORD_WEBHOOK_URL secrets to your Kestra namespace.
  2. Set the rule_id input to your critical rule and execute the flow once manually.
  3. Confirm the Discord message, then set disabled: false on the daily_sweep trigger.

How to extend

  • Sweep a whole rule pack instead of one rule by adding a ForEach, as shown in the Sifflet rule pack fan-out blueprint.
  • Chain the sweep behind your morning loads, as shown in the Sifflet rule after load blueprint, so the rule always sees fresh data.
  • Add a second schedule with a different cron for rules that need more than daily coverage.
  • Add retry on the rule task to ride out transient API errors before alerting.

Links

See How

New to Kestra?

Use blueprints to kickstart your first workflows.