En utilisant leAWS X-RayAPI avecAWSCLI - AWS X-Ray

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

En utilisant leAWS X-RayAPI avecAWSCLI

LeAWSLa CLI vous permet d'accéder directement au service X-Ray et d'utiliser les mêmes API que celles utilisées par la console X-Ray pour récupérer le graphe du service et les données de trace brutes. L'exemple d'application inclut des scripts qui montrent comment utiliser ces API avecAWSCLI.

Prérequis

Ce didacticiel utilise l'exemple d'application Scorekeep et inclut des scripts pour générer des données de suivi et une cartographie des services. Suivez les instructions du didacticiel de mise en route pour lancer l'application.

Ce didacticiel utilise leAWS CLIpour montrer l'utilisation de base de l'API X-Ray. LeAWSAGRAFE,disponible pour Windows, Linux et OS-X, fournit un accès en ligne de commande aux API publiques pour tousAWS services.

Note

Vous devez vérifier que votre AWS CLI est configurée dans la même région que celle dans laquelle votre exemple d'application Scorekeep a été créé.

Les scripts inclus pour tester l'exemple d'application utilisent cURL pour envoyer le trafic vers l'API et jq pour analyser la sortie. Vous pouvez télécharger l' exécutable àjq partir de stedolan.github.io et l' exécutable curl à partir de https://curl.haxx.se/download.html. La plupart des installations Linux et OS X incluent cURL.

Génération de données de suivi

L'application web continue de générer du trafic vers l'API à intervalles réguliers de quelques secondes pendant que le jeu est en cours, mais elle génère uniquement un type de demande. Utilisez le script test-api.sh pour exécuter des scénarios de bout en bout et générer plusieurs autres données de suivi pendant que vous testez l'API.

Pour utiliser le script test-api.sh
  1. Ouvrez la console Elastic Beanstalk.

  2. Naviguez vers leconsole de gestionpour votre environnement.

  3. Copiez l'URL de l'environnement à partir de l'en-tête de page.

  4. Ouvrez bin/test-api.sh et remplacez la valeur pour l'API par l'URL de votre environnement.

    #!/bin/bash API=scorekeep.9hbtbm23t2.us-west-2.elasticbeanstalk.com/api
  5. Exécutez le script pour générer du trafic vers l'API.

    ~/debugger-tutorial$ ./bin/test-api.sh Creating users, session, game, configuring game, playing game, ending game, game complete. {"id":"MTBP8BAS","session":"HUF6IT64","name":"tic-tac-toe-test","users":["QFF3HBGM","KL6JR98D"],"rules":"102","startTime":1476314241,"endTime":1476314245,"states":["JQVLEOM2","D67QLPIC","VF9BM9NC","OEAA6GK9","2A705O73","1U2LFTLJ","HUKIDD70","BAN1C8FI","G3UDJTUF","AB70HVEV"],"moves":["BS8F8LQ","4MTTSPKP","463OETES","SVEBCL3N","N7CQ1GHP","O84ONEPD","EG4BPROQ","V4BLIDJ3","9RL3NPMV"]}

Utiliser l'API X-Ray

LeAWSLa CLI fournit des commandes pour toutes les actions d'API proposées par X-Ray, notammentGetServiceGraphetGetTraceSummaries. Consultez le document Référence d'API AWS X-Ray pour plus d'informations sur toutes les actions prises en charge et les types de données utilisés.

Exemple bin/service-graph.sh
EPOCH=$(date +%s) aws xray get-service-graph --start-time $(($EPOCH-600)) --end-time $EPOCH

Le script récupère un graphique de services pour les 10 dernières minutes.

~/eb-java-scorekeep$ ./bin/service-graph.sh | less { "StartTime": 1479068648.0, "Services": [ { "StartTime": 1479068648.0, "ReferenceId": 0, "State": "unknown", "EndTime": 1479068651.0, "Type": "client", "Edges": [ { "StartTime": 1479068648.0, "ReferenceId": 1, "SummaryStatistics": { "ErrorStatistics": { "ThrottleCount": 0, "TotalCount": 0, "OtherCount": 0 }, "FaultStatistics": { "TotalCount": 0, "OtherCount": 0 }, "TotalCount": 2, "OkCount": 2, "TotalResponseTime": 0.054000139236450195 }, "EndTime": 1479068651.0, "Aliases": [] } ] }, { "StartTime": 1479068648.0, "Names": [ "scorekeep.elasticbeanstalk.com" ], "ReferenceId": 1, "State": "active", "EndTime": 1479068651.0, "Root": true, "Name": "scorekeep.elasticbeanstalk.com", ...
Exemple bin/trace-urls.sh
EPOCH=$(date +%s) aws xray get-trace-summaries --start-time $(($EPOCH-120)) --end-time $(($EPOCH-60)) --query 'TraceSummaries[*].Http.HttpURL'

Le script récupère les URL des suivis générés il y a une et deux minutes.

~/eb-java-scorekeep$ ./bin/trace-urls.sh [ "http://scorekeep.elasticbeanstalk.com/api/game/6Q0UE1DG/5FGLM9U3/endtime/1479069438", "http://scorekeep.elasticbeanstalk.com/api/session/KH4341QH", "http://scorekeep.elasticbeanstalk.com/api/game/GLQBJ3K5/153AHDIA", "http://scorekeep.elasticbeanstalk.com/api/game/VPDL672J/G2V41HM6/endtime/1479069466" ]
Exemple bin/full-traces.sh
EPOCH=$(date +%s) TRACEIDS=$(aws xray get-trace-summaries --start-time $(($EPOCH-120)) --end-time $(($EPOCH-60)) --query 'TraceSummaries[*].Id' --output text) aws xray batch-get-traces --trace-ids $TRACEIDS --query 'Traces[*]'

Le script récupère les suivis entiers générés il y a une et deux minutes.

~/eb-java-scorekeep$ ./bin/full-traces.sh | less [ { "Segments": [ { "Id": "3f212bc237bafd5d", "Document": "{\"id\":\"3f212bc237bafd5d\",\"name\":\"DynamoDB\",\"trace_id\":\"1-5828d9f2-a90669393f4343211bc1cf75\",\"start_time\":1.479072242459E9,\"end_time\":1.479072242477E9,\"parent_id\":\"72a08dcf87991ca9\",\"http\":{\"response\":{\"content_length\":60,\"status\":200}},\"inferred\":true,\"aws\":{\"consistent_read\":false,\"table_name\":\"scorekeep-session-xray\",\"operation\":\"GetItem\",\"request_id\":\"QAKE0S8DD0LJM245KAOPMA746BVV4KQNSO5AEMVJF66Q9ASUAAJG\",\"resource_names\":[\"scorekeep-session-xray\"]},\"origin\":\"AWS::DynamoDB::Table\"}" }, { "Id": "309e355f1148347f", "Document": "{\"id\":\"309e355f1148347f\",\"name\":\"DynamoDB\",\"trace_id\":\"1-5828d9f2-a90669393f4343211bc1cf75\",\"start_time\":1.479072242477E9,\"end_time\":1.479072242494E9,\"parent_id\":\"37f14ef837f00022\",\"http\":{\"response\":{\"content_length\":606,\"status\":200}},\"inferred\":true,\"aws\":{\"table_name\":\"scorekeep-game-xray\",\"operation\":\"UpdateItem\",\"request_id\":\"388GEROC4PCA6D59ED3CTI5EEJVV4KQNSO5AEMVJF66Q9ASUAAJG\",\"resource_names\":[\"scorekeep-game-xray\"]},\"origin\":\"AWS::DynamoDB::Table\"}" } ], "Id": "1-5828d9f2-a90669393f4343211bc1cf75", "Duration": 0.05099987983703613 } ...

Nettoyage

Mettez fin à votre environnement Elastic Beanstalk pour arrêter les instances Amazon EC2, les tables DynamoDB et les autres ressources.

Pour arrêter votre environnement Elastic Beanstalk
  1. Ouvrez la console Elastic Beanstalk.

  2. Naviguez vers leconsole de gestionpour votre environnement.

  3. Sélectionnez Actions.

  4. Choisissez Terminate Environment (Terminer l'environnement).

  5. Sélectionnez Terminer.

Les données de suivi sont automatiquement supprimées de X-Ray au bout de 30 jours.