[JAVA] Ich habe versucht, den Zugriff von Lambda → Athena mit AWS X-Ray zu visualisieren

Ich habe so etwas schon einmal gemacht, aber ich habe experimentiert, um zu sehen, was ich verstehen kann, indem ich es mit AWS X-Ray visualisiert habe.

Ich habe versucht, Amazon Athena von AWS Lambda aus zu betreiben

Ausführen des AWS X-Ray-Daemons

Das AWS X-Ray SDK scheint Trace-Daten nicht direkt an AWS X-Ray zu senden. Erstellen Sie daher eine EC2-Instanz zum Senden. Dies ist einfach, da Sie nur Folgendes als Benutzerdaten registrieren und eine Instanz erstellen müssen.

#!/bin/bash
curl https://s3.dualstack.us-east-1.amazonaws.com/aws-xray-assets.us-east-1/xray-daemon/aws-xray-daemon-2.x.rpm -o /home/ec2-user/xray.rpm
yum install -y /home/ec2-user/xray.rpm

Das Röntgeninstallationsprotokoll wurde im Systemprotokoll ausgegeben, daher sollte es in Ordnung sein.

Examining /home/ec2-user/xray.rpm: xray-2.0.0-1.x86_64
Marking /home/ec2-user/xray.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package xray.x86_64 0:2.0.0-1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package         Arch              Version               Repository        Size
================================================================================
Installing:
 xray            x86_64            2.0.0-1               /xray            6.6 M

Transaction Summary
================================================================================
Install  1 Package

Total size: 6.6 M
Installed size: 6.6 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : xray-2.0.0-1.x86_64                                          1/1 
xray start/running, process 2576
  Verifying  : xray-2.0.0-1.x86_64                                          1/1 

Installed:
  xray.x86_64 0:2.0.0-1                                                         

Complete!

Vorbereitung auf der Lambda App Seite

Ich führe diesmal eine Java-Anwendung aus, aber wenn Sie die Lambda-Anwendung mit Röntgen überwachen möchten, müssen Sie anscheinend nur das folgende Kontrollkästchen auf der Registerkarte "Einstellungen" der Lambda-Anwendung aktivieren.

スクリーンショット 2017-04-23 22.21.44.png

Referenz: http://docs.aws.amazon.com/ja_jp/xray/latest/devguide/xray-services.html

Sie müssen auch die Berechtigungen für den Betrieb von Röntgen in IAM festlegen. Da dies eine Testoperation war, habe ich "AWS Xray Full Access" hinzugefügt, aber ich möchte diesen Bereich sorgfältig entsprechend der tatsächlichen Operation auswählen.

Starten Sie die App und versuchen Sie zu visualisieren

Wenn Sie dies bisher tun können, können Sie die Lambda-App normal ausführen und sehen, wie sie in X-Ray aussieht. Dieses Mal wird der folgende JSON als Eingabe für die Lambda-Anwendung angegeben. Dies ist der Eingabewert, als ich im vorherigen Artikel versucht habe, Daten aus Athenas Tabelle als Beispiel abzurufen.

{
  "region": "us-east-1",
  "s3Path": "s3://ishida-athena-staging-dir/",
  "sql": "SELECT elbname, requestip,  requestport, backendip, backendport, requestprocessingtime, backendprocessingtime, timestamp FROM sampledb.elb_logs order by timestamp desc limit 10",
  "columnListStr": "elbname, requestip,  requestport, backendip, backendport, requestprocessingtime, backendprocessingtime,  timestamp"
}

Nach einer Wartezeit von ca. 1 Minute nach der Ausführung wurde die folgende Anzeige auf Röntgen bestätigt. Es scheint, dass die Visualisierung erfolgreich war.

スクリーンショット 2017-04-23 22.56.40.png

Überprüfen Sie den Inhalt von X-Ray

Als ich auf das Objekt auf der rechten Seite der angezeigten Service Map geklickt habe, wurde Folgendes angezeigt. スクリーンショット 2017-04-23 22.56.51.png

Sie können in einer Liste sehen, wie lange jeder Prozess dauert und was als Antwort zurückgegeben wird. Durch Klicken auf die angezeigte ID wurden die Details dieser Ablaufverfolgung bestätigt.

スクリーンショット 2017-04-23 22.56.58.png

Soweit Sie sehen, dauert die Initialisierung der Lambda-App ca. 230 ms und der eigentliche Athena-Verbindungsteil ca. 3 Sekunden. Dieser Vorgang dauert insgesamt 4,6 Sekunden, daher sollte klar sein, dass er ungefähr 1,5 Sekunden dauert, außer dass er tatsächlich auf Athena zugreift. Ich brauche mehr Studium in diesem Bereich (^^;

Übrigens, wenn es einen Fehler gibt, können Sie anscheinend auch den Inhalt der Ausnahme überprüfen.

Zusammenfassung

Wie lange jeder Prozess dauert, und es ist leistungsstark, in der Lage zu sein, zu visualisieren, während die aufrufende Beziehung so einfach eingerichtet wird. In Anbetracht der Tatsache, dass es üblich sein wird, die Verarbeitung mit Microservices usw. zu verteilen, kann gesagt werden, dass es sich um eine unverzichtbare Technologie handelt. Im Frühjahr scheinen Zipkin und Sleuth auf AWS realisiert zu sein.

Recommended Posts

Ich habe versucht, den Zugriff von Lambda → Athena mit AWS X-Ray zu visualisieren
Ich habe versucht, das Problem der "mehrstufigen Auswahl" mit Ruby zu lösen
Ich habe versucht, mit Docker eine Plant UML Server-Umgebung zu erstellen
Ich habe versucht, den Betrieb des gRPC-Servers mit grpcurl zu überprüfen
Ich habe versucht, die Geschwindigkeit von Graal VM mit JMH zu messen und zu vergleichen
Ich habe versucht, die Infrastrukturtechnologie der Ingenieure heutzutage mit dem Kochen zu vergleichen.
05. Ich habe versucht, die Quelle von Spring Boot zu löschen
Ich habe versucht, die Kapazität von Spring Boot zu reduzieren
Ich habe versucht, den Betrieb der http-Anfrage (Put) mit dem Talented API Tester zu überprüfen
Ich habe versucht, den Mechanismus von Emscripten mit einem deutschen Löser zu untersuchen
Erstes AWS Lambda (Ich habe versucht zu sehen, in welcher Umgebung es funktioniert)
Ich habe versucht, die Verarbeitungsgeschwindigkeit mit spiritueller Technik zu erhöhen
[JDBC] Ich habe versucht, von Java aus auf die SQLite3-Datenbank zuzugreifen.
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
Ich habe versucht, eine Umgebung mit WSL2 + Docker + VSCode zu erstellen
Ich habe versucht, mit Java zu interagieren
Ich habe versucht, die Methode zu erklären
Ich habe den Eingabe- / Ausgabetyp von Java Lambda ~ Map Edition ~ ausprobiert
Ich habe versucht, die Methoden von Java String und StringBuilder zusammenzufassen
Ich habe versucht, das Problem des Google Tech Dev Guide zu lösen
Ich habe versucht, die Ergebnisse vor und nach der Date-Klasse mit einer geraden Zahl auszudrücken
Als ich versuchte, das AWS SDK mit Ruby + Lambda zu verwenden, war "sam local" durcheinander.
Ich habe versucht, die verwendeten Methoden zusammenzufassen
Ich habe versucht, Java-Lambda-Ausdrücke zusammenzufassen
Ich habe versucht, mit Web Assembly zu beginnen
Ich habe versucht, das Iterator-Muster zu implementieren
Ich habe versucht, die Stream-API zusammenzufassen
Ich habe versucht, die wichtigsten Punkte des gRPC-Designs und der Entwicklung zusammenzufassen
So greifen Sie mit der TCP-Funktion von Spring Integration direkt auf Socket zu
Ich habe versucht, das Problem der Tribonacci-Sequenz in Ruby mit Wiederholung zu lösen.
Ich habe versucht, den CPU-Kern mit Ruby voll auszunutzen
Immerhin wollte ich den Inhalt von MySQL mit Docker in der Vorschau anzeigen ...
Ich habe versucht, ein Portfolio mit AWS, Docker, CircleCI, Laravel [mit Referenzlink] zu erstellen.
Ich habe versucht, AdoptOpenJDK 11 (11.0.2) mit dem Docker-Image zu überprüfen
Ich habe versucht, die Federbeinkonfiguration mit Coggle zu verwalten
Ich habe versucht, mit HCE-F von Android eine Funktion zu implementieren, die Felica Lite entspricht
[Rails] Ich habe versucht, die Version von Rails von 5.0 auf 5.2 zu erhöhen
Ich habe versucht, Anmeldeinformationen mit JMX zu verwalten
Ich habe versucht, die Sitzung in Rails zu organisieren
Was ich versucht habe, als ich alle Felder einer Bohne bekommen wollte
Verwendung des Java-Frameworks mit AWS Lambda! ??
C # (Grund der Kapselung)
Ich möchte den Inhalt der Absicht var_dump
Ich habe versucht, Tomcat so einzustellen, dass das Servlet ausgeführt wird.
Ich habe versucht, eine Webanwendung voller Fehler mit Spring Boot zu klonen
Ich habe versucht, den Profiler von IntelliJ IDEA zu verwenden
Ich habe versucht, den Block mit Java zu brechen (1)
Ich habe die Anzahl der Taxis mit Ruby überprüft
Sazae's Janken Ich habe versucht, den theoretischen Wert und den gemessenen Wert der Wahrscheinlichkeit derselben Hand 5 Mal hintereinander mit Ruby zu überprüfen
Ich habe versucht, ein Tool zum Vergleichen von Amazon-Produktpreisen auf der ganzen Welt mit Java, der Amazon Product Advertising API und der Currency API (29.01.2017) zu erstellen.