Blog

DNSmetrics : collecte unifiée de métriques provenant de plusieurs fournisseurs DNS

par Max Timchenko 18 avril 2017 | 4 minutes de lecture

Nous sommes ravis d'annoncer que nous mettons en open source l'outil que nous utilisons pour collecter et transformer les métriques de nos fournisseurs DNS gérés. Nous utilisons DNSmetrics pour fournir des données dans un format standard aux systèmes de surveillance et d'alerte de notre équipe SRE, et nous espérons que cela pourra également vous être utile.

Le rôle central du DNS

Chez PagerDuty, la fiabilité et la disponibilité de nos services sont primordiales. La disponibilité est une exigence clé dans la conception de notre infrastructure interne, mais les mêmes exigences doivent s'appliquer à l'infrastructure que nous ne possédons pas. PagerDuty fait appel à des fournisseurs tiers pour certains composants essentiels de son infrastructure, et nous allons aujourd'hui aborder l'un d'entre eux : le DNS.

Le système de noms de domaine (DNS) est chargé de traduire les noms de domaine, comme pagerduty.com, en adresses réseau de serveurs capables de répondre aux requêtes des API et des applications web. Les adresses étant susceptibles de changer, la plupart des systèmes (et la quasi-totalité des utilisateurs) utilisent des noms. Si le DNS n'est pas disponible pour notre domaine, nos services deviennent inaccessibles pour la plupart de nos clients. Il est donc crucial de disposer d'un DNS disponible et correctement configuré.

Les fournisseurs DNS l'ont bien compris et maintiennent un réseau mondial de systèmes hautement disponibles. Cependant, les grands systèmes ne sont pas infaillibles, et la nature du DNS le rend particulièrement vulnérable aux attaques par déni de service. De fait, de nombreux grands noms du secteur des fournisseurs DNS gérés ont connu au moins une interruption de service majeure ces dernières années (quelques exemples : 1 , 2 , 3 , 4 ). PagerDuty utilisait auparavant un seul fournisseur, mais nous ne le considérons plus comme suffisamment fiable. Actuellement, nous dépendons de deux fournisseurs pour nos besoins DNS, dans une configuration active-active (chaque fournisseur est responsable d'environ la moitié de notre trafic de production).

Pourquoi nous avons créé DNSmetrics et comment cela aide

La mise en place de la surveillance et des alertes pour nos deux fournisseurs DNS s'est avérée complexe. Bien que chaque fournisseur propose des aperçus et des rapports dans son interface d'administration, ces rapports diffèrent d'un fournisseur à l'autre : sélection des métriques exposées, localisation des mêmes données dans les différentes interfaces, intervalle de temps utilisé pour les moyennes et les rapports, etc. Obtenir une bonne vue d'ensemble de l'état du DNS entre nos fournisseurs et nos zones a nécessité plus d'efforts et des écrans différents que ce que nous aurions souhaité. Nous souhaitions donc utiliser nos propres outils d'alerte (notamment concernant l'interaction entre les deux fournisseurs, par exemple pour vérifier qu'aucun des deux ne reçoit plus d'une certaine part de notre trafic total).

Nous avions besoin d'une meilleure solution, mais aucune n'était disponible. Nous en avons donc développé une. Il s'agit d'un service qui se connecte à nos deux fournisseurs DNS via leurs API et extrait les métriques qui nous intéressent. Ces métriques sont normalisées dans le même espace de noms et les mêmes unités, puis émises au format statsd standard pour être intégrées à tout système de surveillance de séries chronologiques.

Au lieu de deux interfaces administratives différentes et de plusieurs écrans sur chacune d'elles, nous disposons désormais d'un tableau de bord unique qui fournit un aperçu de la santé de notre DNS agrégé sur tous les fournisseurs et zones :

De plus, maintenant que nous avions les mesures de séries chronologiques en un seul endroit, nous pouvions appliquer toute la puissance expressive des requêtes de séries chronologiques (moniteurs DataDog, dans notre cas) pour configurer des alertes flexibles sur notre DNS de manière agrégée sur tous les fournisseurs, par fournisseur et par zone, si nécessaire.

La surveillance des fournisseurs DNS gérés est un problème qui n'est en aucun cas propre à l'équipe SRE de PagerDuty, nous avons donc décidé de DNSmetrics open source Actuellement, DNSmetrics ne prend en charge que les fournisseurs que nous utilisons, mais étendre sa couverture à d'autres fournisseurs devrait être simple, à condition qu'ils disposent d'une API REST exposant les métriques couramment utilisées. Essayer DNSmetrics est un jeu d'enfant. exécuter un conteneur Docker , et nous espérons que vous lui donnerez un coup de pouce et que vous lui trouverez peut-être également une place dans votre environnement.