Usando ilAWS X-RayAPI conAWSCLI - AWS X-Ray

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Usando ilAWS X-RayAPI conAWSCLI

LaAWSLa CLI consente di accedere direttamente al servizio X-Ray e di utilizzare le stesse API utilizzate dalla console X-Ray per recuperare il grafico del servizio e i dati grezzi delle tracce. L'applicazione di esempio include script che mostrano come utilizzare queste API conAWSCLIP.

Prerequisiti

Questo tutorial utilizza l'applicazione di esempio Scorekeep e gli script in essa inclusi per generare dei dati di tracciamento e una mappa del servizio. Segui le istruzioni nel tutorial sulle nozioni di base per avviare l'applicazione.

Questo tutorial utilizza ilAWS CLIper mostrare l'uso di base dell'API X-Ray. LaAWSCLIP,disponibile per Windows, Linux e OS-X, fornisce l'accesso da riga di comando alle API pubbliche per tuttiServizi AWS.

Nota

È necessario verificare che AWS CLI sia configurata nella stessa regione in cui è stata creata l'applicazione di esempio Scorekeep.

Gli script incluso per testare l'applicazione di esempio utilizzano cURL per inviare il traffico verso l'API e jq per analizzare l'output. Puoi scaricare l'eseguibile di jq da stedolan.github.io e l'eseguibile di curl da https://curl.haxx.se/download.html. La maggior parte delle installazioni Linux e OS X include cURL.

Generare i dati di tracciamento

Mentre il gioco è in corso, l'applicazione web genera continuamente traffico verso l'API ogni pochi secondi, ma genera solo un tipo di richiesta. Utilizza lo script test-api.sh per eseguire scenari completi e generare dati di tracciamento più eterogeni mentre testi l'API.

Per usare lo script test-api.sh
  1. Apri la console Elastic Beanstalk.

  2. Vai alconsole di gestioneper il tuo ambiente.

  3. Copiare l'URL di ambiente dall'intestazione della pagina.

  4. Aprire bin/test-api.sh e sostituire il valore per l’API con l'URL del proprio ambiente.

    #!/bin/bash API=scorekeep.9hbtbm23t2.us-west-2.elasticbeanstalk.com/api
  5. Eseguire lo script per generare il traffico verso 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"]}

Usa l'API X-Ray

LaAWSLa CLI fornisce comandi per tutte le azioni API fornite da X-Ray, tra cuiGetServiceGrapheGetTraceSummaries. Per ulteriori informazioni su tutte le operazioni supportate e i tipi di dati che utilizzano, consulta la Guida di riferimento delle API di AWS X-Ray.

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

Lo script recupera un grafo del servizio relativo agli ultimi 10 minuti.

~/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", ...
Esempio bin/trace-urls.sh
EPOCH=$(date +%s) aws xray get-trace-summaries --start-time $(($EPOCH-120)) --end-time $(($EPOCH-60)) --query 'TraceSummaries[*].Http.HttpURL'

Lo script recupera l'URL dei tracciamenti generati tra uno e due minuti fa.

~/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" ]
Esempio 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[*]'

Lo script recupera i tracciamenti completi generati tra uno e due minuti fa.

~/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 } ...

Pulizia

Termina il tuo ambiente Elastic Beanstalk per chiudere le istanze Amazon EC2, le tabelle DynamoDB e altre risorse.

Per terminare l'ambiente Elastic Beanstalk
  1. Apri la console Elastic Beanstalk.

  2. Passa alconsole di gestioneper il tuo ambiente.

  3. Scegli Actions (Azioni).

  4. Scegliere Terminate Environment (Termina ambiente).

  5. Scegliere Terminate (Termina).

I dati di traccia vengono eliminati automaticamente da X-Ray dopo 30 giorni.