Comment envoyer des alertes Datadog dans Discord ?
Jâen parlais dans un article prĂ©cĂ©dent mais je suis assez fan de Datadog ! Logs, mĂ©triques, moniteurs, tableaux de bords et jâen passe, Datadog est plutĂŽt bien fourni et permet vraiment de gĂ©rer intĂ©gralement son monitoring. Qui dit monitoring, dit monitorer ! (ou âsurveillerâ si toi pas comprendre la langue de Mary Poppins ) Un des outils important de Datadog est sa fonction âMonitorâ qui permet de crĂ©er des alertes en fonction de seuils, variations ou autres critĂšres de dĂ©clenchement. Ces alertes peuvent ĂȘtre envoyĂ©es par mail, sur slack ou dâautres applications.
Depuis le COVID, quelques sociĂ©tĂ©s se sont mises au tĂ©lĂ©travail avec plus ou moins de succĂšs (on vous voit ). Parmi les gros changements quâa apportĂ©s le tĂ©lĂ©travail, il y a eu lâarrivĂ©e massive de la visio : Meet, Zoom, Livestorm ou mĂȘme Discord.
Pour beaucoup de travailleurs du sexe de la tech , ces outils sont devenus monnaie courante.
Certaines sociĂ©tĂ©s en ont dâailleurs profitĂ© pour (parfois) changer leurs outils de communication pour privilĂ©gier un Discord plutĂŽt quâun Slack, notamment pour des raisons de tarification đž.
Et câest lĂ que tu vois le loup arriver ! Discord câest bien, câest pratique mais câest pas aussi bien interconnectĂ© quâun slack notamment quand il sâagit dâenvoyer des notifications Datadog sur Discord
(câest le sujet de lâarticle , ça va jâaccouche ! Pas besoin de tâĂ©nerver ! )
Voyons-donc comment envoyer les alertes de nos moniteurs Datadog, directement dans Discord !
Spoiler : Si tu connais dĂ©jĂ les webhooks, que tâes une diva du dĂ©vâ ou tout autre Apollon de la tech, tu peux directement voir la solution au dernier chapitre
Les webhooks
Si tu es dĂ©veloppeur, tu as forcĂ©ment entendu parler des webhooks. Un webhook câest un systĂšme qui permet dâenvoyer (ou recevoir) des Ă©vĂšnements Ă /depuis une application tierce, en gĂ©nĂ©ral au travers dâun appel HTTP. LâidĂ©e derriĂšre le webhook câest de pouvoir avertir facilement un service tier dâun nouvel Ă©vĂšnement sans avoir Ă se soucier de la pile technique distante. En gros, le webhook va effectuer un call HTTP avec le contenu de la notification dans le corps de la requĂȘte HTTP.
Dans notre cas, Datadog doit notifier Discord dâune nouvelle alerte. Ca se prĂ©sente ainsi :
Pour se faire, il va nous falloir :
- Un webhook Datadog qui envoie la notification
- Un webhook Discord qui reçoit la notification
Créer le webhook coté Discord
Pour créer un webhook sur discord, il faut :
- Se rendre sur les paramĂštres dâun salon textuel
- Puis aller dans Intégrations > Webhooks > Nouveau Webhook
- Copier lâURL du webhook
En crĂ©ant ce webhook, Discord nous donne la possibilitĂ© de poster des messages dans notre salon #test en appelant lâURL du webhook.
Créer le webhook Datadog
Maintenant que notre webhook Discord est opérationnel, occupons-nous de créer le webhook coté Datadog.
- Rendez-vous sur la page dâintĂ©gration des webhook
- Créer un webhook
Le champ Payload est ce qui sera envoyĂ© Ă chaque fois quâune nouvelle alerte sera dĂ©clenchĂ©e. Comme je lâexpliquais plus haut, lâintĂ©rĂȘt du webhook est de faire en sorte de pouvoir communiquer facilement de service-Ă -service mais en aucun cas avec un format dâĂ©change unique ! Chaque site/service Ă sa logique donc les payloads diffĂšrent en fonction du service quâon souhaite atteindre.
Mé komen kon fé pou ke Discord komprene Datadog ?
Format du webhook
En temps normal quand un service intĂšgre des webhooks, il est souvent proposĂ© de choisir le service distant afin dâauto-formater le payload en consĂ©quence (ou de mieux interprĂ©ter le payload qui sera reçu).
Câest par exemple le cas avec Discord qui intĂšgre trĂšs bien les notifications Github, comment ? Tout simplement en ajoutant /github
Ă la fin de lâURL du webhook discord.
Ca marche aussi pour Slack en ajoutant /slack
.
Malheureusement Discord nâintĂšgre pas ce type de âtipsâ pour Datadog.
Il faut donc formater notre payload Datadog pour quâil soit conforme aux spĂ©cifications Discord et avec les bonnes valeurs.
Deux références sont nécessaires :
- Les valeurs disponibles pour les webhooks Datadog
- Les spĂ©cifications Discord pour lâenvoi de webhook
Avec ces informations on peut désormais ajouter un payload qui ressemble à quelque chose du style :
{
"username": "Datadog",
"avatar_url": "https://i.postimg.cc/q7gJ7MKm/datadog.png",
"embeds": [
{
"author": {
"name": "$ALERT_TITLE"
},
"title": "$EVENT_TITLE",
"url": "$LINK",
"description": "$EVENT_MSG",
"color": 14036294
}
]
}
Vous pouvez paramĂ©trer votre payload en fonction du style de rendu que vous voulez, par exemple ajouter des catĂ©gories dans lâembed, nâenvoyer que le texte de lâalerte, ou que le lien etc
Valider votre webhook Datadog avec le payload modifié, puis rendez-vous sur votre Monitor et ajouter @webhook-<nom du webhook>
dans âNotify your teamâ ou dans âSay whatâs happeningâ, thatâs it !
JâespĂšre que ce petit tips vous aura aidĂ©
CTO le jour, codeur la nuit, je partage mon quotidien de tech et d'autres trucs qui me passionnent.