Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
AWS X-Ray documents segmentés
Un segment de suivi est une représentation JSON d'une demande que sert votre application. Un segment de trace enregistre des informations sur la demande d'origine, des informations sur le travail effectué localement par votre application et des sous-segments contenant des informations sur les appels en aval que votre application effectue vers AWS des ressources, des API HTTP et des bases de données SQL.
Un document de segment transmet des informations sur un segment à X-Ray. Un document de segment peut peser jusqu'à 64 kB et contenir un segment entier avec des sous-segments, un fragment de segment indiquant qu'une demande est en cours ou un sous-segment unique envoyé séparément. Vous pouvez envoyer des documents de segment directement à X-Ray à l'aide de l'PutTraceSegments
API.
X-Ray compile et traite les documents segmentés pour générer des résumés de traces interrogeables et des traces complètes auxquels vous pouvez accéder à l'aide des API GetTraceSummaries
et BatchGetTraces
, respectivement. Outre les segments et sous-segments que vous envoyez à X-Ray, le service utilise les informations contenues dans les sous-segments pour générer des segments déduits et les ajouter à la trace complète. Les segments déduits représentent les services et les ressources en aval sur la carte de suivi.
X-Ray fournit un schéma JSON pour les documents segmentés. Vous pouvez télécharger le schéma ici : xray-segmentdocument-schema-v1.0.0. Les champs et les objets figurant dans le schéma sont décrits plus en détail dans les sections suivantes.
Un sous-ensemble de champs de segment est indexé par X-Ray pour être utilisé avec des expressions de filtre. Par exemple, si vous attribuez un identifiant unique au user
champ d'un segment, vous pouvez rechercher des segments associés à des utilisateurs spécifiques dans la console X-Ray ou à l'aide de l'GetTraceSummaries
API. Pour de plus amples informations, veuillez consulter Utilisation d'expressions de filtre.
Lorsque vous instrumentez votre application avec le SDK X-Ray, celui-ci génère des documents segmentés pour vous. Au lieu d'envoyer les documents segmentés directement à X-Ray, le SDK les transmet via un port UDP local au daemon X-Ray. Pour de plus amples informations, veuillez consulter Envoi de documents segmentés au daemon X-Ray.
Sections
Champs de segment
Un segment enregistre les informations de suivi d'une demande que votre application sert. Au minimum, un segment enregistre le nom, l'ID, l'heure de début, l'ID de suivi et l'heure de fin de la demande.
Exemple Segment terminé minimal
{
"name" : "example.com",
"id" : "70de5b6f19ff9a0a",
"start_time" : 1.478293361271E9,
"trace_id" : "1-581cf771-a006649127e371903a2de979",
"end_time" : 1.478293361449E9
}
Les champs suivants sont obligatoires, ou soumis à condition, pour les segments.
Note
Les valeurs doivent être des chaînes (jusqu'à 250 caractères), sauf mention contraire.
Champs de segment obligatoires
-
name
— Nom logique du service qui a traité la demande, 200 caractères maximum. Par exemple, le nom de votre application ou le nom de domaine. Les noms peuvent contenir des lettres en Unicode, des nombres et des espaces, ainsi que les symboles suivants :_
,.
,:
,/
,%
,&
,#
,=
,+
,\
,-
,@
-
id
— Un identifiant 64 bits pour le segment, unique parmi les segments d'une même trace, en 16 chiffres hexadécimaux. -
trace_id
— Un identifiant unique qui connecte tous les segments et sous-segments issus d'une seule demande client.Format d'identification X-Ray Trace
Un X-Ray
trace_id
est composé de trois chiffres séparés par des tirets. Par exemple,1-58406520-a006649127e371903a2de979
. Cela consiste notamment à :-
Le numéro de version, qui est
1
. -
L'heure de la demande d'origine sous Unix Epoch Time en utilisant 8 chiffres hexadécimaux.
Par exemple, le 1er décembre 2016 à 10 h 00 PST est exprimé en
1480615200
secondes ou58406520
en chiffres hexadécimaux. -
Identifiant 96 bits unique au monde pour la trace en 24 chiffres hexadécimaux.
Note
X-Ray prend désormais en charge les identifiants de trace créés à OpenTelemetry l'aide de tout autre framework conforme à la spécification W3C Trace Context
. Un ID de trace W3C doit être formaté au format X-Ray Trace ID lors de son envoi à X-Ray. Par exemple, l'ID de trace du W3C 4efaaf4d1e8720b39541901950019ee5
doit être formaté comme1-4efaaf4d-1e8720b39541901950019ee5
lorsqu'il est envoyé à X-Ray. Les identifiants de trace X-Ray incluent l'horodatage de la demande d'origine à l'époque Unix, mais cela n'est pas obligatoire lors de l'envoi des identifiants de trace du W3C au format X-Ray.Sécurité de l'ID de suivi
Les ID de suivi sont visibles dans les en-têtes de réponse. Générez des ID de suivi avec un algorithme aléatoire sécurisé pour garantir que les attaquants ne puissent pas calculer vos futurs ID de suivi et envoyer des demandes à votre application avec ces ID.
-
-
start_time
— nombre correspondant à l'heure à laquelle le segment a été créé, en secondes à virgule flottante par rapport à l'époque. Par exemple,1480615200.010
ou1.480615200010E9
. Utilisez autant de décimales que nécessaire. La résolution en microsecondes est recommandée si elle est disponible. -
end_time
— numéro correspondant à l'heure à laquelle le segment a été fermé. Par exemple,1480615200.090
ou1.480615200090E9
. Spécifiez uneend_time
ouin_progress
. -
in_progress
— booléen, défini sur autrue
lieu de spécifier unend_time
pour enregistrer qu'un segment est démarré mais qu'il n'est pas terminé. Envoyez un segment en cours lorsque votre application reçoit une demande longue à servir, pour suivre la réception de la demande. Lorsque la réponse est envoyée, envoyez le segment terminé pour remplacer le segment en cours. N'envoyez qu'un segment complet, et un ou zéro segment en cours, par demande.
Noms des services
Un segment name
doit correspondre au nom de domaine ou au nom logique du service qui génère le segment. Toutefois, cela n'est pas appliqué. Toute application autorisée PutTraceSegments
peut envoyer des segments sous n'importe quel nom.
Les champs suivants sont facultatifs pour les segments.
Champs de segment facultatifs
-
service
— Un objet contenant des informations sur votre application.-
version
— Chaîne identifiant la version de votre application qui a répondu à la demande.
-
-
user
— Chaîne identifiant l'utilisateur qui a envoyé la demande. -
origin
— Type de AWS ressource exécutant votre application.Valeurs prises en charge
-
AWS::EC2::Instance
— Une instance Amazon EC2. -
AWS::ECS::Container
— Un conteneur Amazon ECS. -
AWS::ElasticBeanstalk::Environment
— Un environnement Elastic Beanstalk.
Lorsque plusieurs valeurs sont applicables à votre application, utilisez celle qui est la plus spécifique. Par exemple, un environnement Docker Elastic Beanstalk multicontainer exécute votre application sur un conteneur Amazon ECS, qui s'exécute à son tour sur une instance Amazon EC2. Dans ce cas, vous devez définir l'origine sur
AWS::ElasticBeanstalk::Environment
car l'environnement est le parent des deux autres ressources. -
-
parent_id
— Un ID de sous-segment que vous spécifiez si la demande provient d'une application instrumentée. Le SDK X-Ray ajoute l'ID du sous-segment parent à l'en-tête de suivi pour les appels HTTP en aval. Dans le cas de sous-segments imbriqués, un sous-segment peut avoir un segment ou un sous-segment comme parent. -
http
— httpobjets contenant des informations sur la requête HTTP d'origine. -
aws
— awsobjet contenant des informations sur la AWS ressource sur laquelle votre application a envoyé la demande. -
error
,throttle
,fault
, etcause
— champs d'erreur qui indiquent qu'une erreur s'est produite et qui incluent des informations sur l'exception à l'origine de l'erreur. -
annotations
— annotationsobjet avec des paires clé-valeur que vous souhaitez que X-Ray indexe pour la recherche. -
metadata
: metadataobjet contenant toutes les données supplémentaires que vous souhaitez stocker dans le segment. -
subsegments
— ensemble d'subsegmentobjets.
Sous-segments
Vous pouvez créer des sous-segments pour enregistrer les appels Services AWS et les ressources que vous effectuez avec le AWS SDK, les appels vers des API Web HTTP internes ou externes ou les requêtes de base de données SQL. Vous pouvez également créer des sous-segments pour déboguer ou annoter les blocs de code de votre application. Comme les sous-segments peuvent contenir d'autres sous-segments, un sous-segment personnalisé qui enregistre les métadonnées relatives à un appel de fonction interne peut contenir d'autres sous-segments personnalisés et les sous-segments d'appels en aval.
Un sous-segment enregistre un appel en aval du point de vue du service qui l'appelle. X-Ray utilise des sous-segments pour identifier les services en aval qui n'envoient pas de segments et créer des entrées pour eux sur le graphique des services.
Un sous-segment peut être intégré dans un document de segment entier, ou envoyé séparément. Envoyez des sous-segments séparément aux appels en aval de suivi de manière asynchrone pour les demandes de longue durée, ou pour éviter de dépasser la taille du document de segment maximum.
Exemple Segment avec sous-segment intégré
Un sous-segment indépendant possède type
comme subsegment
et un parent_id
qui identifie le segment parent.
{
"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
}
}
}
]
}
Pour les demandes de longue durée, vous pouvez envoyer un segment en cours pour informer X-Ray de la réception de la demande, puis envoyer des sous-segments séparément pour les suivre avant de terminer la demande initiale.
Exemple Segment en cours
{
"name" : "example.com",
"id" : "70de5b6f19ff9a0b",
"start_time" : 1.478293361271E9,
"trace_id" : "1-581cf771-a006649127e371903a2de979",
"in_progress": true
}
Exemple Sous-segment indépendant
Un sous-segment indépendant possède type
comme subsegment
, un trace_id
et un parent_id
qui identifie le segment parent.
{
"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
}
}
}
Lorsque la demande est terminée, fermez le segment en le renvoyant avec un end_time
. Le segment complet remplace le segment en cours.
Vous pouvez également envoyer des sous-segments séparément pour les demandes complètes qui ont déclenché des workflows asynchrones. Par exemple, une API Web peut renvoyer une réponse OK 200
juste avant de démarrer le travail que l'utilisateur demandé. Vous pouvez envoyer un segment complet à X-Ray dès que la réponse est envoyée, suivi de sous-segments pour le travail terminé ultérieurement. Comme pour les segments, vous pouvez aussi envoyer un fragment de sous-segment pour enregistrer le démarrage du sous-segment, puis le remplacer par un sous-segment complet une fois que l'appel en aval est terminé.
Les champs suivants sont obligatoires, ou soumis à condition, pour les sous-segments.
Note
Les valeurs doivent être des chaînes (jusqu'à 250 caractères), sauf mention contraire.
Champs de sous-segment obligatoires
-
id
— Un identifiant de 64 bits pour le sous-segment, unique parmi les segments d'une même trace, en 16 chiffres hexadécimaux. -
name
— Nom logique du sous-segment. Pour les appels en aval, nommez le sous-segment après l'appel de la ressource ou du service. Pour les sous-segments personnalisés, nommez le sous-segment après le code qu'il instrumente (par exemple, un nom de fonction). -
start_time
— nombre correspondant à l'heure à laquelle le sous-segment a été créé, en secondes à virgule flottante par rapport à l'époque, avec une précision de quelques millisecondes. Par exemple,1480615200.010
ou1.480615200010E9
. -
end_time
— numéro correspondant à l'heure à laquelle le sous-segment a été fermé. Par exemple,1480615200.090
ou1.480615200090E9
. Spécifiez uneend_time
ouin_progress
. -
in_progress
— booléen défini surtrue
au lieu de spécifier unend_time
pour enregistrer qu'un sous-segment est démarré, mais qu'il n'est pas terminé. Envoyez uniquement un sous-segment complet, et un ou zéro sous-segment en cours, par demande en aval. -
trace_id
— ID de trace du segment parent du sous-segment. Obligatoire uniquement en cas d'envoi séparé d'un sous-segment.Format d'identification X-Ray Trace
Un X-Ray
trace_id
est composé de trois chiffres séparés par des tirets. Par exemple,1-58406520-a006649127e371903a2de979
. Cela consiste notamment à :-
Le numéro de version, qui est
1
. -
L'heure de la demande d'origine sous Unix Epoch Time en utilisant 8 chiffres hexadécimaux.
Par exemple, le 1er décembre 2016 à 10 h 00 PST est exprimé en
1480615200
secondes ou58406520
en chiffres hexadécimaux. -
Identifiant 96 bits unique au monde pour la trace en 24 chiffres hexadécimaux.
Note
X-Ray prend désormais en charge les identifiants de trace créés à OpenTelemetry l'aide de tout autre framework conforme à la spécification W3C Trace Context
. Un ID de trace W3C doit être formaté au format X-Ray Trace ID lors de son envoi à X-Ray. Par exemple, l'ID de trace du W3C 4efaaf4d1e8720b39541901950019ee5
doit être formaté comme1-4efaaf4d-1e8720b39541901950019ee5
lorsqu'il est envoyé à X-Ray. Les identifiants de trace X-Ray incluent l'horodatage de la demande d'origine à l'époque Unix, mais cela n'est pas obligatoire lors de l'envoi des identifiants de trace du W3C au format X-Ray. -
-
parent_id
— ID de segment du segment parent du sous-segment. Obligatoire uniquement en cas d'envoi séparé d'un sous-segment. Dans le cas de sous-segments imbriqués, un sous-segment peut avoir un segment ou un sous-segment comme parent. -
type
—subsegment
. Obligatoire uniquement si vous envoyez un sous-segment séparément.
Les champs suivants sont facultatifs pour les sous-segments.
Champs de sous-segment facultatifs
-
namespace
—aws
pour les appels du SDK AWS ;remote
pour les autres appels en aval. -
http
— httpobjet contenant des informations relatives à un appel HTTP sortant. -
aws
: awsobjet contenant des informations sur la AWS ressource en aval appelée par votre application. -
error
,throttle
,fault
, etcause
— champs d'erreur qui indiquent qu'une erreur s'est produite et qui incluent des informations sur l'exception à l'origine de l'erreur. -
annotations
— annotationsobjet avec des paires clé-valeur que vous souhaitez que X-Ray indexe pour la recherche. -
metadata
: metadataobjet contenant toutes les données supplémentaires que vous souhaitez stocker dans le segment. -
subsegments
— ensemble d'subsegmentobjets. -
precursor_ids
— tableau d'identifiants de sous-segments identifiant les sous-segments ayant le même parent que ceux terminés avant ce sous-segment.
Données de demande HTTP
Utilisez un bloc HTTP pour enregistrer les détails relatifs à une demande HTTP que votre application a servie (dans un segment) ou que votre application a effectuée auprès d'une API HTTP en aval (dans un sous-segment). La plupart des champs de cet objet correspondent aux informations disponibles dans une demande et une réponse HTTP.
http
Tous les champs sont facultatifs.
-
request
— Informations relatives à une demande.-
method
— La méthode de demande. Par exemple,GET
. -
url
— L'URL complète de la demande, compilée à partir du protocole, du nom d'hôte et du chemin de la demande. -
user_agent
— La chaîne d'agent utilisateur du client du demandeur. -
client_ip
— L'adresse IP du demandeur. Peut être récupérée depuis laSource Address
du paquet IP ou, pour les demandes acheminées, à partir d'un en-têteX-Forwarded-For
. -
x_forwarded_for
— (segments uniquement) booléen indiquant que leclient_ip
a été lu à partir d'unX-Forwarded-For
en-tête et qu'il n'est pas fiable car il aurait pu être falsifié. -
traced
— (sous-segments uniquement) booléen indiquant que l'appel en aval est destiné à un autre service suivi. Si ce champ est défini surtrue
, X-Ray considère que la trace est interrompue jusqu'à ce que le service en aval télécharge un segment dont leparent_id
nom correspond à celuiid
du sous-segment contenant ce bloc.
-
-
response
— Informations relatives à une réponse.-
status
— entier indiquant le statut HTTP de la réponse. -
content_length
— entier indiquant la longueur du corps de la réponse en octets.
-
Lorsque vous instrumentez un appel à une API Web en aval, enregistrez un sous-segment contenant des informations sur la requête et la réponse HTTP. X-Ray utilise le sous-segment pour générer un segment inféré pour l'API distante.
Exemple Segmentation pour un appel HTTP servi par une application s'exécutant sur Amazon EC2
{
"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
}
}
Exemple Sous-segment pour un appel HTTP en aval
{
"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
}
}
}
Exemple Segment déduit pour un appel HTTP en aval
{
"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
}
Annotations
Les segments et sous-segments peuvent inclure un annotations
objet contenant un ou plusieurs champs indexés par X-Ray afin de les utiliser avec des expressions de filtre. Les champs peuvent avoir des valeurs de type chaîne, numérique ou booléen (ni objet ni tableau). X-Ray indexe jusqu'à 50 annotations par trace.
Exemple Segment pour appel HTTP avec annotations
{
"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
}
}
Les clés doivent être au format alphanumérique pour fonctionner avec les filtres. Les traits de soulignement sont autorisés. Les autres symboles et les espaces ne sont pas autorisés.
Metadonnées
Les segments et sous-segments peuvent inclure un metadata
objet contenant un ou plusieurs champs avec des valeurs de n'importe quel type, y compris des objets et des tableaux. X-Ray n'indexe pas les métadonnées et les valeurs peuvent être de n'importe quelle taille, tant que le document segmenté ne dépasse pas la taille maximale (64 kB). Vous pouvez consulter les métadonnées dans le document de segment complet retourné par l'API BatchGetTraces
. Les clés de champ (debug
dans l'exemple suivant) commençant par AWS.
sont réservées aux SDK et aux clients AWS fournis.
Exemple Sous-segment personnalisé avec métadonnées
{
"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"
]
}
}
]
}
AWS données sur les ressources
Pour les segments, l'objet aws
contient les informations relatives à la ressource sur laquelle votre application est en cours d'exécution. Plusieurs champs peuvent s'appliquer à une même ressource. Par exemple, une application exécutée dans un environnement Docker multiconteneur sur Elastic Beanstalk peut contenir des informations sur l'instance Amazon EC2, le conteneur Amazon ECS exécuté sur l'instance et l'environnement Elastic Beanstalk lui-même.
aws
(Segments)
Tous les champs sont facultatifs.
-
account_id
— Si votre application envoie des segments à un autre Compte AWS, enregistrez l'identifiant du compte qui exécute votre application. -
cloudwatch_logs
— Tableau d'objets décrivant un seul groupe de CloudWatch logs.-
log_group
— Le nom du groupe de CloudWatch journaux. -
arn
— L'ARN du groupe de CloudWatch logs.
-
-
ec2
— Informations sur une instance Amazon EC2.-
instance_id
— L'ID d'instance de l'instance EC2. -
instance_size
— Type d'instance EC2. -
ami_id
— L'identifiant Amazon Machine Image. -
availability_zone
— La zone de disponibilité dans laquelle l'instance est exécutée.
-
-
ecs
— Informations sur un conteneur Amazon ECS.-
container
— Le nom d'hôte de votre conteneur. -
container_id
— L'identifiant complet de votre conteneur. -
container_arn
— L'ARN de votre instance de conteneur.
-
-
eks
— Informations sur un cluster Amazon EKS.-
pod
— Le nom d'hôte de votre pod EKS. -
cluster_name
— Le nom du cluster EKS. -
container_id
— L'identifiant complet de votre conteneur.
-
-
elastic_beanstalk
— Informations sur un environnement Elastic Beanstalk. Vous trouverez ces informations dans un fichier nommé/var/elasticbeanstalk/xray/environment.conf
sur les dernières plateformes Elastic Beanstalk.-
environment_name
: Nom de l'environnement. -
version_label
— Nom de la version de l'application actuellement déployée sur l'instance qui a répondu à la demande. -
deployment_id
— numéro indiquant l'ID du dernier déploiement réussi sur l'instance qui a répondu à la demande.
-
-
xray
— Des métadonnées sur le type et la version de l'instrumentation utilisée.-
auto_instrumentation
— Booléen indiquant si l'instrumentation automatique a été utilisée (par exemple, l'agent Java). -
sdk_version
— Version du SDK ou de l'agent utilisé. -
sdk
— Le type de SDK.
-
Exemple AWS bloc avec plugins
"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"
}
}
Pour les sous-segments, enregistrez les informations relatives aux ressources Services AWS et aux ressources auxquelles votre application accède. X-Ray utilise ces informations pour créer des segments déduits qui représentent les services en aval dans votre carte des services.
aws
(Sous-segments)
Tous les champs sont facultatifs.
-
operation
— Le nom de l'action d'API invoquée contre une ressource Service AWS or. -
account_id
— Si votre application accède aux ressources d'un autre compte ou envoie des segments vers un autre compte, enregistrez l'ID du compte propriétaire de la AWS ressource à laquelle votre application a accédé. -
region
— Si la ressource se trouve dans une région différente de celle de votre application, enregistrez la région. Par exemple,us-west-2
. -
request_id
— Identifiant unique de la demande. -
queue_url
— Pour les opérations sur une file d'attente Amazon SQS, l'URL de la file d'attente. -
table_name
— Pour les opérations sur une table DynamoDB, nom de la table.
Exemple Sous-segment pour un appel à DynamoDB pour enregistrer un élément
{
"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",
}
}
Erreurs et exceptions
Lorsqu'une erreur se produit, vous pouvez enregistrer les détails de l'erreur et les exceptions qui ont été générées. Enregistrez les erreurs dans les segments lorsque votre application renvoie une erreur à l'utilisateur et dans les sous-segments lorsqu'un appel en aval renvoie une erreur.
types d'erreur
Définissez un ou plusieurs des champs suivants sur true
pour indiquer qu'une erreur s'est produite. Plusieurs types peuvent s'appliquer en cas d'erreurs composites. Par exemple, une erreur 429 Too Many Requests
d'un appel en aval peut contraindre votre application à renvoyer 500 Internal Server Error
, auquel cas les trois types s'appliquent.
-
error
— booléen indiquant qu'une erreur client s'est produite (le code d'état de la réponse était 4XX Client Error). -
throttle
— booléen indiquant qu'une demande a été limitée (le code d'état de la réponse était 429 demandes trop nombreuses). -
fault
— booléen indiquant qu'une erreur de serveur s'est produite (le code d'état de réponse était 5XX Server Error).
Indiquez la cause de l'erreur en incluant un objet cause dans le segment ou le sous-segment.
cause
Une cause peut être un ID d'exception sur 16 caractères ou un objet avec les champs suivants :
-
working_directory
— Le chemin complet du répertoire de travail lorsque l'exception s'est produite. -
paths
— Le tableau des chemins d'accès aux bibliothèques ou aux modules utilisés lorsque l'exception s'est produite. -
exceptions
— Le tableau des objets d'exception.
Incluez les informations détaillées sur l'erreur dans un ou plusieurs objets exception.
exception
Tous les champs sont facultatifs.
-
id
— Un identifiant de 64 bits pour l'exception, unique parmi les segments d'une même trace, en 16 chiffres hexadécimaux. -
message
— Le message d'exception. -
type
— Type d'exception. -
remote
— booléen indiquant que l'exception a été provoquée par une erreur renvoyée par un service en aval. -
truncated
— entier indiquant le nombre de cadres de pile qui sont omis dans lestack
. -
skipped
— entier indiquant le nombre d'exceptions ignorées entre cette exception et son enfant, c'est-à-dire l'exception qu'elle a provoquée. -
cause
— ID d'exception du parent de l'exception, c'est-à-dire de l'exception à l'origine de cette exception. -
stack
— tableau d'objets StackFrame.
Le cas échéant, enregistrez les informations relatives à la pile des appels dans les objets stackFrame.
stackFrame
Tous les champs sont facultatifs.
-
path
— Le chemin relatif du fichier. -
line
— La ligne du fichier. -
label
— Le nom de la fonction ou de la méthode.
Requêtes SQL
Vous pouvez créer des sous-segments pour les requêtes que votre application effectue auprès d'une base de données SQL.
sql
Tous les champs sont facultatifs.
-
connection_string
— Pour les connexions à SQL Server ou à d'autres bases de données qui n'utilisent pas de chaînes de connexion URL, enregistrez la chaîne de connexion, à l'exception des mots de passe. -
url
— Pour une connexion à une base de données utilisant une chaîne de connexion URL, enregistrez l'URL, à l'exception des mots de passe. -
sanitized_query
— La requête de base de données, avec toutes les valeurs fournies par l'utilisateur supprimées ou remplacées par un espace réservé. -
database_type
— Nom du moteur de base de données. -
database_version
— Numéro de version du moteur de base de données. -
driver_version
— Le nom et le numéro de version du pilote du moteur de base de données utilisé par votre application. -
user
— Nom d'utilisateur de la base de données. -
preparation
—call
si la requête a utilisé unPreparedCall
;statement
si la requête a utiliséPreparedStatement
a.
Exemple Sous-segment avec une requête SQL
{
"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=?;"
}
}