[JAVA] J'ai essayé de visualiser l'accès de Lambda → Athena avec AWS X-Ray

J'ai fait quelque chose comme ça avant, mais j'ai expérimenté pour voir ce que je pouvais comprendre en le visualisant avec AWS X-Ray.

J'ai essayé d'utiliser Amazon Athena à partir d'AWS Lambda

Exécution du démon AWS X-Ray

Le kit SDK AWS X-Ray ne semble pas envoyer de données Trace directement à AWS X-Ray, créez donc une instance EC2 pour l'envoi. C'est facile car il vous suffit d'enregistrer les éléments suivants en tant que données utilisateur et de créer une instance.

#!/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

Le journal d'installation xray a été généré dans le journal système, il devrait donc être correct.

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!

Préparation côté application Lambda

J'exécute une application Java cette fois, mais si vous souhaitez surveiller l'application Lambda avec X-Ray, il semble qu'il vous suffit de cocher la case suivante dans l'onglet "Paramètres" de l'application Lambda.

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

Référence: http://docs.aws.amazon.com/ja_jp/xray/latest/devguide/xray-services.html

Vous devez également définir les autorisations pour utiliser X-Ray dans IAM. Comme il s'agissait d'une opération d'essai, j'ai ajouté "AWS Xray Full Access", mais je voudrais sélectionner soigneusement cette zone en fonction de l'opération réelle.

Démarrez l'application et essayez de visualiser

Si vous pouvez le faire jusqu'à présent, vous pouvez exécuter l'application Lambda normalement et voir à quoi elle ressemble dans X-Ray. Cette fois, le JSON suivant est donné en entrée à l'application Lambda. C'est la valeur d'entrée lorsque j'ai essayé d'obtenir des données de la table d'Athena comme exemple dans l'article précédent.

{
  "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"
}

Après avoir attendu environ 1 minute après l'exécution, l'affichage suivant a été confirmé sur X-Ray. Il semble que la visualisation ait réussi.

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

Vérifiez le contenu de X-Ray

Lorsque j'ai cliqué sur l'objet sur le côté droit de la carte de service affichée, ce qui suit était affiché. スクリーンショット 2017-04-23 22.56.51.png

Vous pouvez voir dans une liste la durée de chaque processus et ce qui est renvoyé en tant que réponse. Cliquer sur l'ID affiché a confirmé les détails de cette trace.

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

Pour autant que vous puissiez voir, il faut environ 230 ms pour initialiser l'application Lambda et environ 3 secondes pour la connexion Athena réelle. Ce processus prend 4,6 secondes dans son ensemble, il faut donc comprendre qu'il prend environ 1,5 seconde autre que d'accéder réellement à Athena. J'ai besoin de plus d'études dans ce domaine (^^;

En passant, s'il y a une erreur, il semble que vous puissiez également vérifier le contenu de l'exception.

Résumé

Combien de temps chaque processus prend, et il est puissant de pouvoir visualiser tout en établissant si facilement la relation d'appel. Considérant qu'il deviendra courant de distribuer des traitements avec des microservices, etc., on peut dire que c'est une technologie indispensable. Au printemps, on a l'impression que Zipkin et Sleuth sont réalisés sur AWS.

Recommended Posts

J'ai essayé de visualiser l'accès de Lambda → Athena avec AWS X-Ray
J'ai essayé de résoudre le problème de la "sélection multi-étapes" avec Ruby
J'ai essayé de créer un environnement de serveur UML Plant avec Docker
J'ai essayé de vérifier le fonctionnement du serveur gRPC avec grpcurl
J'ai essayé de mesurer et de comparer la vitesse de Graal VM avec JMH
J'ai essayé de comparer la technologie d'infrastructure des ingénieurs ces jours-ci avec la cuisine.
05. J'ai essayé de supprimer la source de Spring Boot
J'ai essayé de réduire la capacité de Spring Boot
J'ai essayé de vérifier le fonctionnement de la requête http (Put) avec Talented API Tester
J'ai essayé d'étudier le mécanisme d'Emscripten en l'utilisant avec un solveur allemand
Premier AWS Lambda (j'ai essayé de voir dans quel type d'environnement il fonctionne)
J'ai essayé d'augmenter la vitesse de traitement avec l'ingénierie spirituelle
[JDBC] J'ai essayé d'accéder à la base de données SQLite3 depuis Java.
J'ai essayé de résumer les bases de kotlin et java
J'ai essayé de créer un environnement de WSL2 + Docker + VSCode
J'ai essayé d'interagir avec Java
J'ai essayé d'expliquer la méthode
J'ai essayé le type d'entrée / sortie de Java Lambda ~ Map edition ~
J'ai essayé de résumer les méthodes de Java String et StringBuilder
J'ai essayé de résoudre le problème de Google Tech Dev Guide
J'ai essayé d'exprimer les résultats avant et après de la classe Date avec une ligne droite numérique
Quand j'ai essayé d'utiliser le kit AWS SDK avec Ruby + Lambda, `sam local` était en panne.
J'ai essayé de résumer les méthodes utilisées
J'ai essayé de résumer les expressions Java lambda
J'ai essayé de démarrer avec Web Assembly
J'ai essayé d'implémenter le modèle Iterator
J'ai essayé de résumer l'API Stream
J'ai essayé de résumer les points clés de la conception et du développement de gRPC
Comment accéder directement à Socket avec la fonction TCP de Spring Integration
J'ai essayé de résoudre le problème de la séquence Tribonacci en Ruby, avec récurrence.
J'ai essayé d'utiliser pleinement le cœur du processeur avec Ruby
Après tout, je voulais prévisualiser le contenu de mysql avec Docker ...
J'ai essayé de créer un portefeuille avec AWS, Docker, CircleCI, Laravel [avec lien de référence]
J'ai essayé de vérifier AdoptOpenJDK 11 (11.0.2) avec l'image Docker
J'ai essayé de gérer la configuration des jambes de force avec Coggle
J'ai essayé d'implémenter une fonction équivalente à Felica Lite avec HCE-F d'Android
[Rails] J'ai essayé de faire passer la version de Rails de 5.0 à 5.2
J'ai essayé de gérer les informations de connexion avec JMX
J'ai essayé d'organiser la session en Rails
Ce que j'ai essayé quand je voulais obtenir tous les champs d'un haricot
Comment utiliser le framework Java avec AWS Lambda! ??
C # (base de l'encapsulation)
Je veux var_dump le contenu de l'intention
J'ai essayé de configurer tomcat pour exécuter le servlet.
J'ai essayé de cloner une application Web pleine de bugs avec Spring Boot
J'ai essayé d'utiliser le profileur d'IntelliJ IDEA
J'ai essayé de casser le bloc avec java (1)
J'ai vérifié le nombre de taxis avec Ruby
Janken de Sazae J'ai essayé de vérifier la valeur théorique et la valeur mesurée de la probabilité de la même main 5 fois consécutives avec Ruby
J'ai essayé de créer un outil de comparaison des prix des produits Amazon dans le monde entier avec Java, l'API Amazon Product Advertising, l'API Currency (29/01/2017)