Blog

S'amuser avec les Webhooks : les incidents de PagerDuty sont racontés sur un rythme irlandais

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

Les webhooks PagerDuty facilitent la création d'applications et d'outils puissants qui répondent aux incidents au fur et à mesure qu'ils se produisent. Au lieu de créer des scripts qui interrogent en permanence les API PagerDuty , les webhooks permettent à vos propres services de recevoir les incidents au fur et à mesure qu'ils sont déclenchés, reconnus et résolus. Par exemple, il est possible de envoyer automatiquement une carte postale au siège social de PagerDuty lorsqu'un incident change (les frais postaux réguliers s'appliquent).

Un exemple un peu plus pratique est celui que Clay Smith, l'un de nos ingénieurs Web, a créé lors de notre dernier hackday. Il a implémenté un consommateur de webhook simple qui transmet les messages d'incident au foyer dans une jolie intonation irlandaise :

Commencer

Pour activer les incidents sonores, vous aurez besoin d'un ordinateur de rechange, d'une paire de haut-parleurs et d'un outil permettant la synthèse vocale à partir de la ligne de commande. Nous utilisons la voix anglaise irlandaise « Moira » de haute qualité fournie avec Mac OS X Mountain Lion. En supposant que vous soyez derrière un pare-feu, vous aurez également besoin d'une sorte de tunneling localhost activé pour que PagerDuty puisse atteindre votre point de terminaison de webhook interne. Nous vous recommandons d'utiliser ngrok pour cela, mais il est également possible d'utiliser les packages python ou ruby localtunnel.

Créer votre premier webhook avec un tunnel local

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
Transfert http://2812f1d7.ngrok.com -> 127.0.0.1:7388
Interface Web http://localhost:4040
# Conn 0
Temps de connexion moyen 0,00 ms

L'URL de transfert est ce que nous utiliserons lorsque nous créerons un webhook PagerDuty pour un service.

Dans l'interface Web de PagerDuty , choisissez un service pour lequel vous souhaitez recevoir des alertes sonores. Modifiez le service et créez un nouveau webhook appelé « Alerte sonore » avec l'URL du point de terminaison : http://<random ngrok key> .ngrok.com/pd-webhook. N'oubliez pas d'ajouter le chemin pd-webhook si vous comptez utiliser le script tootles node.js utilisé dans cet article de blog.

Enregistrez le webhook, puis nous sommes prêts à configurer la sortie audio.

Utilisation de Tootles, un serveur Node.js qui imprime les incidents sur la ligne de commande

Pour notre hackday, nous avons créé l'un des consommateurs de webhook les plus simples imaginables, appelé des tootles . Tout ce que fait Tootles est d'imprimer chaque incident PagerDuty reçu d'un webhook pour le publier en standard. Tirer parti la puissance d'UNIX , nous pouvons canaliser cette sortie vers quelque chose de plus intéressant.

Après avoir installé Tootles, vous pouvez le démarrer depuis la ligne de commande :

$node index.js -o résumé

Pour tester, essayez de déclencher un incident manuel 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é
L'alerte PagerDuty sur le service de test a été déclenchée : test 1234

Cependant, imprimer un résumé des changements d'état de l'incident n'est pas très intéressant. Nous voulons que Mac OS X énonce l'incident avec une belle voix irlandaise. Nous pouvons le faire en transmettant la sortie de tootles à la commande say, ou à tout autre outil de ligne de commande de synthèse vocale si vous êtes sur un autre système :

$ node index.js -o résumé | xargs -L 1 dire

Si vous utilisez un Mac, vous pouvez installer des voix supplémentaires pour plus de fun, y compris une jolie voix irlandaise anglaise appelée Moira. Pour que Moira prononce vos incidents, utilisez l'indicateur -v sur la commande say :

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

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

$node index.js -o résumé | lpr

Bien que la synthèse vocale nécessite un ordinateur physique avec des haut-parleurs, elle vaut également la peine d'être vérifiée webscript.io si vous souhaitez essayer une solution hébergée dans le cloud pour les consommateurs de webhook personnalisés écrits en lua.

Nous sommes enthousiasmés par les possibilités d'intégration de webhooks chez PagerDuty et nous sommes impatients de vous entendre sur la façon dont vous utilisez les webhooks. Contactez l'assistance sur pagerduty point com pour plus d'informations si vous souhaitez de l'aide pour l'intégration de votre webhook.