Blog

S'amuser avec les webhooks : les incidents PagerDuty racontés avec un accent irlandais

par PagerDuty 6 août 2013 | 4 min de lecture

Les webhooks de PagerDuty simplifient la création d'applications et d'outils performants qui réagissent aux incidents en temps réel. Au lieu de créer des scripts interrogeant en permanence les API de PagerDuty , les webhooks permettent à vos services de recevoir les incidents dès leur déclenchement, leur accusé de réception et leur résolution. Par exemple, il est possible de Envoyer automatiquement une carte postale au siège de PagerDuty lorsqu'un incident se produit. (Les frais postaux habituels s'appliquent).

Un exemple un peu plus concret est celui que Clay Smith, l'un de nos ingénieurs web, a créé lors de notre dernier hackathon. Il a implémenté un simple consommateur de webhook qui diffuse les messages d'incident dans le hall d'entrée avec un charmant accent irlandais :

Commencer

Pour activer les alertes audio, vous aurez besoin d'un ordinateur supplémentaire, d'une paire d'enceintes et d'un outil de synthèse vocale en ligne de commande. Nous utilisons la voix irlandaise-anglaise de haute qualité « Moira » fournie avec macOS Mountain Lion. Si vous êtes derrière un pare-feu, vous devrez également activer un tunnel local pour que PagerDuty puisse accéder à votre point de terminaison webhook interne. Nous recommandons d'utiliser ngrok Pour cela, il est possible d'utiliser les packages localtunnel de Python ou de Ruby.

Création de votre premier webhook avec un tunnel localhost

Tout d'abord, nous allons installer et démarrer ngrok sur le port 7388 pour créer un tunnel vers localhost auquel PagerDuty peut envoyer les incidents :

$ sh ./ngrok 7388
État du tunnel en ligne
Version 0.14/0.17
Protocole http
Redirection de https://2812f1d7.ngrok.com vers 127.0.0.1:7388
Interface Web https://localhost:4040
# Connexion 0
Temps de connexion moyen : 0,00 ms

L'URL de redirection est celle que nous utiliserons lors de la création d'un webhook PagerDuty pour un service.

Dans l'interface web de PagerDuty , choisissez le service pour lequel vous souhaitez recevoir des alertes sonores. Modifiez le service et créez un nouveau webhook appelé « Alerte sonore » avec l'URL de point de terminaison : https://<random ngrok key> .ngrok.com/pd-webhook. N'oubliez pas d'ajouter le chemin pd-webhook si vous utilisez le script Node.js de Toolsles mentionné dans cet article.

Enregistrez le webhook, et nous serons alors prêts à configurer la sortie audio.

Utilisation de Tootles, un serveur Node.js qui affiche les incidents en ligne de commande

Pour notre hackathon, nous avons créé l'un des consommateurs de webhook les plus simples qui soient, appelé tootles Tout ce que fait Tooltles, c'est imprimer chaque incident PagerDuty reçu d'un webhook sur la sortie standard. la puissance d'UNIX , nous pouvons rediriger cette sortie vers quelque chose de plus intéressant.

Après avoir installé tooltles, vous pouvez le démarrer à partir de la ligne de commande :

$ node index.js -o résumé

Pour tester, essayez de déclencher manuellement un incident sur votre service configuré avec un webhook. Vous devriez alors voir un résumé de cet incident apparaître dans la sortie :

$ node index.js -o résumé
Alerte PagerDuty déclenchée sur le service de test : Test 1234

Afficher un résumé des changements d'état de l'incident n'est pas très intéressant. Nous voulons que macOS énonce l'incident avec un accent irlandais agréable. Pour cela, nous pouvons rediriger la sortie de tooltles vers la commande say, ou tout autre outil de synthèse vocale en ligne de commande si vous utilisez un autre système.

$ node index.js -o summary | xargs -L 1 say

Si vous êtes sur un Mac, vous pouvez installer des voix supplémentaires Pour encore plus de fun, profitez notamment de la voix agréable de Moira, une voix irlandaise-anglaise. Pour que Moira raconte vos incidents, utilisez l'option -v avec la commande say :

$ node index.js -o résumé | xargs -L 1 dis -v Moira

Les possibilités sont infinies, y compris l'envoi de résumés d'incidents à votre imprimante :

$ node index.js -o summary | lpr

Bien que la synthèse vocale nécessite un ordinateur physique équipé de haut-parleurs, il vaut également la peine d'être explorée. webscript.io si vous souhaitez essayer une solution hébergée dans le cloud pour les consommateurs de webhooks personnalisés écrits en Lua.

Chez PagerDuty, nous sommes ravis des possibilités offertes par l'intégration des webhooks et nous serions heureux de connaître votre expérience. Pour toute question concernant l'intégration de vos webhooks, veuillez contacter support@pagerduty.com.