New to Kestra?
Use blueprints to kickstart your first workflows.
Automatically open Zenduty incidents when Kestra workflow executions fail or warn, using one event-driven system flow for the whole instance.
id: failure-alert-zenduty
namespace: system
tasks:
- id: send_alert
type: io.kestra.plugin.zenduty.ZendutyExecution
url: https://www.zenduty.com/api/events/{{ secret('ZENDUTY_INTEGRATION_KEY') }}/
executionId: "{{ trigger.executionId }}"
triggers:
- id: on_failure
type: io.kestra.plugin.core.trigger.Flow
conditions:
- type: io.kestra.plugin.core.condition.ExecutionStatus
in:
- FAILED
- WARNING
Turn every failed or degraded workflow run into an actionable Zenduty incident, all from a single reusable system flow. This blueprint listens for failed and warning executions across your Kestra instance and pages the right on-call responder in Zenduty automatically, so silent pipeline failures never slip past your team. It centralizes incident alerting in one place instead of scattering notification logic across hundreds of individual flows.
io.kestra.plugin.core.trigger.Flow trigger watches executions from other flows on the instance.io.kestra.plugin.core.condition.ExecutionStatus condition filters those events down to runs that ended in FAILED or WARNING state.send_alert task of type io.kestra.plugin.zenduty.ZendutyExecution fires an event to the Zenduty Events API at https://www.zenduty.com/api/events/{{ secret('ZENDUTY_INTEGRATION_KEY') }}/, passing the failed executionId so responders can trace the incident straight back to the run.FAILED) and soft degradations (WARNING).executionId attached to every Zenduty event for fast root-cause tracing.Zenduty raises and routes incidents, but it has no visibility into your orchestration layer on its own. Kestra closes that gap: the event-driven Flow trigger reacts the instant any execution fails, with no polling or cron guesswork. You declare the whole pattern in one YAML file, add retries or extra notification tasks if you want, and keep full execution lineage (which flow, which run) so each Zenduty incident links back to a concrete executionId. One declarative flow covers every other flow on the instance.
ZENDUTY_INTEGRATION_KEY: the Zenduty Events API integration key used to build the events URL.ZENDUTY_INTEGRATION_KEY secret in Kestra.system namespace and enable it.io.kestra.plugin.core.condition.ExecutionNamespaceCondition to scope alerts to specific namespaces.send_alert for multi-channel escalation.ZendutyExecution task to set severity or enrich the incident payload.