Meilleures pratiques pour intégrer Prometheus avec APISIX
January 13, 2024
Dans l'architecture cloud-native d'aujourd'hui, surveiller les métriques de votre passerelle API est crucial. Apache APISIX, en tant que passerelle API haute performance, offre non seulement des fonctionnalités étendues, mais prend également en charge une intégration transparente avec Prometheus pour collecter et surveiller les métriques clés du trafic API. Cet article explore comment configurer et utiliser Prometheus dans Apache APISIX, en mettant en avant les considérations essentielles et en recommandant des configurations de métriques courantes.
À propos de Prometheus
Prometheus est un système de surveillance open source qui collecte et stocke des données de séries temporelles, permettant une surveillance et une analyse en temps réel des performances du système. Lorsqu'il est intégré à Apache APISIX, Prometheus devient un outil essentiel pour capturer des métriques détaillées liées au trafic API.
Activation du plugin Prometheus dans Apache APISIX
-
Pour activer les métriques Prometheus dans Apache APISIX, commencez par configurer le plugin Prometheus dans le fichier
config.yaml
:plugins: - prometheus
-
Configurez le plugin Prometheus sur le service ou l'API souhaité à collecter. Vous pouvez également le configurer globalement. Voici un exemple de configuration du plugin à l'aide d'une commande cURL :
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri": "/hello", "plugins": { "prometheus":{} }, "upstream": { "type": "roundrobin", "nodes": { "127.0.0.1:80": 1 } } }'
Pour des configurations plus complexes, consultez : Documentation du plugin Prometheus
Configuration de la stratégie de collecte dans Prometheus
Dans Prometheus, configurez le fichier prometheus.yml
pour ajouter APISIX comme nouvelle cible de surveillance :
scrape_configs:
- job_name: 'apisix'
static_configs:
- targets: ['<APISIX_IP>:<APISIX_PORT>']
Métriques courantes dans Apache APISIX
Les métriques spécifiques à une entreprise peuvent varier, mais voici quelques métriques clés dans Apache APISIX, fournissant des informations riches pour la surveillance et l'analyse du système :
-
Métriques de requêtes et réponses HTTP :
apisix_http_request_total
: Enregistre le total des requêtes HTTP via APISIX, offrant une vue d'ensemble du trafic système.apisix_http_request_duration_seconds
: Mesure le temps de traitement des requêtes HTTP, aidant à identifier les goulots d'étranglement de performance.apisix_http_request_size_bytes
: Capture la taille des requêtes HTTP pour l'analyse des données.apisix_http_response_size_bytes
: Surveille la taille des réponses HTTP pour suivre le volume des données de réponse.
-
Métriques des services en amont :
apisix_upstream_latency
: Reflète la latence de réponse des services en amont.apisix_upstream_health
: Indique l'état de santé des services en amont.
-
Métriques de performance système :
apisix_node_cpu_usage
: Rapporte l'utilisation du CPU du nœud APISIX.apisix_node_memory_usage
: Fournit des informations sur l'utilisation de la mémoire.
-
Métriques de trafic :
apisix_bandwidth
: Détaille l'utilisation de la bande passante pour le trafic en amont et en aval.
-
Métriques d'erreurs et d'exceptions :
apisix_http_status_code
: Distribue les codes de statut HTTP des réponses, en se concentrant particulièrement sur les erreurs 4xx et 5xx.
Visualisation et alertes
Utilisez l'intégration de Grafana et Prometheus pour créer des tableaux de bord permettant de visualiser ces métriques. De plus, les règles d'alerte de Prometheus peuvent être configurées pour définir des alertes basées sur des conditions spécifiques.
Exemple de tableau de bord Grafana : Créez divers graphiques dans Grafana, tels que des séries temporelles, des histogrammes ou des camemberts, pour afficher les métriques de performance d'APISIX. Par exemple, un tableau de bord affichant le nombre de requêtes HTTP et les temps de réponse moyens offre des informations en temps réel sur le trafic et les performances.
Exemple d'alerte Prometheus :
Les règles d'alerte dans Prometheus peuvent être configurées pour diverses conditions. Par exemple, si la durée moyenne de apisix_http_request_duration_seconds
dépasse un seuil prédéfini, Prometheus peut être configuré pour envoyer des alertes critiques.
Considérations d'optimisation
Bien que disposer de nombreuses métriques Prometheus améliore les dimensions de surveillance et d'alerte, il est crucial de reconnaître que ces métriques consomment des ressources de calcul. Plus de métriques impliquent des demandes de ressources plus élevées, ce qui peut potentiellement impacter les systèmes métier.
Depuis la version 3.0, Apache APISIX a considérablement optimisé le plugin Prometheus, introduisant un processus dédié pour les statistiques et la récupération des métriques. Cette amélioration atténue l'impact sur le trafic métier causé par les statistiques étendues des métriques Prometheus, contribution de API7.ai.
Conclusion
En intégrant Prometheus à Apache APISIX, les entreprises obtiennent des informations approfondies sur leur infrastructure API, assurant des opérations efficaces et sécurisées. La surveillance du trafic API devient progressivement un outil essentiel pour prévenir les problèmes de manière proactive, optimiser les performances et garantir la sécurité.