Gorodenkoff - stock.adobe.com
AWS X-Ray für das App-Performance-Management entdecken
AWS X-Ray bietet Entwicklern eine detailliertere Sicht auf verteilte und serverlose Anwendungen. Wenn sie jedoch mehrere Clouds oder Dienste nutzen, ist es keine optimale Lösung.
In einer verteilten Anwendung ist es schwierig, nicht nur Abhängigkeiten zwischen den verschiedenen Teilen der Anwendung zu verfolgen und zu visualisieren, sondern diese auch zu debuggen. Mit AWS X-Ray können Entwickler verteilte und serverlose Anwendungen in AWS nachverfolgen und Frontend-Metriken in Backend-Traces einbinden, wodurch sie Fehler erkennen und Leistungsprobleme lokalisieren können.
AWS X-Ray arbeitet mit Anwendungen, die über APIs mit Amazon DynamoDB, Amazon API Gateway, AWS Lambda und verschiedenen externen Webdiensten verbunden sind. Der Dienst hilft Entwicklern bei der Erkennung von Fehlern und Leistungsengpässen. Er ist auch mit AWS Software Development Kits (SDKs) verbunden, um Probleme zu identifizieren, wie zum Beispiel eine geringe DynamoDB-Kapazität für Lese- oder Schreiboperationen.
Im Wesentlichen erstellt der Dienst einen Wrapper um APIs und andere Bibliotheken, die beim Pingen externer Dienste Nutzungs- und Laufzeit-Metriken verfolgen. Er verfolgt auch die Laufzeiten für bestimmte Aufgaben, Funktionen oder Benutzeranforderungen.
AWS X-Ray evaluiert die Dauer von Lambda-Funktionen, die von DynamoDB ausgeführt werden, was sonst sehr schwierig zu verfolgen ist. Mit dem Dienst können Entwickler diese Art von Engpass erkennen und die Kapazität von DynamoDB für betroffene Tabellen erhöhen oder den Funktionscode ändern, damit sie DynamoDB nicht überlasten.
AWS X-Ray fügt einen speziellen HTTP-Header hinzu, um eine einzelne Transaktion über mehrere AWS-Tools und -Dienste hinweg zu verfolgen. Dies ermöglicht es Entwicklern, die Quelle von Problemen und Leistungsengpässen zu identifizieren. Man sollte allerdings sicherstellen, dass der Header richtig funktioniert, um sich mit mehreren Endpunkten zu verbinden.
AWS X-Ray arbeitet mit gängigen Web-Frameworks – wie Express.js oder Java 2 Platform, Enterprise Edition Anwendungen – die eine serverbasierte Komponente zur Aggregation und Bereitstellung von Metriken ausführen. Zusätzlich unterstützt der Dienst Lambda-basierte Funktionen, aber diese Funktionalität befindet sich noch im Beta-Stadium.
Die AWS-Verwaltungskonsole zeigt Ablaufverfolgungen (Traces) in einem visuellen Format an. Ein Trace oder eine Ablaufverfolgung ist die einzelne Ende-zu-Ende-Ausführung einer Anwendung. Ein Trace entspricht in der Regel einer einzelnen Benutzeraktion, wie zum Beispiel der Anforderung eines Seitenladevorgangs oder dem Hochladen einer Bilddatei. Traces umfassen mehrere Lambda-Funktionen, Elastic-Compute-Cloud-Instanzen oder andere Amazon-Dienste.
Funktionen debuggen
Wenn Sie Ihrem Code X-Ray-Ablaufverfolgungsfunktionen hinzufügen, geben diese einen Fehler weiter, wenn die X-Ray-Ablaufverfolgungsfunktion nicht vollständig eingerichtet ist. Dies kann zum Beispiel passieren, wenn der X-Ray-Daemon nicht lokal läuft oder wenn der X-Ray-Kontext innerhalb der Anwendung nicht vorkonfiguriert wurde. Das heißt, wenn ein Entwickler Code lokal testet, kann der Code einen Fehler ähnlich dem folgenden zurückgeben:
Error: Failed to get the current sub/segment from the context.
Setzen Sie eine Umgebungsvariable, um dieses Problem zu lösen. Und weisen Sie X-Ray an, jede Umgebung zu ignorieren, wenn es keine Verbindung zum Logging-Daemon herstellen kann:
AWS_XRAY_CONTEXT_MISSING=LOG_ERROR
Dies veranlasst das System, eine Fehlermeldung zu protokollieren und dann fortzufahren. Ohne diese Umgebungsvariable wird jede Anwendung, die für die Verwendung von X-Ray konfiguriert ist, nur dann ausgeführt, wenn der Dienst vorhanden ist.
Das bedeutet, dass die Anwendung nicht ausgeführt werden kann, wenn Entwickler Code lokal testen – ohne dass X-Ray aktiviert ist. Entwickler können X-Ray nur in Staging- oder Produktionsumgebungen konfigurieren, um dieses Problem zu vermeiden. Bei Node.js bestimmt die Umgebungsvariable NODE_ENV dies.
In der Dokumentation von AWS wird nicht beschrieben, wie die X-Ray-Ablaufverfolgung aktiviert wird. Und standardmäßig deaktiviert AWS die X-Ray-Ablaufverfolgung für alle Lambda-Funktionen, wodurch dieser Fehler für jede Lambda-Funktion mit installiertem X-Ray-Code erzeugt wird:
Segment marked as not sampled. Ignoring.
Aktivieren Sie die Option Aktive Ablaufverfolgung im Abschnitt Erweiterte Einstellungen der Lambda-Konsole, um Funktionen zu verfolgen. Wenn für die Lambda-Funktion der X-Ray-Profiling-Code installiert ist, sehen Entwickler die Ergebnisse innerhalb weniger Minuten auf der X-Ray-Konsole.
Optionen zur Verwaltung der Anwendungsleistung
Andere Anbieter, wie zum Beispiel New Relic oder App Metrics, bieten ähnliche Services an. Der Preis von AWS X-Ray ist jedoch niedriger, und die meisten Entwickler werden wahrscheinlich sowieso nie dafür bezahlen, da das kostenlose Kontingent von X-Ray bis zu 50.000 Ablaufverfolgungen/Traces pro Monat umfasst. AWS X-Ray hat jedoch auch Schwächen – hauptsächlich, weil es sich noch in einem frühen Stadium befindet.
AWS X-Ray ist so konzipiert, dass es mit den Diensten von Amazon zusammenarbeitet, so dass es nicht automatisch andere Cloud-Provider-Dienste von Microsoft Azure oder Google nachverfolgen kann. Aber Entwickler können als Workaround direkt auf die X-Ray-API zugreifen.
X-Ray ist nicht in andere Dienste eingebunden, wie zum Beispiel Benutzeranalysen oder Test-Frameworks. Es ist auch nicht klar, wie Verbindungen zu Entwicklungs-/Testumgebungen eingerichtet werden, und es ist auch nicht einfach, schnell Probleme zu identifizieren, die keine Ausnahmen im Code auslösen oder über mehrere Traces laufen.
Da die Benutzeroberfläche für Entwickler konzipiert ist, kann sie für andere IT-Experten unübersichtlich sein. Und obwohl es möglich ist, eine echte Benutzerüberwachung einzubinden, kommt diese Funktion im Gegensatz zu anderen ähnlichen Diensten nicht von der Stange. AWS X-Ray erfordert außerdem einige Codemodifikationen, die nur die Funktionalität überwachen können, ohne den serverlosen Code zu modifizieren. Diese Codeänderungen behindern die plattformübergreifende Kompatibilität weiter.
AWS X-Ray bietet jedoch eine Reihe von Vorteilen. Da es sich um ein Amazon-Produkt handelt, wird es vom AWS-Support abgedeckt. Und er lässt sich mit anderen AWS-Tools und -Diensten integrieren, wodurch es einfach ist, Leistungsprobleme zu diagnostizieren, wie zum Beispiel ein Problem bei der Bereitstellung einer DynamoDB.
Der Dienst umhüllt das AWS SDK, so dass er Trace-Aufrufe zu anderen Diensten zurückverfolgen kann. Entwickler können bei Bedarf aber auch Funktionen manuell nachverfolgen. Und X-Ray bietet native Unterstützung für Lambda.
Es ist schwieriger, Tools von Drittanbietern zu verwenden – zumindest im Moment. Und Entwickler, die mit Azure oder Google Cloud arbeiten, können X-Ray nicht einfach in Serverless-Funktionen verwenden – nur bei serverbasierten Anwendungen.