Halten Sie APIs mit APISIX und Prometheus gesund
July 20, 2023
API-Gesundheitschecks sind Teil eines proaktiven Ansatzes zur Überwachung der allgemeinen Gesundheit Ihrer APIs. Sie stellen sicher, dass Sie über den allgemeinen Zustand Ihrer APIs informiert bleiben und Probleme in frühen Stadien identifizieren können. In diesem Artikel werden wir untersuchen, wie APISIX und Prometheus zusammenarbeiten, um Gesundheitscheck-Datenmetriken zu sammeln und zu analysieren, was die Überwachung, Diagnose und Behebung von API-bezogenen Problemen erleichtert.
Warum ist das für Unternehmen wichtig?
Die Tatsache, dass die Einrichtung von Service Level Indicators (SLIs) und Service Level Objectives (SLOs) zu einem entscheidenden Bestandteil der Best Practices für Site Reliability Engineering (SRE) geworden ist. Sie helfen dem Team, klare Ziele dafür zu setzen, wie gut ein Dienst (wie eine Website oder eine App) funktionieren sollte. Diese Ziele können für interne Dienste (wie eine API, die von den eigenen Apps des Unternehmens verwendet wird) oder für öffentliche Produkte (die von Kunden genutzt werden) gelten. Sie bieten Teams einen quantifizierbaren Ansatz zur Verwaltung der Leistung eines Systems. Beispielsweise umfassen gängige SLIs Fehlerrate, Latenz, Durchsatz und Verfügbarkeit, oder ein SLO könnte lauten: "99,9 % der API-Anfragen sollten in weniger als 300 ms abgeschlossen werden."
Der APISIX API-Gateway steht an der Spitze Ihrer API-Infrastruktur und kann entscheidend für die Messung von SLIs und SLOs sein. Sie müssen nicht herausfinden, was zu messen ist und wie es zu messen ist, da dies problematisch werden kann, insbesondere in den heutigen komplexen und verteilten Architekturen. APISIX verfolgt automatisch alle notwendigen Metriken wie Latenz, fehlgeschlagene Anfragen oder Durchsatz für die Upstream-Dienste, die von Ihren APIs genutzt werden. APISIX kann Gesundheitschecks für die Backend-Dienste durchführen, sicherstellen, dass sie verfügbar sind, um Anfragen zu verarbeiten, und verantwortliche Teams auf potenzielle Probleme aufmerksam machen, bevor sie eskalieren, um Ausfallzeiten zu minimieren und die Systemzuverlässigkeit zu verbessern.
Wie funktioniert ein API-Gateway-Gesundheitscheck?
Im Allgemeinen ist die Aktivierung von Gesundheitschecks für APIs ein unkomplizierter Prozess. Jeder Dienst benötigt nur einen festgelegten Gesundheitscheck-API-Endpunkt (/health
). Von dort aus überprüfen Sie die relevantesten Metriken für diesen Dienst, wie Speichernutzung, Datenbankverbindung, Antwortdauer und mehr. Sie können Observability-Plattformen wie Prometheus und Grafana verwenden, um die Ergebnisse anzuzeigen, und ein Alarmsystem, um Probleme sofort zu kennzeichnen.
Einer der Vorteile von APISIX ist, dass es den Prozess der Konfiguration von Observability-Tools für mehrere Dienste noch einfacher macht. APISIX sendet regelmäßig Anfragen an die Backend-Dienste, die es verwaltet (auch bekannt als Upstream-Knoten). Wenn ein gesunder Status zurückgegeben wird (typischerweise ein 200 OK HTTP-Statuscode), gilt der Dienst als gesund. Das Gateway könnte auch die Antwortzeit bewerten und eine langsame Antwort als Hinweis auf potenzielle Probleme behandeln. Wenn der Dienst nicht innerhalb eines bestimmten Zeitrahmens antwortet oder einen Fehlerstatus zurückgibt, wird er als ungesund markiert. Es wird den Datenverkehr zu diesem Dienst stoppen, um Anwendungsfehler oder Verlangsamungen zu verhindern, und den Datenverkehr stattdessen zu einem gesunden Knoten umleiten. Erfahren Sie hier, wie Sie den Gesundheitscheck aktivieren können hier.
Sammeln von Gesundheitscheck-Daten mit dem APISIX Prometheus-Plugin
APISIX integriert sich über ein Plugin namens prometheus
mit Prometheus und bietet eine effiziente Möglichkeit, API-Metriken abzurufen, einschließlich solcher, die sich auf den Gesundheitsstatus von Upstream-Knoten (mehrere Instanzen eines Backend-API-Dienstes) beziehen. So funktioniert es:
- Wenn das APISIX Prometheus-Plugin aktiviert ist (siehe, wie man es aktiviert hier), stellt es eine Metrik-URL bereit, typischerweise
/apisix/prometheus/metrics
. Sie können auch den URI, zusätzliche Labels, die Häufigkeit dieser Scrapes und andere Parameter anpassen, indem Sie sie in derconf/config.yaml
-Datei konfigurieren.
plugin_attr:
prometheus:
export_uri: /metrics
- Prometheus ruft diese URL in bestimmten Intervallen ab und sammelt Zeitreihendaten, die mit verschiedenen Leistungsparametern wie Anfrageanzahl, Anfragelatenz, Upstream-Latenz und Statuscodes verbunden sind.
- Mit der benutzerdefinierten Metrikfunktion von Prometheus, die wir in der APISIX 3.3.0-Version veröffentlicht haben, können Sie jetzt granularere Metrikdaten für Ihre APIs bereitstellen. Dieser Mechanismus ermöglicht es APISIX, regelmäßig zu überprüfen, ob Upstream-Knoten gesund sind oder nicht, und das Routing entsprechend anzupassen. Es kann helfen, Ausfälle zu verhindern und die Zuverlässigkeit des Systems zu verbessern, was für jede API-basierte Infrastruktur entscheidend ist. Die Ergebnisse dieser Gesundheitschecks werden in die Metriken integriert, die das Prometheus-Plugin bereitstellt, und bieten eine umfassende und Echtzeit-Ansicht der Leistung Ihrer APIs. Wenn Sie beispielsweise eine einfache Anfrage an den
/metrics
-Endpunkt des APISIX-Gateways senden, können Sie die gesammelten Überwachungsdaten und den Gesundheitscheck-Status der Upstream-Knoten beobachten.
curl <http://127.0.0.1:9091/metrics>
...
# HELP apisix_upstream_status Upstream status from health check
# 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
Ein Wert von 1 bedeutet gesund und 0 bedeutet, dass der Upstream-Knoten ungesund ist.
- Sie können die Ausgabe der Gesundheitscheck-Status der Upstream-Knoten auch auf dem Prometheus-Dashboard sehen:
- Das APISIX Prometheus-Plugin ist so konfiguriert, dass es automatisch eine Verbindung zu Grafana herstellt, um diese Metriken zu visualisieren.
Ebenso wichtig ist, dass es möglich ist, Prometheus zu aktivieren, um Metriken für TCP/UDP zu sammeln. Da Observability auf der Transportebene Einblicke bietet, wie Daten zwischen Diensten in Ihrer Infrastruktur übertragen werden, und entscheidend für die Diagnose von Problemen und die Optimierung der Leistung sein kann.
Anpassungen am Prometheus-Plugin vornehmen
Im Kontext von APISIX stellt das Prometheus-Plugin standardmäßig mehrere Metriken bereit. Diese Metriken sind konfigurierbar, und das Plugin kann erweitert werden, um zusätzliche Metriken basierend auf spezifischen Anforderungen hinzuzufügen. Das API7.ai-Team steht immer bereit, um Fragen zu API-Gesundheitschecks und -Überwachung zu beantworten, und unsere Ingenieure unterstützen aktiv neue APISIX-Benutzer beim Onboarding und helfen ihnen, die Standardkonfigurationen von APISIX nach ihren Bedürfnissen zu modifizieren.
Praxisbeispiel: Fast-Food-Riese verbessert die Server-Gesundheitsüberwachung mit APISIX und Prometheus-Integration
Angenommen, es gibt eine führende globale Fast-Food-Kette mit Tausenden von Filialen weltweit (im Folgenden als "Unternehmen X" bezeichnet), die daran interessiert war, eine Active-Active-Server-Konfiguration zu erreichen. Ihr Ziel war es, sicherzustellen, dass alle Server oder Rechenzentren die Arbeitslast in Echtzeit teilen können, ohne Dienstunterbrechungen zu verursachen.
Das Technologie-Team des Unternehmens hatte den Wechselprozess zwischen Servern oder Rechenzentren automatisiert. Es gab jedoch Fälle, in denen der Geschäftsverkehr zwischen den aktiven Servern variierte und die Last ungleichmäßig verteilt war. Einige Server waren überlastet, und andere erhielten weniger Verkehr, was zu betrieblichen Ineffizienzen führte. Während der Stoßzeiten führte dies zu Serverabstürzen und Dienstunterbrechungen, die die digitalen Operationen des Unternehmens beeinträchtigten.
APISIX ermöglichte es dem Unternehmen, kontinuierlich den Gesundheitszustand seiner Upstream-Server/Rechenzentren zu überwachen und den Datenverkehr basierend auf dem Server-Gesundheitsstatus automatisch umzuleiten. Wenn ein Server als ungesund eingestuft wird, kann das System automatisch zu einem anderen gesunden Server wechseln, um einen unterbrechungsfreien Dienst aufrechtzuerhalten. In bestimmten Szenarien, in denen der Verkehr ungewöhnlich gering oder zu groß für einen Server war, löste der Alarmmechanismus von Prometheus Warnungen aus. Diese Integration ermöglichte es dem Betriebsteam von Unternehmen X, den Gesundheitsstatus der Server, Verkehrslasten und andere kritische Metriken proaktiv zu überwachen.
Fazit
Zusammenfassend kann die Integration von APISIX und Prometheus zur Gewinnung von Gesundheitscheck-Datenmetriken Ihr Metrik-Ökosystem erheblich verbessern und Ihnen ein tieferes Verständnis des Gesundheitsstatus Ihrer APIs vermitteln. Dies kann letztendlich zu besseren Geschäftsergebnissen führen, wie verbesserte betriebliche Effizienz, höhere Kundenzufriedenheit und gesteigerte Einnahmen. Wenn Sie also Ihr Metrik-Ökosystem auf die nächste Stufe heben möchten, sollten Sie die Stärke von APISIX und Prometheus nutzen.
Verwandte Ressourcen
- Überwachung von API-Metriken: Wie Sie die optimale Leistung Ihrer API sicherstellen
- Überwachung von Microservices mit Prometheus und Grafana