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.
AWS X-Ray-Segmentdokumente
Ein Ablaufverfolgungssegment ist eine JSON-Darstellung einer Anfrage, die Ihrer Anwendung dient. Ein Ablaufverfolgungssegment zeichnet Informationen über die ursprüngliche Anforderung, die Arbeit Ihrer Anwendung vor Ort auf undUntersegmentemit Informationen über nachgelagerte Aufrufe, die Ihre Anwendung machtAWSRessourcen, HTTP-APIs und SQL-Datenbanken.
EIN-Segmentdokumentübermittelt Informationen über ein Segment an X-Ray. Ein Segmentdokument kann bis zu 64 kB sein und ein ganzes Segment mit Untersegmenten, einem Segmentenfragment, das angibt, dass eine Anforderung in Bearbeitung ist, oder einem einzelnen Untersegment, das getrennt gesendet wird, enthalten. Sie können Dokumente X-Ray derPutTraceSegments
API.
X-Ray kompiliert und verarbeitet Segmentdokumente, um abfragbare zu generierenAblaufverfolgungenundvollständige Ablaufverfolgungenauf die Sie zugreifen können, indem Sie dasGetTraceSummaries
undBatchGetTraces
APIs und beschreiben. Zusätzlich zu den an X-Ray gesendeten Segmenten und Untersegmenten nutzt der Service die Informationen in Subsegmenten, um zu generierenabgeleitete Segmenteund fügt sie der vollständigen Ablaufverfolgung hinzu. Abgeleitete Segmente spiegeln nachgelagerte Services und Ressourcen in der Service-Übersicht wider.
X-Ray bietet einJSON-Schemafür Segmentdokumente. Sie können das Schema hier herunterladen: xray-segmentdocument-schema-v1.0.0aus. Die im Schema angegebenen Felder und Objekte werden in den folgenden Abschnitten genauer beschrieben.
Eine Untergruppe der Segmentfelder ist zur Nutzung mit Filterausdrücken von X-Ray indiziert. Zum Beispiel: Wenn Sie denuser
-Feld auf ein Segment mit einer eindeutigen Kennzeichnung zugreifen können, können Sie nach Segmenten suchen, die in Zusammenhang mit bestimmten Nutzern in der X-Ray-Konsole stehen.GetTraceSummaries
API. Weitere Informationen finden Sie unter Verwenden von Filterausdrücken.
Wenn Sie Ihre Anwendung mit dem X-Ray -SDK nutzen, generiert das SDK für Sie Segmentdokumente. Anstatt die Segmentdokumente direkt an X-Ray zu senden, übermittelt das SDK sie über einen lokalen UDP-Anschluss direkt an denX-Ray Daemonaus. Weitere Informationen finden Sie unter Senden von Segmentdokumenten an den X-Ray-Daemon.
Abschnitte
Segmentfelder
Ein Segment zeichnet Ablaufverfolgungsinformationen über eine Anforderung auf, die Ihrer Anwendung dient. Ein Segment zeichnet mindestens den Namen, die ID, die Anfangszeit, die Ablaufverfolgungs-ID und die Endzeit der Anforderung auf.
Beispiel Minimales vollständiges Segment
{
"name" : "example.com",
"id" : "70de5b6f19ff9a0a",
"start_time" : 1.478293361271E9,
"trace_id" : "1-581cf771-a006649127e371903a2de979",
"end_time" : 1.478293361449E9
}
Die folgenden Felder sind für Segmente erforderlich oder in einigen Fällen notwendig.
Der Wert muss aus Zeichenfolgen (bis zu 250 Zeichen) bestehen, soweit nicht anders angegeben.
Erforderliche Segmentfelder
-
name
— Der logische Name des Service, der die Anforderungen verarbeitet hat, bis zu200 Zeichenaus. Beispielsweise der Name der Anwendung oder Domäne. Namen dürfen Unicode-Buchstaben, -Ziffern und -Leerzeichen enthalten sowie die folgenden Symbole:_
,.
,:
,/
,%
,&
,#
,=
,+
,\
,-
,@
-
id
— Eine 64-Bit-Kennung für das Segment, die sich von anderen Segmenten in derselben Ablaufverfolgung eindeutig unterscheidet16 hexadezimale Zeichenaus. -
trace_id
— Eine eindeutige Kennung, die alle von einer einzigen Client-Anforderung stammenden Segmente und Untersegmente verbindet.Format der Ablaufverfolgungs-ID
Eine
trace_id
besteht aus drei durch Bindestriche getrennte Zahlen. Zum Beispiel1-58406520-a006649127e371903a2de979
. Dies umfasst:-
Die Versionsnummer
1
. -
Die Zeit der ursprünglichen Anforderung als Zeit seit Unix-Epoche und in 8 Hexadezimalziffern ausgedrückt.
Beispiel: 10:00 Uhr 1. Dezember 2016 PST entspricht einer Epoch-Zeit von
1480615200
Sekunden oder in hexadezimalen Ziffern ausgedrückt58406520
. -
Eine 96-Bit-Kennzeichnung für die Ablaufverfolgung, global eindeutig, in 24 Hexadezimalziffern.
Sicherheit der Ablaufverfolgungs-ID Ablaufverfolgungs-IDs sind in Antwortheadern sichtbar. Generieren Sie Ablaufverfolgungs-IDs mit einem sicheren Random-Algorithmus, um sicherzustellen, dass Angreifer zukünftige Ablaufverfolgungs-IDs nicht berechnen und keine Anforderungen mit diesen IDs an Ihre Anwendung senden können.
-
-
start_time
–Nummerdas ist die Zeit, in Gleitkommasekunden seit Epoche, wann das Segment erstellt wurde. Beispiel:1480615200.010
oder1.480615200010E9
. Verwenden Sie so viele Dezimalstellen, wie Sie benötigen. Mikrosekundenauflösung ist empfohlen, wenn verfügbar. -
end_time
–Nummerdas ist der Zeitpunkt, wann das Segment geschlossen wurde. Beispiel:1480615200.090
oder1.480615200090E9
. Geben Sie entwederend_time
oderin_progress
an. -
in_progress
–boolesch, setzen Sie auftrue
anstatt eineend_time
um aufzuzeichnen, dass ein Segment begonnen, aber nicht abgeschlossen wurde. Wenn Ihre Anwendung eine Anforderung empfängt, die lange dauern wird, senden Sie ein in Bearbeitung befindliches Segment, um den Empfang zu bestätigen. Wenn die Antwort gesendet wird, senden Sie das vollständige Segment zum Überschreiben des in Bearbeitung befindlichen Segments. Senden Sie pro Anforderung nur ein vollständiges Segment und ein oder kein angefangenes Segment.
Die eines Segmentsname
sollte mit dem Domainnamen oder logischen Namen des Dienstes übereinstimmen, der das Segment generiert. Dies wird jedoch nicht durchgesetzt. Jede Anwendung, die eine Berechtigung für hatPutTraceSegments
kann Segmente mit beliebigem Namen senden.
Die folgenden Felder sind für Segmente optional.
Optionale Segmentfelder
-
service
— Ein Objekt mit Informationen zu Ihrer Anwendung.-
version
— Eine Zeichenfolge, die die Version Ihrer Anwendung, welche die Anforderung unterstützt hat, identifiziert.
-
-
user
— Eine Zeichenfolge, die den Benutzer, der die Anforderung gesendet hat, identifiziert. -
origin
— Der Typ vonAWSauf der Ihre Anwendung ausgeführt wird.Unterstützte Werte
-
AWS::EC2::Instance
— Eine Amazon-EC2-Instance. -
AWS::ECS::Container
— Ein Amazon-ECS-Container. -
AWS::ElasticBeanstalk::Environment
— Eine Elastic Beanstalk-Umgebung.
Wenn mehrere Werte für Ihre Anwendung gelten, verwenden Sie den spezifischsten. In einer Multicontainer-Docker-Elastic Beanstalk-Umgebung wird Ihre Anwendung beispielsweise auf einem Amazon ECS-Container ausgeführt, der wiederum auf einer Amazon EC2 EC2-Instance ausgeführt wird. In diesem Fall müssen Sie den Ursprung auf
AWS::ElasticBeanstalk::Environment
festlegen, da die Umgebung das übergeordnete Element der beiden anderen Ressourcen ist. -
-
parent_id
— Eine Untersegments-ID, die Sie festlegen, wenn die Anforderung von einer instrumentierten Anwendung stammt. Das X-Ray SDK fügt die übergeordnete Untersegments-ID derAblaufverfolgungs-Headerfür Downstream-HTTP-Aufrufe. Bei verschachtelten Untersegmenten kann ein Untersegment ein Segment oder ein Untersegment als übergeordnetes Element haben. -
http
–http-Objekte mit Informationen über die ursprüngliche HTTP-Anforderung. -
aws
–aws-Objekt mit Informationen über denAWSRessource, auf denen Ihre Anwendung die Anforderung bereitstellt. -
error
,throttle
,fault
, undcause
–FehlerFelder, die einen aufgetretenen Fehler angeben und Informationen über die Ausnahme enthalten, die den Fehler verursacht hat. -
annotations
–annotations-Objekt mit Schlüsselwertpaaren, die X-Ray zur Suche indizieren soll. -
metadata
–metadata-Objekt mit zusätzlichen Daten, die in einem Segment gespeichert werden sollen. -
subsegments
–ReihevonsubsegmentBuckets.
Untersegmente
Sie können Untersegmente erstellen, um Anrufe aufzuzeichnenAWSDienste und Ressourcen, die Sie mit dem erstellenAWS-SDK, Aufrufe von internen oder externen HTTP-Web-APIs oder SQL-Datenbankanfragen. Sie können auch Untersegmente erstellen, um Code-Blöcke in Ihrer Anwendung zu debuggen oder zu kommentieren. Untersegmente können weitere Untersegmente enthalten, damit ein individuelles Untersegment, das Metadaten über einen internen Funktionsaufruf aufzeichnet, weitere individuelle Untersegmente sowie Untersegmente nachgelagerter Aufrufe umfassen kann.
Ein Untersegment erfasst einen nachgelagerten Aufruf aus der Sicht des Service, der den Aufruf gestartet hat. X-Ray nutzt Untersegmente, um nachgelagerte Services zu identifizieren, die keine Segmente senden und Einträge für sie im Service-Diagramm erstellen.
Ein Untersegment kann in einem vollständigen Segmentdokument eingebettet oder separat gesendet werden. Senden Sie Untersegmente separat, um nachgelagerte Aufrufe für lange andauernde Anforderungen asynchron nachzuverfolgen oder um zu verhindern, dass die maximale Größe des Segmentdokuments überschritten wird.
Beispiel Segment mit eingebettetem Untersegment
Ein unabhängiges Untersegment hat einen type
vom subsegment
und einen parent_id
, der das übergeordnete Segment identifiziert.
{
"trace_id" : "1-5759e988-bd862e3fe1be46a994272793",
"id" : "defdfd9912dc5a56",
"start_time" : 1461096053.37518,
"end_time" : 1461096053.4042,
"name" : "www.example.com",
"http" : {
"request" : {
"url" : "https://www.example.com/health",
"method" : "GET",
"user_agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.7",
"client_ip" : "11.0.3.111"
},
"response" : {
"status" : 200,
"content_length" : 86
}
},
"subsegments" : [
{
"id" : "53995c3f42cd8ad8",
"name" : "api.example.com",
"start_time" : 1461096053.37769,
"end_time" : 1461096053.40379,
"namespace" : "remote",
"http" : {
"request" : {
"url" : "https://api.example.com/health",
"method" : "POST",
"traced" : true
},
"response" : {
"status" : 200,
"content_length" : 861
}
}
}
]
}
Für langwierige Anforderungen können Sie ein sich in Bearbeitung befindliches Segment senden, um X-Ray über den Erhalt der Anforderung zu informieren und Untersegmente anschließend zu senden, um diese vor Abschluss der ursprünglichen Anforderung rückzuverfolgen.
Beispiel In Bearbeitung befindliches Segment
{
"name" : "example.com",
"id" : "70de5b6f19ff9a0b",
"start_time" : 1.478293361271E9,
"trace_id" : "1-581cf771-a006649127e371903a2de979",
"in_progress": true
}
Beispiel Unabhängiges Untersegment
Ein unabhängiges Untersegment hat einen type
-subsegment
, eine trace_id
und eine parent_id
, die das übergeordnete Segment identifiziert.
{
"name" : "api.example.com",
"id" : "53995c3f42cd8ad8",
"start_time" : 1.478293361271E9,
"end_time" : 1.478293361449E9,
"type" : "subsegment",
"trace_id" : "1-581cf771-a006649127e371903a2de979"
"parent_id" : "defdfd9912dc5a56"
,
"namespace" : "remote",
"http" : {
"request" : {
"url" : "https://api.example.com/health",
"method" : "POST",
"traced" : true
},
"response" : {
"status" : 200,
"content_length" : 861
}
}
}
Schließen Sie das Segment nach Abschluss der Anforderung mit einer end_time
. Das vollständige Segment überschreibt das sich in Bearbeitung befindliche Segment.
Sie können außerdem Untersegmente für abgeschlossene Anforderungen, die asynchrone Workflows auslösen, getrennt senden. Beispielsweise kann eine Web-API eine OK 200
-Antwort, unmittelbar bevor die vom Benutzer angeforderte Arbeit beginnt, zurücksenden. Sobald die Antwort gesendet ist, können Sie ein vollständiges Segment an X-Ray, gefolgt von Untersegmenten für später abgeschlossene Arbeiten, senden. Wie bei Segmenten können Sie auch einen Untersegmentsfragment senden, um den Beginn des Untersegments aufzuzeichnen, und es anschließend mit einem vollständigen Segment überschreiben, sobald ein nachgelagerter Aufruf abgeschlossen ist.
Die folgenden Felder sind für Untersegmente erforderlich oder in einigen Fällen notwendig.
Werte sind Zeichenfolgen, die aus bis zu 250 Zeichen bestehen, soweit nicht anders angegeben.
Erforderliche Untersegmentsfelder
-
id
— Eine 64-Bit-Kennung für das Untersegment, die sich von anderen Segmenten in derselben Ablaufverfolgung eindeutig unterscheidet16 hexadezimale Zeichenaus. -
name
— Der logische Name des Untersegments. Benennen Sie bei nachgelagerten Aufrufen das Untersegment, nachdem die Ressource oder der Service aufgerufen wurde. Benennen Sie bei benutzerdefinierten Untersegmenten das Untersegment nach dem genutzten Code (z. B. einem Funktionsnamen). -
start_time
–Nummerdas ist die Zeit, zu der das Untersegment erstellt wurde, in Gleitkommasekunden in Epochenzeit und auf Millisekunden genau. Beispiel:1480615200.010
oder1.480615200010E9
. -
end_time
–Nummerdas ist der Zeitpunkt, wann das Untersegment geschlossen wurde. Beispiel:1480615200.090
oder1.480615200090E9
. Geben Sie eineend_time
oderin_progress
ein. -
in_progress
–booleschdas ist eingestellt auftrue
anstatt eineend_time
um aufzuzeichnen, dass ein Untersegment begonnen, aber nicht abgeschlossen wurde. Senden Sie pro nachgelagerter Anfrage nur ein vollständiges Untersegment und ein oder kein angefangenes Untersegment. -
trace_id
— Ablaufverfolgungs-ID des übergeordneten Segments des Untersegments. Nur erforderlich, wenn ein Untersegment separat gesendet wird.Format der Ablaufverfolgungs-ID
Eine
trace_id
besteht aus drei durch Bindestriche getrennte Zahlen. Zum Beispiel1-58406520-a006649127e371903a2de979
. Dies umfasst:-
Die Versionsnummer
1
. -
Die Zeit der ursprünglichen Anforderung als Zeit seit Unix-Epoche und in 8 Hexadezimalziffern ausgedrückt.
Beispiel: 10:00 Uhr 1. Dezember 2016 PST entspricht einer Epoch-Zeit von
1480615200
Sekunden oder in hexadezimalen Ziffern ausgedrückt58406520
. -
Eine 96-Bit-Kennzeichnung für die Ablaufverfolgung, global eindeutig, in 24 Hexadezimalziffern.
-
-
parent_id
— Segments-ID des übergeordneten Segments des Untersegments. Nur erforderlich, wenn ein Untersegment separat gesendet wird. Bei verschachtelten Untersegmenten kann ein Untersegment ein Segment oder ein Untersegment als übergeordnetes Element haben. -
type
–subsegment
aus. Nur erforderlich, wenn ein Untersegment separat gesendet wird.
Die folgenden Felder sind für Untersegmente optional.
Optionale Untersegmentsfelder
-
namespace
–aws
für AWS-SDK-Aufrufe;remote
für andere nachgelagerte Aufrufe. -
http
–http-Objekt mit Informationen über einen ausgehenden HTTP-Aufruf. -
aws
–aws-Objekt mit Informationen über den nachgelagertenAWSRessource, die Ihre Anwendung aufgerufen hat. -
error
,throttle
,fault
, undcause
–FehlerFelder, die einen aufgetretenen Fehler angeben und Informationen über die Ausnahme enthalten, die den Fehler verursacht hat. -
annotations
–annotations-Objekt mit Schlüsselwertpaaren, die X-Ray zur Suche indizieren soll. -
metadata
–metadata-Objekt mit zusätzlichen Daten, die in einem Segment gespeichert werden sollen. -
subsegments
–ReihevonsubsegmentBuckets. -
precursor_ids
–Reihevon Untersegments-IDs, die Untersegmente mit dem gleichen übergeordneten Segment identifizieren, das vor diesem Untersegment vervollständigt wurde.
HTTP-Anfragedaten
Verwenden Sie einen HTTP-Block, um Details zu einer HTTP-Anforderung aufzuzeichnen, die Ihrer Anwendung (in einem Segment) dient oder die Ihre Anwendung (in einem Untersegment) an eine nachgelagerte HTTP-API gestellt hat. Die meisten Felder in dieser Objektübersicht gehören zu Informationen von HTTP-Anforderungen und -Antworten.
http
Alle Felder sind optional.
-
request
— Informationen zu einer Anforderung.-
method
— Anfragemethode. Zum BeispielGET
. -
url
— Die vollständige URL der Anforderung, aus dem Protokoll, dem Hostnamen und dem Anforderungspfad. -
user_agent
— Die Zeichenfolge des Benutzeragenten vom Client des Auftraggebers. -
client_ip
— Die IP-Adresse des Auftraggebers. Kann im IP-PaketSource Address
oder, für weitergeleitete Anforderungen, in einemX-Forwarded-For
-Header eingesehen werden. -
x_forwarded_for
— (nur Segmente)booleschzeigt an, dass dieclient_ip
wurde aus einem gelesenX-Forwarded-For
-Header und ist nicht verlässlich, da sie gefälscht sein könnte. -
traced
— (nur Untersegmente)booleschdas angibt, dass der nachgelagerte Aufruf ein weiterer rückverfolgter Dienst ist. Wenn dieses Feld auf eingestellt isttrue
erachtet X-Ray die Ablaufverfolgung als beschädigt, bis der nachgelagerte Service ein Segment mit einer hochlädtparent_id
das passt zu denid
des Untersegments, das diesen Block enthält.
-
-
response
— Informationen zu einer Antwort.-
status
–GanzzahlAngabe des HTTP-Status der Antwort. -
content_length
–Ganzzahldie die Länge des Antworttexts in Byte angibt.
-
Wenn Sie einen Aufruf einer nachgelagerten Web-API instrumentieren, erfassen Sie ein Untersegment mit Informationen über die HTTP-Anforderung und die Antwort. X-Ray verwendet das Untersegment, um ein abgeleitetes Segment für die entfernte API zu generieren.
Beispiel Segment für einen HTTP-Aufruf, der von einer Anwendung, die über Amazon EC2 ausgeführt wird, bereitgestellt wird.
{
"id": "6b55dcc497934f1a",
"start_time": 1484789387.126,
"end_time": 1484789387.535,
"trace_id": "1-5880168b-fd5158284b67678a3bb5a78c",
"name": "www.example.com",
"origin": "AWS::EC2::Instance",
"aws": {
"ec2": {
"availability_zone": "us-west-2c",
"instance_id": "i-0b5a4678fc325bg98"
},
"xray": {
"sdk_version": "2.11.0 for Java"
},
},
"http": {
"request": {
"method": "POST",
"client_ip": "78.255.233.48",
"url": "http://www.example.com/api/user",
"user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0",
"x_forwarded_for": true
},
"response": {
"status": 200
}
}
Beispiel Untersegment für einen nachgelagerten HTTP-Aufruf
{
"id": "004f72be19cddc2a",
"start_time": 1484786387.131,
"end_time": 1484786387.501,
"name": "names.example.com",
"namespace": "remote",
"http": {
"request": {
"method": "GET",
"url": "https://names.example.com/"
},
"response": {
"content_length": -1,
"status": 200
}
}
}
Beispiel Abgeleitetes Segment für einen nachgelagerten HTTP-Anruf
{
"id": "168416dc2ea97781",
"name": "names.example.com",
"trace_id": "1-62be1272-1b71c4274f39f122afa64eab",
"start_time": 1484786387.131,
"end_time": 1484786387.501,
"parent_id": "004f72be19cddc2a",
"http": {
"request": {
"method": "GET",
"url": "https://names.example.com/"
},
"response": {
"content_length": -1,
"status": 200
}
},
"inferred": true
}
Anmerkungen
Segmente und Untersegmente können einannotations
-Objekt, das ein oder mehrere von X-Ray indizierte Felder zur Verwendung mit Filterausdrücken enthält. Felder können eine Zeichenfolge, Zahl oder einen booleschen Werte (keine Objekte oder Arrays) umfassen. X-Ray indiziert bis zu 50 Anmerkungen pro Ablaufverfolgung.
Beispiel Segment für HTTP-Aufrufe mit Anmerkungen
{
"id": "6b55dcc497932f1a",
"start_time": 1484789187.126,
"end_time": 1484789187.535,
"trace_id": "1-5880168b-fd515828bs07678a3bb5a78c",
"name": "www.example.com",
"origin": "AWS::EC2::Instance",
"aws": {
"ec2": {
"availability_zone": "us-west-2c",
"instance_id": "i-0b5a4678fc325bg98"
},
"xray": {
"sdk_version": "2.11.0 for Java"
},
},
"annotations": {
"customer_category" : 124,
"zip_code" : 98101,
"country" : "United States",
"internal" : false
},
"http": {
"request": {
"method": "POST",
"client_ip": "78.255.233.48",
"url": "http://www.example.com/api/user",
"user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0",
"x_forwarded_for": true
},
"response": {
"status": 200
}
}
Die Schlüssel müssen alphanumerisch sein, um mit Filtern funktionieren zu können. Unterstriche sind zulässig. Andere Zeichen und Leerzeichen sind nicht zulässig.
Metadaten
Segmente und Untersegmente können einmetadata
-Objekt, das ein oder mehrere Felder mit Werten jeglicher Art, einschließlich Objekte und Arrays, enthält. X-Ray indiziert keine Metadaten. Werte können jede Größe haben, so lange das Segmentdokument die Maximalgröße (64 kB) nicht übersteigt. Sie können Metadaten im vollständigen Segmentdokument, das von der BatchGetTraces
-API zurückgesendet wurde, einsehen. Feldtasten (debug
im folgenden Beispiel) beginnend mitAWS.
sind für die -Verwendung von reserviertAWS-bereitgestellte SDKs und Clients.
Beispiel Individuelles Untersegment mit Metadaten
{
"id": "0e58d2918e9038e8",
"start_time": 1484789387.502,
"end_time": 1484789387.534,
"name": "## UserModel.saveUser",
"metadata": {
"debug": {
"test": "Metadata string from UserModel.saveUser"
}
},
"subsegments": [
{
"id": "0f910026178b71eb",
"start_time": 1484789387.502,
"end_time": 1484789387.534,
"name": "DynamoDB",
"namespace": "aws",
"http": {
"response": {
"content_length": 58,
"status": 200
}
},
"aws": {
"table_name": "scorekeep-user",
"operation": "UpdateItem",
"request_id": "3AIENM5J4ELQ3SPODHKBIRVIC3VV4KQNSO5AEMVJF66Q9ASUAAJG",
"resource_names": [
"scorekeep-user"
]
}
}
]
}
AWSRessourcendaten
Bei Segmenten enthält das aws
-Objekt Informationen zu den Ressourcen, auf denen Ihre Anwendung ausgeführt wird. Mehrere Felder können für eine einzelne Ressource zutreffen. Eine Anwendung in einer Multicontainer-Docker-Umgebung auf Elastic Beanstalk könnte beispielsweise Informationen über die Amazon EC2 EC2-Instance, den Amazon ECS-Container in der Instance und die Elastic Beanstalk-Umgebung an sich haben.
aws
(Segmente)
Alle Felder sind optional.
-
account_id
— Wenn Ihre Anwendung Segmente an eine andere sendetAWS-Konto die ID des Kontos, auf dem Ihre Anwendung aufgeführt wird. -
cloudwatch_logs
— Array von Objekten, die ein einzelnes beschreiben CloudWatch Protokollgruppe.-
log_group
— Die CloudWatch Protokollgruppenname. -
arn
— Die CloudWatch Protokollgruppen-ARN.
-
-
ec2
— Informationen zu einer Amazon-EC2-Instance.-
instance_id
— Die Instance-ID der EC2-Instance. -
instance_size
— Der Typ der EC2-Instance. -
ami_id
— Die Amazon-Image-ID. -
availability_zone
— Die Availability Zone, in der die Instance ausgeführt wird.
-
-
ecs
— Informationen über einen ECS-Container.-
container
— Der Hostname Ihres Containers. -
container_id
— Die vollständige Container-ID Ihres Containers. -
container_arn
— ARN Ihrer Container-Instance.
-
-
eks
— Informationen zu einem Amazon EKS-Cluster-
pod
— Der Hostname Ihres EKS-Pods. -
cluster_name
— Der Name des EKS-Clusters. -
container_id
— Die vollständige Container-ID Ihres Containers.
-
-
elastic_beanstalk
— Informationen über eine Elastic Beanstalk-Umgebung. Sie finden diese Informationen in einer Datei mit dem Namen/var/elasticbeanstalk/xray/environment.conf
auf den neuesten Elastic Beanstalk-Plattformen.-
environment_name
– Der Name der Umgebung. -
version_label
— Der Name der Anwendungsversion, die aktuell für die Instance bereitgestellt wird, die die Anforderung bearbeitet hat. -
deployment_id
–Nummerdie ID der letzten erfolgreichen Bereitstellung in der Instance angibt, die die Anforderung bearbeitet hat.
-
-
xray
— Metadaten über den Typ und die Version der verwendeten Instrumentierung.-
auto_instrumentation
— Boolescher Wert, der angibt, ob die automatische Instrumentierung verwendet wurde (z. B. der Java-Agent). -
sdk_version
— Die Version des verwendeten SDK oder Agenten. -
sdk
— Der Typ des SDK.
-
Beispiel AWSMit Plugins blockieren
"aws":{
"elastic_beanstalk":{
"version_label":"app-5a56-170119_190650-stage-170119_190650",
"deployment_id":32,
"environment_name":"scorekeep"
},
"ec2":{
"availability_zone":"us-west-2c",
"instance_id":"i-075ad396f12bc325a",
"ami_id":
},
"cloudwatch_logs":[
{
"log_group":"my-cw-log-group",
"arn":"arn:aws:logs:us-west-2:012345678912:log-group:my-cw-log-group"
}
],
"xray":{
"auto_instrumentation":false,
"sdk":"X-Ray for Java",
"sdk_version":"2.8.0"
}
}
Zeichnen Sie für Untersegmente Informationen über denAWS-Services und Ressourcen, auf die Ihre Anwendung zugreift. X-Ray erstellt anhand dieser Daten abgeleitete Segmente, die nachgelagerten Services in Ihrer Service-Übersicht widerspiegeln.
aws
(Untersegmente)
Alle Felder sind optional.
-
operation
— Der Name der API-Aktion, die bei jedem aufgerufen wirdAWSService oder Ressource. -
account_id
— Wenn Ihre Anwendung auf die Ressourcen eines anderen Kontos zugreift oder Segmente an ein anderes Konto sendet, zeichnen Sie die Konto-ID des Kontos auf, zu dem dieAWSRessource, auf die Ihre Anwendung zugegriffen hat. -
region
— Wenn sich die Ressource in einer anderen Region als Ihre Anwendung befindet, zeichnen Sie diese Region auf. Zum Beispielus-west-2
. -
request_id
— Eindeutige Bezeichnung für die Anforderung. -
queue_url
— Für Vorgänge in einer SQS-Warteschlange die URL der Warteschlange. -
table_name
— Für Vorgänge in einer DynamoDB-Tabelle der Name der Tabelle.
Beispiel Untersegment für einen Aufruf von DynamoDB zum Speichern eines Elements
{
"id": "24756640c0d0978a",
"start_time": 1.480305974194E9,
"end_time": 1.4803059742E9,
"name": "DynamoDB",
"namespace": "aws",
"http": {
"response": {
"content_length": 60,
"status": 200
}
},
"aws": {
"table_name": "scorekeep-user",
"operation": "UpdateItem",
"request_id": "UBQNSO5AEM8T4FDA4RQDEB94OVTDRVV4K4HIRGVJF66Q9ASUAAJG",
}
}
Fehler und Ausnahmen
Wenn ein Fehler auftritt, können Sie die Einzelheiten zum Fehler und den Ausnahmen, die er generiert, aufzeichnen. Zeichnen Sie Fehler in Segmenten auf, wenn Ihre Anwendung einen Fehler an den Benutzer zurückgibt, sowie in Untersegmenten, wenn ein nachgelagerter Aufruf einen Fehler ausgibt.
Fehlertypen
Stellen Sie ein oder mehrere der folgenden Felder auf true
ein, um anzuzeigen, dass ein Fehler aufgetreten ist. Bei schwerwiegenden Fehlern können mehrere Typen ausgewählt werden. Ein 429 Too Many Requests
-Fehler von einem nachgelagerten Aufruf kann beispielsweise dazu führen, dass Ihre Anwendung zu einem 500 Internal Server Error
zurückkehrt. In diesem Fall treffen alle drei Typen zu.
-
error
–booleschzeigt an, dass ein Client-Fehler aufgetreten ist (Antwortstatuscode: 4XX-Client-Fehler). -
throttle
–booleschzeigt an, dass eine Anforderung gedrosselt wurde (Antwortstatuscode:429 — Zu viele Anfragen) enthalten. -
fault
–booleschzeigt an, dass ein Server-Fehler aufgetreten ist (Antwortstatuscode: 5XX-Server-Fehler).
Geben Sie die Fehlerursache an, indem Sie im Segment oder Untersegment ein Ursachenobjekt einschließen.
cause
Eine Ursache kann entweder eine 16-stellige Ausnahmen-ID oder ein Objekt mit den folgenden Feldern sein:
-
working_directory
— Der vollständige Pfad des Arbeitsverzeichnisses bei Auftreten der Ausnahme. -
paths
— DieReihevon Pfaden der Bibliotheken oder Module, die verwendet wurden, als der Fehler auftrat. -
exceptions
— DieReihevonAusnahmeBuckets.
Geben Sie detaillierte Informationen über die Fehler in einem oder mehreren Ausnahmenobjekten an.
exception
Alle Felder sind optional außer id
.
-
id
— Eine 64-Bit-Kennung für die Ausnahme, die sich von anderen Segmenten in derselben Ablaufverfolgung eindeutig unterscheidet16 hexadezimale Zeichenaus. -
message
— Die Ausnahmenachricht. -
type
— Die Ausnahmeart. -
remote
–booleschgibt an, dass die Ausnahme durch einen Fehler verursacht wurde, der von einem nachgelagerten Dienst zurückgegeben wurde. -
truncated
–Ganzzahldie Anzahl der Stack-Rahmen angibt, die vom ausgelassen werdenstack
aus. -
skipped
–GanzzahlAngabe der Anzahl der Ausnahmen, die zwischen dieser Ausnahme und der untergeordneten Ausnahme, d. h. der verursachten Ausnahme, übersprungen wurden. -
cause
— Ausnahmen-ID der übergeordneten Ausnahme, d. h. die Ausnahme, welche die Ausnahme verursacht hat. -
stack
–ReihevonstackFrameBuckets.
Falls verfügbar, zeichnen Sie Informationen zu dem Aufruf-Stack in stackFrame-Objekten auf.
stackFrame
Alle Felder sind optional.
-
path
— Der relative Pfad der Datei. -
line
— Die Zeile in der Datei. -
label
— Der Funktions- oder Methodenname.
SQL-Abfragen
Für Anfragen, die Ihre Anwendung in eine SQL-Datenbank umwandeln, können Sie Untersegmente erstellen.
sql
Alle Felder sind optional.
-
connection_string
— Zeichnen Sie für SQL-Server oder andere Datenbankverbindungen, die keine URL-Verbindungszeichenfolgen nutzen, die Verbindungszeichenfolge ohne Passwörter auf. -
url
— Zeichnen Sie für eine Datenbankverbindung, die eine URL-Verbindungszeichenfolge nutzt, die URL ohne Passwörter auf. -
sanitized_query
— Die Datenbankanfrage, bei der die von Benutzern eingegebenen Werte entfernt oder durch einen Platzhalter ersetzt werden. -
database_type
— Der Name der Datenbank-Engine. -
database_version
— Die Versionsnummer der Datenbank-Engine. -
driver_version
— Der Name und die Versionsnummer des Datenbank-Engine-Treibers, den Ihre Anwendung nutzt. -
user
— Der Datenbankbenutzername. -
preparation
–call
wenn die Abfrage einPreparedCall
;statement
wenn die Abfrage einPreparedStatement
aus.
Beispiel Untersegment mit einer SQL-Abfrage
{
"id": "3fd8634e78ca9560",
"start_time": 1484872218.696,
"end_time": 1484872218.697,
"name": "ebdb@aawijb5u25wdoy.cpamxznpdoq8.us-west-2.rds.amazonaws.com",
"namespace": "remote",
"sql" : {
"url": "jdbc:postgresql://aawijb5u25wdoy.cpamxznpdoq8.us-west-2.rds.amazonaws.com:5432/ebdb",
"preparation": "statement",
"database_type": "PostgreSQL",
"database_version": "9.5.4",
"driver_version": "PostgreSQL 9.4.1211.jre7",
"user" : "dbuser",
"sanitized_query" : "SELECT * FROM customers WHERE customer_id=?;"
}
}