Kestra permet de gérer les cas d’erreurs et de retry, mais il est aussi possible d’envoyer des alertes. Des plugins tels que Slack, Email, MS Teams, Telegram et bien d'autres peuvent être utilisés pour envoyer des messages à vos applications de messagerie préférées.
Envoyez des notifications au niveau du Flow
Voici un exemple simple pour envoyer un message via Slack Webhook.
id: slack_incoming_webhook
namespace: open_class_room.kestra
tasks:
- id: slack
type: io.kestra.plugin.notifications.slack.SlackIncomingWebhook
url: "{{ secret('SLACK_WEBHOOK') }}"
payload: |
{
"channel": "#alerts",
"text": "Flow {{ flow.namespace }}.{{ flow.id }} started with execution {{ execution.id }}"
}
Il peut être intéressant d'utiliser ce genre de tâches dans des cas spécifiques de gestion des erreurs. Comme nous l'avons vu précédemment, la propriété error
au niveau du flux peut être très intéressante pour ce type de cas, permettant d'envoyer une notification et des informations correspondantes lorsqu'une erreur se produit dans une exécution de flux.
Envoyez des notifications de façon globale
Au lieu de répéter ce genre de code pour définir la logique d'alerte dans chaque flux séparément, nous pouvons aussi tirer parti des fonctionnalités de Flow Trigger pour surveiller un namespace entier en une seule fois.
Par exemple, le flux suivant envoie une notification Slack chaque fois qu'un flux du namespace company.analytics
se termine avec des erreurs ou des avertissements. Grâce à la variable executionId
, l'alerte inclut un lien vers la page d'exécution du flux défaillant.
id: slackFailureAlert
namespace: company.monitoring
tasks:
- id: send
type: io.kestra.plugin.notifications.slack.SlackExecution
url: "{{ secret('SLACK_WEBHOOK') }}"
channel: "#general"
executionId: "{{ trigger.executionId }}"
triggers:
- id: listen
type: io.kestra.plugin.core.trigger.Flow
conditions:
- type: io.kestra.plugin.core.condition.ExecutionStatusCondition
in:
- FAILED
- WARNING
- type: io.kestra.plugin.core.condition.ExecutionNamespaceCondition
namespace: company.analytics
prefix: true
De cette façon, nous définissons cette logique une seule fois. Le Trigger écoutera l'état d'exécution de n'importe quel flux dans le namespace company.analytics
, y compris tous les namespaces enfants, et enverra automatiquement des messages Slack en cas d'échec.
En résumé
Plusieurs plugins de notification existent pour envoyer des messages vers vos applications de messagerie.
Il est possible d’envoyer des messages dans un flow directement.
Il est possible d’écouter un ensemble de flow et d’envoyer une alerte en fonction de leur état (par exemple en cas d’erreur).
Nous avons vu les notions de flow les plus importantes à connaître dans Kestra ! Voyons maintenant ce qui se cache derrière l’architecture de Kestra.