Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Mit demAWS X-RayAPI mit demAWSCLI
DieAWSÜber die CLI können Sie direkt auf den X-Ray-Dienst zugreifen und dieselben APIs verwenden, die die X-Ray-Konsole zum Abrufen des Service-Graphen und der Rohdaten der Traces verwendet. Die Beispielanwendung enthält Skripte, die zeigen, wie Sie diese APIs mit demAWSCLI.
Voraussetzungen
In diesem Tutorial werden die Scorekeep-Beispielanwendung und darin enthaltene Skripts verwendet, um Ablaufverfolgungsdaten und eine Service-Übersicht zu erstellen. Folgen Sie den Anweisungen im Tutorial "Erste Schritte", um die Anwendung zu starten.
Dieses Tutorial verwendet dieAWS CLIum die grundlegende Verwendung der X-Ray-API zu zeigen. DasAWSCLIP,verfügbar für Windows, Linux und OS-X, bietet Befehlszeilenzugriff auf die öffentlichen APIs für alleAWS-Services.
Anmerkung
Sie müssen überprüfen, ob Ihre AWS CLI für dieselbe Region konfiguriert ist, in der Ihre Scorekeep-Beispielanwendung erstellt wurde.
Die enthaltenen Skripts zum Testen der Beispielanwendung verwenden cURL
, um Datenverkehr zur API zu senden, und jq
zum Analysieren der Ausgabe. Sie können die ausführbare jq
-Datei von stedolan.github.iocurl
-Datei von https://curl.haxx.se/download.html
Generieren von Ablaufverfolgungsdaten
Die Web-App generiert weiterhin alle paar Sekunden Datenverkehr zur API, während das Spiel fortgesetzt wird, es wird aber nur eine Art der Anforderung generiert. Verwenden Sie das Skript test-api.sh
, um End-to-End-Szenarien auszuführen und um während der Prüfung der API vielfältigere Ablaufverfolgungsdaten zu generieren.
So verwenden Sie das test-api.sh
-Skript
In der Elastic-Beanstalk-Konsole
öffnen. Navigiere zumManagement-Konsolefür Ihre Umgebung.
-
Kopieren Sie die Umgebungs-URL aus dem Header der Seite.
-
Öffnen Sie
bin/test-api.sh
und ersetzen Sie den Wert für die API mit der URL Ihrer Umgebung.#!/bin/bash API=
scorekeep.9hbtbm23t2
.us-west-2.elasticbeanstalk.com/api -
Führen Sie das Skript aus, um Datenverkehr zur API zu generieren.
~/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"]}
Verwenden Sie die X-Ray-API
DasAWSCLI bietet Befehle für alle API-Aktionen, die X-Ray bereitstellt, einschließlichGetServiceGraph
undGetTraceSummaries
. Weitere Informationen über alle unterstützten Aktionen und die von ihnen verwendeten Datentypen finden Sie in der AWS X-Ray-API-Referenz.
Beispiel bin/service-graph.sh
EPOCH=$(date +%s)
aws xray get-service-graph --start-time $(($EPOCH-600)) --end-time $EPOCH
Das Skript ruft ein Service-Diagramm für die letzten 10 Minuten ab.
~/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",
...
Beispiel bin/trace-urls.sh
EPOCH=$(date +%s)
aws xray get-trace-summaries --start-time $(($EPOCH-120)) --end-time $(($EPOCH-60)) --query 'TraceSummaries[*].Http.HttpURL'
Das Skript ruft die URLs der Ablaufverfolgungen ab, die ein bis zwei Minuten zuvor generiert wurden.
~/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"
]
Beispiel 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[*]'
Das Skript ruft die vollständigen Ablaufverfolgungsdaten ab, die ein bis zwei Minuten zuvor generiert wurden.
~/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
}
...
Bereinigen
Beenden Sie Ihre Elastic Beanstalk-Umgebung, um die Amazon EC2-Instances, DynamoDB-Tabellen und andere Ressourcen herunterzufahren.
So beenden Sie die Elastic Beanstalk-Umgebung
In der Elastic-Beanstalk-Konsole
öffnen. Navigieren Sie zumManagement-Konsolefür Ihre Umgebung.
-
Wählen Sie Actions (Aktionen).
-
Wählen Sie Terminate Environment.
-
Wähen Sie Beenden.
Trace-Daten werden nach 30 Tagen automatisch aus X-Ray gelöscht.