← Todas as publicações

Publicação Técnica · Amazon Web Services

Usando a API AWS X-Ray com o AWS CLI

O AWS CLI permite que você acesse o serviço do X-Ray diretamente e use as mesmas APIs que o console do X-Ray usa para recuperar o gráfico…

3 min de leitura584 palavrasSeções: 4Imagens: 1Blocos de código: 1125 mai 2022

Palavras-chave

Compartilhar
Comentar

O AWS CLI permite que você acesse o serviço do X-Ray diretamente e use as mesmas APIs que o console do X-Ray usa para recuperar o gráfico do serviço e os dados de traços brutos.

Pré-requisitos

Este tutorial usa o aplicativo de exemplo Scorekeep e scripts incluídos para gerar dados de rastreamento e um mapa de serviço. Este tutorial usa o AWS CLI para mostrar o uso básico da API do X-Ray. Os Scripts incluídos para testar o aplicativo de exemplo usa cURL para enviar tráfego para a API e o jq para analisar a saída. Você pode baixar o jq em stedolan.github.io e o curl em https://curl.haxx.se/download.html. A maioria das instalações do Linux e OS X inclui cURL.

Gerar dados de rastreamento

O aplicativo da web continua a gerar tráfego para a API a cada poucos segundos enquanto o jogo está em andamento, mas gera apenas um tipo de solicitação. Use o script test-api.sh para executar cenários de ponta a ponta e gerar dados de rastreamento mais diversos enquanto testa a API.

Para usar o script test-api.sh

  1. Abra o console do Elastic Beanstalk.
  2. Navegue até o console de gerenciamento do seu ambiente.
  3. Copie o URL do ambiente do cabeçalho da página.
  4. Abra bin/test-api.sh e substitua o valor da API pelo URL do seu ambiente.
#!/bin/bash
API=scorekeep.9hbtbm23t2.us-west-2.elasticbeanstalk.com/api

Execute o script para gerar tráfego para a 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”]}

Use a API X-Ray

O AWS CLI fornece comandos para todas as ações da API que o X-Ray fornece, incluindo GetServiceGraph e GetTraceSummaries.

Exemplo bin / service-graph.sh

EPOCH=$(date +%s)
aws xray get-service-graph — start-time $(($EPOCH-600)) — end-time $EPOCH
O script recupera um gráfico de serviço dos últimos 10 minutos.
~/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”,
…

Exemplo bin / trace-urls.sh

EPOCH=$(date +%s)
aws xray get-trace-summaries — start-time $(($EPOCH-120)) — end-time $(($EPOCH-60)) — query ‘TraceSummaries[*].Http.HttpURL’
O script recupera os URLs de rastreios gerados entre um e dois minutos atrás.
~/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"
]

Exemplo 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[*]’

O script recupera rastreamentos completos gerados entre um e dois minutos atrás.

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

Para remover o ambiente de testes

Encerre seu ambiente Elastic Beanstalk para encerrar as instâncias do Amazon EC2, tabelas do DynamoDB e outros recursos.

Para encerrar seu ambiente Elastic Beanstalk

  1. Abra o console do Elastic Beanstalk.
  2. Navegue até o console de gerenciamento do seu ambiente.
  3. Escolha ações .
  4. Escolha Terminate Environment .
  5. Escolha Encerrar .

Os dados de rastreamento são excluídos automaticamente do X-Ray após 30 dias.

Até o próximo post! =)

Comentários

Todo comentário passa por moderação antes de aparecer aqui. Nada é publicado automaticamente.

Carregando…