Blog

Discussion avec l'API de PagerDuty

par Vivian Au 6 août 2014 | 7 minutes de lecture

Article de blog invité de Simon Westlake, directeur technique de Code de puissance , un système CRM, OSS et de facturation complet conçu pour les FAI. Powercode est utilisé par plus de deux cents FAI dans le monde.

Étant donné que Powercode est utilisé dans le monde entier par différents types de FAI, nous avons des intégrations avec toutes sortes de services tiers différents. Ces intégrations englobent la gestion des comptes de messagerie, l'impression des factures, le traitement des cartes de crédit, le suivi des véhicules, la fourniture d'équipements et bien plus encore. Cependant, la plupart de ces intégrations ne profitent qu'à une poignée de nos clients, c'est pourquoi ce fut une très agréable surprise de constater l'utilisation intensive de PagerDuty parmi nos clients lorsque nous l'avons intégré.

Considérations lors de l'intégration avec des applications tierces

J'ai entendu parler de PagerDuty pour la première fois lorsque nous avons organisé un événement de rencontre d'utilisateurs Powercode dans notre ville natale de Random Lake, Wisconsin en 2012. L'un de nos utilisateurs très passionnés, Steve, me parlait de la façon dont il utilisait Powercode pour son FAI. J'ai mentionné que l'une des choses que nous trouvons très difficiles est de gérer les urgences en dehors des heures d'ouverture, car la plupart des petits FAI utilisant Powercode n'ont pas les revenus nécessaires pour justifier l'exploitation d'un centre d'opérations réseau (NOC) 24h/24 et 7j/7, et que c'est c'est vraiment pénible d'espérer que votre téléphone qui bourdonne vous réveille lorsque vous recevez un e-mail de votre système de surveillance de réseau vous informant que la moitié du réseau est en panne. Il a rapidement sorti son ordinateur portable et s'est connecté à son compte PagerDuty pour me montrer ce qui nous manquait.

Après m'avoir expliqué l'interface et l'ensemble des fonctionnalités, j'ai décidé sur-le-champ qu'il était essentiel pour nous d'intégrer PagerDuty dans Powercode. Cependant, nous avons trois exigences strictes auxquelles nous adhérons toujours lorsque nous intégrons des services tiers dans Powercode :

  1. Le service dispose-t-il d'une API ?
  2. L'API est-elle bien écrite et documentée ?
  3. L'entreprise fournit-elle un environnement de test/d'intégration pour les développeurs ?

Nous avons déjà parcouru des chemins sombres où nous avons décidé de sauter l'une de ces exigences et cela se transforme toujours en un cauchemar à long terme. Des API mal écrites (ou pas d'API du tout) et peu de support de la part de tiers signifient que nous finissons par devoir reconstituer une intégration fragile et, si les clients en viennent à vraiment compter sur l'intégration, c'est un casse-tête permanent d'essayer de la faire fonctionner. . Heureusement, PagerDuty a tenu ses promesses sur ces trois points. L'API était solide et bien documentée et ils nous ont facilement fourni un environnement de test pour intégrer le service dans Powercode. Lorsque nous examinons de nouveaux fournisseurs, je croise toujours les doigts pour une API cohérente, REST et basée sur JSON et heureusement, c'est ce que nous avons obtenu !

L'une des choses que j'aime vraiment lors de la création d'une intégration avec un système tiers est de constater que l'API qui nous est exposée est la même API utilisée pour construire le système de base par les développeurs d'origine et cela semble certainement être le cas avec PagerDuty. API. Nous avons pu très facilement intégrer tout ce dont nous avions besoin et l’intégration s’est déroulée en douceur et sans douleur.

Analyse de l'API d'intégration de PagerDuty

Nous avons dû prendre quelques décisions lorsque nous travaillions avec l'API. Avant d'intégrer PagerDuty, la seule option d'alerte dans Powercode était de déclencher un e-mail. Le mécanisme de déclenchement avait une variété d'options de configuration telles que :

  1. Combien de temps cet appareil doit-il rester en état d’alerte avant qu’une alerte ne soit générée ?
  2. Combien de fois Powercode doit-il répéter la notification ?
  3. Quelle est la fréquence et le nombre de répétitions ?

Nous avons rapidement réalisé que maintenir cette configuration n'avait pas de sens avec la possibilité de configurer vos paramètres d'alerte dans PagerDuty. Nous voulions également un moyen de pouvoir conserver un historique des alertes pour les appareils dans PagerDuty. Enfin, nous avons dû prendre certaines décisions quant à la mise en place ou non d'une intégration bidirectionnelle avec PagerDuty : si une alerte est ouverte ou modifiée dans PagerDuty, doit-elle manipuler quoi que ce soit dans Powercode ?

Après de longues délibérations, nous avons décidé de ne pas intégrer de communication bidirectionnelle. Nous voulions que Powercode reste le « maître » en ce qui concerne l'état des incidents et encourager les gens à utiliser l'interface Powercode pour gérer leurs équipements. Cela nous a laissé un problème à résoudre : que se passe-t-il si quelqu'un résout un incident dans PagerDuty alors qu'il est toujours en alerte dans Powercode ?

Pour faire face à cela, nous avons décidé de déclencher une création ou une mise à jour d'incident dans PagerDuty à chaque cycle de notre moteur de notification, soit une fois par minute. PagerDuty enregistre les mises à jour d'un incident ouvert sans déclencher un autre incident et regroupe automatiquement les incidents ouverts qui se produisent à peu près au même moment dans une seule alerte pour réduire le bruit des alertes. Bien que cela puisse créer une longue liste de mises à jour d'incidents dans PagerDuty, cela nous a apporté certains avantages :

  1. Si l'état d'un appareil change, ce changement est reflété dans la description de l'incident PagerDuty. Par exemple, si un routeur émet une alerte parce que l'utilisation du processeur est trop élevée et qu'il commence ensuite à alerter parce que la température est trop élevée, le redéclenchement de l'incident nous permet de renseigner ces informations dans la description.
  2. Si un utilisateur résout un incident dans PagerDuty qui n'est pas vraiment résolu (l'appareil est toujours en état d'alerte), il sera rouvert automatiquement.

L'un des avantages de l'API PagerDuty est qu'elle vous permet de soumettre une « clé d'incident » afin de suivre l'incident en question. Nous avons décidé d'utiliser l'ID unique dans notre base de données associé à l'équipement qui alerte comme clé d'incident – ​​cela a simplifié le processus de déduplication et nous a permis de conserver un historique dans PagerDuty des incidents survenus avec cet équipement. Cela a également facilité la résolution ou la reconnaissance des incidents dus à des modifications au sein de Powercode : nous avons toujours su référencer l'incident en question sans avoir à stocker un autre identifiant. Cette fonctionnalité apparemment petite de l'API PagerDuty a vraiment accéléré notre capacité à l'intégrer rapidement. Voir un exemple ci-dessous pour voir à quel point cela est simple pour nous en PHP :

pagerduty-incident-api

Cela nous donne une belle liste d'incidents descriptifs dans PagerDuty:

Powercode_incident_description

Tenez tout le monde informé avec PagerDuty

Notre intégration initiale utilisait uniquement « l'API d'intégration » de PagerDuty. Nous avons estimé que la plupart des autres fonctionnalités seraient contrôlées et accessibles par les utilisateurs directement via l'application PagerDuty , et qu'il ne servait pas à grand-chose de tout recréer dans Powercode. Cependant, au fil du temps, nous avons progressivement trouvé des utilisations pour les données d’autres sections. Par exemple, nous avons déployé un système au sein de notre NOC qui utilise la section Planifications et politiques d'escalade de l'API pour afficher à nos techniciens locaux qui est la personne de garde actuelle et qui appeler en cas d'escalade. Notre prochain plan consiste à implémenter la section webhooks de l'API pour pouvoir stocker des journaux dans Powercode indiquant qui travaille actuellement sur un incident. Cela nous permet de donner à nos clients la possibilité d'obtenir de meilleures données en temps réel sans avoir besoin de créer des comptes dans PagerDuty pour chaque membre de leur organisation.

Dernières pensées

Ce que j’aime vraiment, c’est de constater que nos clients réagissent positivement et utilisent le service. Je pense que l'intégration de PagerDuty dans Powercode est le service tiers le plus utilisé parmi tous les différents services que nous avons intégrés. Une fois que nous avons commencé à montrer aux gens comment cela fonctionnait, la réponse a été universellement positive. Nous avons même commencé à utiliser PagerDuty pour notre assistance en dehors des heures d'ouverture pour Powercode lui-même : si vous appelez notre ligne d'assistance d'urgence en dehors des heures d'ouverture et laissez un message vocal, cela ouvre un incident dans PagerDuty pour suivre le processus d'escalade !

Nous continuons de recommander PagerDuty à nos clients et je suis convaincu que leur solide API et leur excellent support signifieront que l'intégration continue dans Powercode est une évidence. Consultez ce guide d'intégration pour voir à quel point il est facile d'intégrer Powercode avec PagerDuty.