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
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!
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.
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.
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.
Lorsque j'ai cliqué sur l'objet sur le côté droit de la carte de service affichée, ce qui suit était affiché.
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.
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.
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.