Skip to main content

Event Triggers

Playbook events are triggers that cause a Playbook to run. Events are triggered when specific activity on Mission Control occurs. For example: you can trigger a Playbook to run when a component goes unhealthy.

Multiple playbooks could be listening to the same event and likewise a playbook can be listening to multiple events. If a playbook is listening on multiple events then it is triggered when any of those events occur.

Event Spec

Filters can give you fine-grained control over the events that can trigger the playbook.

FieldDescriptionSchemeRequired
eventEvent to listen for.stringtrue
filterCEL expression for additional event filtering. (See Expressions)stringtrue
labelsLabels specifies the key-value pairs that the associated event's resource must match.map[string]stringfalse

Types

Canary events

Canary events relate to activities on health checks.

EventDescription
passedWhen a previously failed check passes
failedWhen a previously passed check fails

Example

notify-passing-http-checks.yaml
apiVersion: mission-control.flanksource.com/v1
kind: Playbook
metadata:
name: notify-passing-http-checks
spec:
description: Notify when any HTTP check passes
on:
canary:
- event: passed
filter: check.type == 'http'
actions:
- name: Send notification
notification:
connection: connection://telegram/playbook-alerts
title: 'Check {{.check.name}} has passed'
message: 'Description: {{.check.description}}'

Component events

Component events relate to activities on Topology components.

EventDescription
healthywhen a component becomes healthy
unhealthywhen a component becomes unhealthy
infowhen a component has info
warningwhen a component has warning
errorwhen a component has error

Example

notify-unhealthy-database-component.yaml
apiVersion: mission-control.flanksource.com/v1
kind: Playbook
metadata:
name: notify-unhealthy-database-component
spec:
description: Notify when a database component goes unhealthy
on:
component:
- event: unhealthy
filter: component.type == 'database'
labels:
env: production
actions:
- name: Send notification
notification:
connection: connection://telegram/playbook-alerts
title: 'Database {{.component.name}} has become unhealthy'
message: 'Description: {{.component.description}}'

Config events

Config events relate to activities on config items.

EventDescription
createdwhen a config item is created
updatedwhen a config item is updated
deletedwhen a config item is deleted

Example

notify-newly-scraped-pod.yaml
apiVersion: mission-control.flanksource.com/v1
kind: Playbook
metadata:
name: Notify on pod config creation
spec:
description: Notify when a new pod is discovered
on:
component:
- event: config.created
filter: config.class == 'Pod'
actions:
- name: Send notification
notification:
connection: connection://telegram/playbook-alerts
title: 'A new kubernetes pod {{.config.name}} was scraped'
message: 'Namespace: {{.config.namespace}}'