Maintenez vos APIs en bonne santé avec APISIX et Prometheus

Bobur Umurzokov

Bobur Umurzokov

July 20, 2023

Technology

Les vérifications de santé des API font partie d'une approche proactive pour surveiller l'état général de vos API. Elles vous permettent de rester informé sur la santé globale de vos API et d'identifier tout problème dès les premières étapes. Dans cet article, nous explorerons comment APISIX et Prometheus travaillent ensemble pour collecter et analyser les métriques de vérification de santé, facilitant ainsi la surveillance, le diagnostic et la résolution des problèmes liés aux API.

Pourquoi est-ce important pour les entreprises ?

Le fait d'établir des indicateurs de niveau de service (SLIs) et des objectifs de niveau de service (SLOs) est devenu un élément crucial des meilleures pratiques en ingénierie de la fiabilité des sites (SRE). Ils aident l'équipe à définir des objectifs clairs sur la manière dont un service (comme un site web ou une application) devrait fonctionner. Ces objectifs peuvent concerner des services internes (comme une API utilisée par les propres applications de l'entreprise) ou des produits publics (utilisés par les clients). Ils fournissent aux équipes une approche quantifiable pour gérer les performances d'un système. Par exemple, les SLIs courants incluent le taux d'erreur, la latence, le débit et la disponibilité, ou un SLO pourrait être "99,9 % des requêtes API doivent se terminer en moins de 300 ms".

APISIX, la passerelle API, se situe à l'avant de votre infrastructure API et peut jouer un rôle clé dans la mesure des SLIs et SLOs. Vous n'avez pas à déterminer quoi mesurer et comment le mesurer, car cela peut devenir problématique, surtout dans les architectures complexes et distribuées d'aujourd'hui. APISIX suit automatiquement toutes les métriques nécessaires telles que la latence, les requêtes infructueuses ou le débit pour les services en amont consommés par vos API. APISIX peut effectuer des vérifications de santé sur les services backend, s'assurant qu'ils sont disponibles pour traiter les requêtes et alerter les équipes responsables des problèmes potentiels avant qu'ils ne s'aggravent, afin de minimiser les temps d'arrêt et d'améliorer la fiabilité du système.

Comment fonctionne une vérification de santé de passerelle API ?

En général, activer les vérifications de santé pour les API est un processus simple. Chaque service nécessite uniquement un point de terminaison API de vérification de santé (/health). À partir de là, vous inspectez les métriques les plus pertinentes pour ce service, telles que l'utilisation de la mémoire, la connectivité à la base de données, la durée de réponse, et plus encore. Vous pouvez utiliser des plateformes d'observabilité comme Prometheus et Grafana pour afficher les résultats et un système d'alerte pour signaler immédiatement tout problème.

L'un des avantages d'APISIX est qu'il facilite encore plus le processus de configuration des outils d'observabilité pour plusieurs services. APISIX envoie périodiquement des requêtes aux services backend qu'il gère (également appelés nœuds en amont). Si un statut sain est renvoyé (généralement un code d'état HTTP 200 OK), le service est considéré comme sain. La passerelle peut également évaluer le temps de réponse, considérant une réponse lente comme une indication de problèmes potentiels. Si le service ne répond pas dans un délai spécifié ou s'il renvoie un statut d'erreur, il est marqué comme malsain. Il cessera de router le trafic vers ce service pour éviter des erreurs d'application ou des ralentissements et redirigera le trafic vers un nœud sain à la place. Apprenez comment activer la vérification de santé ici.

Collecte des données de vérification de santé avec le plugin Prometheus d'APISIX

APISIX s'intègre à Prometheus via un plugin appelé prometheus, offrant un moyen efficace de récupérer les métriques API, y compris celles liées à l'état de santé des nœuds en amont (plusieurs instances d'un service backend API). Voici comment cela fonctionne :

  1. Lorsque le plugin Prometheus d'APISIX est activé (voir comment l'activer ici), il expose une URL de métriques, généralement /apisix/prometheus/metrics. Vous pouvez également personnaliser l'URI d'exportation, ajouter des étiquettes supplémentaires, la fréquence de ces collectes, et d'autres paramètres en les configurant dans le fichier conf/config.yaml.
plugin_attr:
  prometheus:
    export_uri: /metrics
  1. Prometheus collecte cette URL à des intervalles spécifiques, recueillant des données de séries temporelles associées à divers paramètres de performance tels que le nombre de requêtes, la latence des requêtes, la latence en amont et les codes d'état.
  2. Avec la fonctionnalité de métriques personnalisées de Prometheus que nous avons publiée dans la version APISIX 3.3.0, vous pouvez maintenant exposer des données de métriques plus granulaires pour vos API. Ce mécanisme permet à APISIX de vérifier périodiquement si les nœuds en amont sont sains ou non et d'ajuster le routage en conséquence. Cela peut aider à prévenir les échecs et à améliorer la fiabilité du système, ce qui est crucial pour toute infrastructure basée sur des API. Les résultats de ces vérifications de santé sont intégrés dans les métriques que le plugin Prometheus expose, fournissant une vue complète et en temps réel des performances de vos API. Par exemple, si vous envoyez une simple requête au point de terminaison /metrics de la passerelle APISIX, vous pouvez observer les données de surveillance collectées et le statut des résultats de la vérification de santé des nœuds en amont.
curl <http://127.0.0.1:9091/metrics>

...
# HELP apisix_upstream_status État des nœuds en amont à partir de la vérification de santé
# TYPE apisix_upstream_status gauge
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.5",port="443"} 0
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.5",port="80"} 1
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.7",port="443"} 0
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.7",port="80"} 1

Une valeur de 1 représente un nœud sain et 0 signifie que le nœud en amont est malsain.

  1. Vous pouvez également voir la sortie des statuts de vérification de santé des nœuds en amont sur le tableau de bord Prometheus :

Plugin Prometheus d'APISIX sur le tableau de bord

  1. Le plugin Prometheus d'APISIX est configuré pour se connecter automatiquement à Grafana afin de visualiser ces métriques.

Tout aussi important, il est également possible d'activer Prometheus pour collecter des métriques pour TCP/UDP. Parce que l'observabilité au niveau de la couche de transport fournit des informations sur la manière dont les données sont transmises entre les services dans votre infrastructure, et peut être cruciale pour diagnostiquer les problèmes et optimiser les performances.

Personnalisation du plugin Prometheus

Dans le contexte d'APISIX, le plugin Prometheus expose plusieurs métriques par défaut. Ces métriques sont configurables, et le plugin peut être étendu pour ajouter des métriques supplémentaires en fonction des besoins spécifiques. L'équipe API7.ai est toujours disponible pour répondre à vos questions sur la vérification et la surveillance de la santé des API, et nos ingénieurs soutiennent activement les nouveaux utilisateurs d'APISIX pour les intégrer et les aider à modifier les configurations par défaut d'APISIX selon leurs besoins.

Cas d'utilisation réel : Une chaîne de restauration rapide améliore la surveillance de la santé des serveurs avec l'intégration d'APISIX et Prometheus

Supposons qu'une chaîne mondiale de restauration rapide avec des milliers de succursales dans le monde entier (désormais appelée "Société X") souhaitait atteindre une configuration de serveur actif-actif. Leur objectif était de s'assurer que tous les serveurs ou centres de données peuvent partager la charge de travail en temps réel sans causer de perturbations de service.

L'équipe technologique de l'entreprise avait automatisé le processus de basculement entre les serveurs ou les centres de données. Cependant, il y avait des occasions où le trafic commercial variait entre les serveurs actifs, et la charge était répartie de manière inégale. Certains serveurs étaient surchargés, et d'autres recevaient moins de trafic, ce qui entraînait des inefficacités opérationnelles. Pendant les heures de pointe, cela conduisait à des plantages de serveurs et à des perturbations de service, affectant les opérations numériques de l'entreprise.

APISIX a permis à l'entreprise de surveiller en permanence la santé de ses serveurs/centres de données en amont et de basculer automatiquement le trafic en fonction de l'état de santé des serveurs. Si un serveur est considéré comme malsain, le système peut automatiquement basculer vers un autre serveur sain pour maintenir un service ininterrompu. Dans des scénarios spécifiques où le trafic était anormalement faible ou trop important pour qu'un serveur puisse le gérer, le mécanisme d'alerte de Prometheus déclenchait des alarmes. Cette intégration a permis à l'équipe des opérations de la Société X de surveiller proactivement les statuts de santé des serveurs, les charges de trafic et d'autres métriques critiques.

Conclusion

En résumé, l'intégration d'APISIX et de Prometheus pour obtenir des métriques de vérification de santé peut considérablement améliorer votre écosystème de métriques, vous donnant une compréhension plus approfondie de l'état de santé de vos API. Cela peut finalement conduire à de meilleurs résultats commerciaux, tels qu'une efficacité opérationnelle améliorée, une satisfaction client accrue et des revenus plus élevés. Donc, si vous cherchez à améliorer votre écosystème de métriques, envisagez d'exploiter la puissance d'APISIX et de Prometheus.

Ressources connexes

Contenu recommandé

Tags: