PagerDuty, ou pourquoi le département d'exploitation peut ne pas dormir la nuit

Plus le système est complexe, plus il se voit encombré de divers alertes. Il est donc nécessaire de réagir à ces alertes, de les agréger et de les visualiser. Je pense que cette situation est familière à beaucoup, au point de provoquer un tic nerveux.

La solution dont il sera question ici n'est pas la plus inattendue, mais une recherche approfondie sur ce sujet ne donne pas d'article complet.

C'est pourquoi j'ai décidé de partager l'expérience de FunCorp et d'expliquer comment le processus de gardes est organisé, qui appelle, pourquoi et comment tout cela peut être observé.

PagerDuty, ou pourquoi le département d'exploitation peut ne pas dormir la nuit

Qu'est-ce que PagerDuty ?

Ainsi, pour résoudre tous ces problèmes, nous avons commencé à chercher un outil pratique. Après une courte recherche, nous avons choisi PagerDuty. PD nous a semblé être une solution complète et concise avec de nombreuses intégrations et configurations. Que représente-t-elle ?

En résumé, PagerDuty est une plateforme de gestion des incidents, capable de traiter les incidents entrants via diverses intégrations, de configurer les rotations de garde et d'alerter l'ingénieur de garde en fonction du niveau de l'incident (pour un niveau élevé, un appel ; pour un niveau bas, une notification push de l'application/sms).

Qui est le gardien ?

C'est probablement le premier point à considérer pour configurer PD.

Chez FunCorp, comme dans d'autres entreprises, il existe un poste honorifique de gardien. Ce poste est transmis d'un ingénieur à l'autre tous les jours. Il y a ce qu'on appelle la première et la deuxième ligne de réponse aux alertes de PagerDuty. Supposons qu'une alerte de haute priorité arrive, et si, 10 minutes après l'appel au gardien de la première ligne, il n'y a pas de réponse (c'est-à-dire s'il n'est pas passé au statut 'acknowledge' ou 'resolved'), l'appel est transféré au deuxième ingénieur de garde. Cela se configure dans PagerDuty via les Escalation Policies.

PagerDuty, ou pourquoi le département d'exploitation peut ne pas dormir la nuit

Si le deuxième gardien ne répond pas non plus, la notification revient au gardien principal. Ainsi, toute alerte entrante de haute priorité ne peut rester sans réponse.

Voyons maintenant d'où peuvent provenir les incidents. 

Quelles intégrations utilisons-nous ?

Dans PD, de nombreux incidents variés proviennent de différents services. Actuellement, nous avons environ 25 de ces services, et pour les traiter, nous utilisons certaines intégrations prêtes à l'emploi.

De nombreux incidents variés provenant de différents services se produisent dans PD. Nous avons actuellement environ 25 de ces services, et pour les traiter, nous utilisons certaines intégrations prêtes à l'emploi.

  • Prometheus

Le système principal de collecte de métriques est Prometheus. Beaucoup de choses ont déjà été écrites à son sujet sur Habr, je dirai juste que nous en avons plusieurs pour différents environnements : un collecte des métriques des machines virtuelles et des conteneurs Docker, un autre des services Amazon, et le troisième des machines physiques. Telegraf est principalement utilisé comme exportateur de métriques.

  • Email

Ici aussi, je pense que tout est clair d'après le nom. Cette intégration est utilisée pour envoyer des notifications à partir de certains scripts exécutés via cron. PD vous fournit une adresse à laquelle vous envoyez des courriels. Lors de la création d'un service avec cette intégration, vous pouvez configurer les priorités concernant l'ordre de traitement des incidents entrants, ainsi que la manière de créer une alerte (pour chaque courriel reçu, pour le courriel reçu + une certaine règle, etc.).

PagerDuty, ou pourquoi le département d'exploitation peut ne pas dormir la nuit

  • Slack

À mon avis, c'est une intégration plutôt intéressante. Il arrive qu'il se passe quelque chose mais sans être couvert par des incidents. C'est pourquoi nous avons ajouté l'intégration Slack pour la création d'incidents. C'est-à-dire que dans le Slack d'entreprise, on peut écrire /callofduty все тормозит и скоро сломается et PD le traitera et enverra l'incident à l'ingénieur de garde.

Nous faisons :

PagerDuty, ou pourquoi le département d'exploitation peut ne pas dormir la nuit

Nous voyons :

PagerDuty, ou pourquoi le département d'exploitation peut ne pas dormir la nuit

  • API

Intégration via HTTP. En fait, il n'y a rien de particulièrement intéressant ici, juste une requête POST avec un corps au format JSON. Par exemple, parmi les choses intéressantes : nous l'utilisons pour la surveillance externe avec https://www.statuscake.com/. Ce service vérifie la disponibilité de nos sites depuis différents points du monde. En cas de code de réponse inacceptable (par exemple, 502), un incident est créé et tout se poursuit selon la chaîne décrite ci-dessus. Dans StatusCake, il est possible de surveiller les URL internes, l'expiration des certificats SSL ou du domaine.

  • LibreNMS

C'est un autre système de surveillance, dont vous pouvez lire plus sur leur site https://www.librenms.org/. Grâce à lui, nous surveillons les interfaces réseau et iDRAC des serveurs.

PagerDuty, ou pourquoi le département d'exploitation peut ne pas dormir la nuit

Il y avait aussi des intégrations comme Datadog, CloudWatch. Vous pouvez consulter ce qui leur est arrivé ici.

Visualisation

Le système principal d'information sur les incidents est Slack. Tous les incidents entrants dans PD sont écrits dans un chat spécial, et si leur statut change, cela est également affiché dans le chat.

PagerDuty, ou pourquoi le département d'exploitation peut ne pas dormir la nuit

Lorsque nous avons eu la possibilité d'afficher des données utiles sur les écrans suspendus au plafond, nous avons soudain réalisé que nous (dans le département devops) n'avions rien à afficher. Grafana est formidable, mais elle ne peut pas tout couvrir, et les employés réagissent aux alertes plutôt qu'aux graphiques.

Après une recherche minutieuse mais infructueuse d'un « board » concis et informatif pour PD sur GitHub, nous avons décidé d'en créer un nous-mêmes — uniquement avec ce dont nous avons besoin. Bien qu'au départ, l'idée était d'afficher l'interface de PD elle-même, cela semblait encore plus incommode.

Pour l'écrire, il suffit d'obtenir une clé de PD avec des droits en lecture seule.
Et voici ce que nous avons obtenu :

PagerDuty, ou pourquoi le département d'exploitation peut ne pas dormir la nuit

L'écran affiche les incidents en cours, le nom de l'ingénieur de garde actuel selon le planning choisi, et le temps écoulé sans incident de haute priorité (le panneau affichant l'incident de haute priorité sera surligné en rouge).

Vous pouvez voir le code source de cette réalisation ici.

En fin de compte, nous avons obtenu un tableau de bord pratique pour consulter tous nos incidents. Je serais ravi si notre expérience pouvait être utile à certains d'entre vous.

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster