• 6 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 03/12/2024

Envoyez des alertes et des notifications

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.

Exemple de certificat de réussite
Exemple de certificat de réussite