Webhooks

Webhooks

Crawler Crawler

Présentation

Les webhooks vous permettent de :

  • Vous connecter à vos services.
  • Être informé lorsqu’une alerte de métrique se déclenche pour un service.

Implémentation

Accédez au carré d’intégration Webhooks et saisissez l’URL et le nom du webhook que vous souhaitez utiliser.

Utilisation

Pour utiliser votre webhook, ajoutez @webhook-nom_de_votre_webhook dans le texte de l’alerte de métrique qui déclenchera le webhook. Une requête POST sera envoyée à l’URL que vous avez spécifiée avec le contenu suivant au format JSON. Toutes les requêtes individuelles expirent au bout de 15 secondes. Datadog n’effectue une nouvelle tentative qu’en cas d’erreur interne (message de notification incorrect) ou en cas de réception d’une réponse 5XX de la part de l’endpoint du webhook. Si un échec de connexion se produit, 5 nouvelles tentatives sont effectuées.

Vous pouvez également spécifier votre propre charge utile afin d’ajouter vos propres champs personnalisés à la requête. Cochez la case Use Custom Payload et spécifiez votre charge utile personnalisée en utilisant les variables ci-dessous. Si vous souhaitez encoder votre charge utile dans une URL, cochez la case Encode as form et spécifiez votre charge utile au format JSON.

VariableSignification
$AGGREG_KEYID pour agréger des événements connexes (p. ex., 9bd4ac313a4d1e8fae2482df7b77628).
$ALERT_CYCLE_KEYID permettant d’associer des événements depuis le déclenchement d’une alerte jusqu’à sa résolution.
$ALERT_IDID de l’alerte (p. ex., 1234).
$ALERT_METRICNom de la métrique s’il s’agit d’une alerte (p. ex., system.load.1).
$ALERT_QUERYRequête du monitor qui a déclenché le webhook.
$ALERT_SCOPEListe des tags déclenchant l’alerte, séparés par des virgules (p. ex., availability-zone:us-east-1a, role:computing-node).
$ALERT_STATUSRésumé du statut d’alerte (p. ex., system.load.1 divisé par host:my-host était > 0 au moins une fois lors de la dernière minute).
$ALERT_TITLETitre de l’alerte.
$ALERT_TRANSITIONType de notification d’alerte (valeurs : Recovered, Triggered/Re-Triggered, No Data/Re-No Data, Warn/Re-Warn, Null ou Renotify).
$ALERT_TYPEType de l’alerte.
$DATEDate (epoch) à laquelle l’événement s’est produit (p. ex., 1406662672000).
$EMAILE-mail de l’utilisateur publiant l’événement qui a déclenché le webhook.
$EVENT_MSGTexte de l’événement (p. ex., @webhook-url Envoi au webhook).
$EVENT_TITLETitre de l’événement (p. ex., [Triggered] [Memory Alert]).
$EVENT_TYPEType de l’événement (valeurs : metric_alert_monitor, event_alert ou service_check).
$HOSTNAMELe hostname du serveur associé à l’événement (le cas échéant).
$IDID de l’événement (p. ex., 1234567).
$LAST_UPDATEDDate de la dernière mise à jour de l’événement.
$LINKURL de l’événement (p. ex., https://app.datadoghq.com/event/jump_to?event_id=123456).
$LOGS_SAMPLEÉchantillon de logs provenant d’alertes de log monitor.
$METRIC_NAMESPACEEspace de nommage de la métrique s’il s’agit d’une alerte.
$ORG_IDID de votre organisation (p. ex., 11023).
$ORG_NAMENom de votre organisation (p. ex., Datadog).
$PRIORITYPriorité de l’événement (valeurs : normal ou low).
$SNAPSHOTURL de l’image si l’événement contient un snapshot (p. ex., https://url.vers.snapshot.com/).
$TAGSListe des tags associés à l’événement séparés par des virgules (p. ex., monitor, name:myService, role:computing-node).
$TEXT_ONLY_MSGTexte de l’événement sans mise en forme markdown.
$USERUtilisateur publiant l’événement qui a déclenché le webhook (p. ex., rudy).
$USERNAMENom de l’utilisateur publiant l’événement qui a déclenché le webhook.

Authentification

Si vous souhaitez envoyer vos Webhooks vers un service nécessitant une authentification, vous pouvez utiliser l’authentification HTTP standard en remplaçant votre URL https://mon.service.example.com par https://<NOMUTILISATEUR>:<MOTDEPASSE>@mon.service.example.com.

Multiples webhooks

Dans une alerte de monitor, si au moins 2 endpoints de webhook sont notifiés, une file d’attente de webhooks est alors créée pour chaque service. Cela signifie que si vous communiquez avec Pagerduty et Slack (par exemple), une nouvelle tentative sur le webhook Slack n’affectera pas le webhook Pagerduty.

Néanmoins, dans le contexte Pagerduty, certains événements passent toujours avant les autres. En particulier, une charge utile « Acknowledge » passe toujours avant « Resolution ». De cette manière, si un ping « Acknowledge » échoue, le ping « Resolution » sera mis en attente conformément à la logique de nouvelle tentative.

Exemples

Envoi de SMS par Twilio

Utilisez l’URL : https://<ID_COMPTE>:<TOKEN_AUTH>@api.twilio.com/2010-04-01/Accounts/<ID_COMPTE>/Messages.json

et comme charge utile :

{
    "To": "+1347XXXXXXX",
    "From": "+1347XXXXXX",
    "Body": "$EVENT_TITLE \n Graphique correspondant : $SNAPSHOT"
}

Assurez-vous de remplacer To par votre numéro de téléphone et From par le numéro que Twilio vous a attribué. Cochez la case Encode as form.

Créer un ticket dans Jira

Utilisez l’URL : https://<NOM_UTILISATEUR_JIRA>:<MOTDEPASSE_JIRA>@<VOTRE_DOMAINE>.atlassian.net/rest/api/2/issue

et comme charge utile :

{
    "fields": {
        "project": {
            "key": "VOTRE-CLÉ-PROJET"
        },
        "issuetype": {
            "name": "Task"
        },
        "description": "Une erreur s'est produite. Consultez le graphique $SNAPSHOT ainsi que l'événement $LINK",
        "summary": "$EVENT_TITLE"
    }
}

Ne cochez pas la case « Encode as form ».