本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用AWS X-Ray使用指令碼的 APIAWSCLI
該AWSCLI 可讓您直接存取 X-Ray 服務,並使用 X-Ray 主控台用來擷取服務圖表和原始追蹤資料的相同 API。範例應用程式包含指令碼,說明如何搭配使用這些 APIAWSCLI。
先決條件
此教學使用 Scorekeep 範例應用程式和隨附的指令碼,以產生追蹤資料和服務地圖。按照入門教學中的指示啟動應用程式。
本教學課程使用AWS CLI顯示 X 射線 API 的基本用途。該AWSCLI,適用於視窗、Linux 和作業系統,為所有人提供對公共 API 的命令行訪問AWS 服務。
注意
您必須驗證 AWS CLI 是否設定為建立 Scorekeep 範例應用程式的同一個區域。
隨附的指令碼 (用來測試範例應用程式) 會使用 cURL
,將流量傳送到 API 和 jq
以剖析輸出。您可以下載jq
可執行來源斯泰多兰·吉图比奥curl
可執行來源https://curl.haxx.se/download.html
產生追蹤資料
當遊戲進行中時,Web 應用程式會每隔幾秒鐘持續產生對 API 的流量,但只會產生一種類型的請求。使用 test-api.sh
指令碼來執行端對端案例,並在您測試 API 時產生更多元化的追蹤資料。
使用 test-api.sh
指令碼
導覽至管理主控台適用於您的環境。
-
複製頁面標頭的環境 URL。
-
開啟
bin/test-api.sh
並將 API 的值取代為您環境的 URL。#!/bin/bash API=
scorekeep.9hbtbm23t2
.us-west-2.elasticbeanstalk.com/api -
執行指令碼來產生對 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"]}
使用 X 射線 API
該AWSCLI 為 X-Ray 提供的所有 API 動作提供命令,包括GetServiceGraph
和GetTraceSummaries
。如需所使用的所有支援動作和資料類型詳細資訊,請參閱 AWS X-Ray API 參考。
範例 bin/service-graph.sh
EPOCH=$(date +%s)
aws xray get-service-graph --start-time $(($EPOCH-600)) --end-time $EPOCH
指令碼會擷取最後 10 分鐘的服務圖表。
~/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",
...
範例 bin/trace-urls.sh
EPOCH=$(date +%s)
aws xray get-trace-summaries --start-time $(($EPOCH-120)) --end-time $(($EPOCH-60)) --query 'TraceSummaries[*].Http.HttpURL'
指令碼會擷取前一分鐘和兩個分鐘之間產生的追蹤 URL。
~/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"
]
範例 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[*]'
指令碼會擷取前一分鐘和兩個分鐘之間產生的完整追蹤。
~/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
}
...
清除
終止您的彈性豆莖環境,以關閉 Amazon EC2 執行個體、DynamoDB 表和其他資源。
若要終止您的 Elastic Beanstalk 環境
導覽至管理主控台適用於您的環境。
-
選擇 Actions (動作)。
-
選擇 Terminate Environment (終止環境)。
-
選擇 Terminate (終止)。
追蹤資料會在 30 天後自動從 X-Ray 中刪除。