Kestra Plugin ScheduleMonitor

Kestra Plugin ScheduleMonitor

Certified

Detect unhealthy schedule triggers

Finds SCHEDULE triggers that are overdue, missing next execution, or optionally disabled. Defaults: poll every 60s, allowedDelay 1 minute, disabled ignored unless includeDisabled is true.

yaml
type: io.kestra.plugin.kestra.triggers.ScheduleMonitor

Detect stuck, unhealthy, or disabled schedule triggers

yaml
id: detect_schedule_triggers
namespace: company.team

tasks:
  - id: hello
    type: io.kestra.plugin.core.log.Log
    message: "{{ trigger.data.size }} triggers detected"

triggers:
  - id: stuck_schedules
    type: io.kestra.plugin.kestra.triggers.ScheduleMonitor
    includeDisabled: true
    auth:
      username: "{{ secret('KESTRA_USERNAME') }}" # Pass your Kestra username as a secret
      password: "{{ secret('KESTRA_PASSWORD') }}" # Pass your Kestra password as secret
    interval: PT2M
Properties
Defaultfalse

Specifies whether a trigger is allowed to start a new execution even if a previous run is still in progress.

DefaultPT1M

Allowed delay past next run

Defaults to PT1M. If now is after next execution plus this delay, trigger is flagged.

Select API authentication

Use either an API token or HTTP Basic (username/password); do not provide both.

Definitions
apiTokenstring

API token for bearer auth

autobooleanstring
Defaulttrue

Automatically retrieve credentials from Kestra's configuration if available

The default configuration can be configured globally inside the Kestra configuration file:

  • Set kestra.tasks.sdk.authentication.api-token to use an API token
  • Set kestra.tasks.sdk.authentication.username and kestra.tasks.sdk.authentication.password for HTTP basic authentication
  • Set kestra.tasks.sdk.authentication.url to also default the Kestra API endpoint (see kestraUrl above) The Enterprise edition also provides setting a default configuration at the Namespace or Tenant level by an administrator. Set to false to also opt out of the default URL, and to call a Kestra API that requires no authentication when no credentials are set either.
passwordstring

Password for HTTP Basic auth

usernamestring

Username for HTTP Basic auth

Flow filter

Defaultfalse

Include disabled schedules

Defaults to false.

DefaultPT1M
Formatduration

Interval between polling.

The interval between 2 different polls of schedule, this can avoid to overload the remote system with too many calls. For most of the triggers that depend on external systems, a minimal interval must be at least PT30S. See ISO_8601 Durations for more information of available interval values.

Override Kestra API endpoint

URL used for calls to the Kestra API. When null, falls back to the url configured alongside the default SDK authentication (Namespace or Tenant level, Enterprise edition), then renders {{ kestra.url }} from configuration; if still empty, defaults to http://localhost: 8080. Trailing slashes are stripped before use.

Max idle interval between runs

Flags schedules with no execution within this period.

Namespace filter

Prefix match; null scans all namespaces.

SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED

List of execution states after which a trigger should be stopped (a.k.a. disabled).

Override target tenant

Tenant identifier applied to API calls; defaults to the current execution tenant.

Defaulttrue

A condition that determines whether the trigger should run.

A Pebble expression evaluated at trigger time. The trigger fires only when the expression evaluates to a truthy value (true, a non-empty string, a non-zero number). Use this to gate trigger execution on dynamic runtime values such as execution labels, flow variables, or environment conditions.

List of unhealthy schedule triggers

Includes stuck or misconfigured schedule triggers.
Disabled triggers included only when includeDisabled = true.

Definitions
expectedNextstring
Formatdate-time
flowIdstring
lastExecutionstring
Formatdate-time
namespacestring
triggerIdstring