Schéma de stockage des données de trace

Ce document décrit le format dans lequel les étendues de trace sont stockées. Le format des données est généralement conforme aux fichiers proto définis par le protocole OTLP OpenTelemetry. Toutefois, les champs peuvent être convertis d'un type de données spécifique à OpenTelemetry en type de données JSON avant d'être stockés.

L'API Telemetry utilise le protocole OpenTelemetry OTLP. Ce protocole repose sur les fichiers trace_service.proto et trace.proto. Pour en savoir plus sur les limites de champs, consultez Limites de l'API Telemetry.

L'API Cloud Trace n'utilise pas le protocole OTLP OpenTelemetry et définit un format de données propriétaire. Les données de trace envoyées à votre projet Google Cloud via cette API sont converties au format décrit dans ce document. Toutefois, les limites de l'API Cloud Trace s'appliquent.

Format de stockage des étendues

Champ Description
trace_id

string

Identifiant global unique de la trace. Cet identifiant est une valeur numérique de 128 bits au format d'une chaîne hexadécimale de 16 octets. Exemple : 382d4f4c6b7bb2f4a972559d9085001d. Pour en savoir plus sur cet identifiant, consultez W3C trace-id.

Une valeur numérique égale à zéro n'est pas valide.

L'trace_id est utilisé par les outils de visualisation et d'analyse pour identifier les portées associées à une trace. C'est pourquoi chaque opération de bout en bout doit avoir un identifiant unique. Ne réutilisez pas d'identifiant de trace.

span_id

string

Obligatoire. Identifiant de la span. Doit être unique dans une trace. Cet identifiant est une valeur numérique de 64 bits mise en forme sous la forme d'une chaîne hexadécimale de 8 octets. Exemple :9046a5b9f7c12500

Une valeur numérique égale à zéro n'est pas valide.

trace_state

string

Ce champ correspond à l'en-tête tracestate, tel que défini par le contexte de trace W3C. Cet en-tête contient des informations de configuration incluses dans les requêtes lorsque les applications sont instrumentées pour collecter des données de trace. Par exemple, une application peut spécifier les paramètres d'échantillonnage probabiliste ou inclure du contenu spécifique à un fournisseur.

Les bibliothèques OpenTelemetry enregistrent automatiquement la valeur de l'en-tête tracestate lorsqu'elles génèrent des spans.

parent_span_id

string

Facultatif. Identifie l'opération qui a appelé cette étendue. L'ID du délai parent du délai "racine" est défini sur "null".

La relation parent-enfant entre les portées est utilisée par les outils de visualisation pour construire la structure arborescente.

name

string

Obligatoire. Nom de l'opération effectuée.

Il peut s'agir d'un nom de méthode ou d'un autre nom de site par appel. Pour le même exécutable et le même point de terminaison, l'utilisation d'un nom cohérent facilite la corrélation des spans de trace croisés. Pour connaître les bonnes pratiques, consultez Nommer vos spans.

Le nom de la portée est nettoyé et affiché dans la console Google Cloud .

kind

integer

Indique l'emplacement de l'opération dans le système. La valeur correspond à l'énumération OpenTelemetry : type de span :

ValeurÉnumération OpenTelemetry
0SPAN_KIND_UNSPECIFIED
1SPAN_KIND_INTERNAL
2SPAN_KIND_SERVER
3SPAN_KIND_CLIENT
4SPAN_KIND_PRODUCER
5SPAN_KIND_CONSUMER
start_time

Timestamp

Obligatoire. Heure de début de la période, à la nanoseconde près.

start_time_unix_nano

integer

Heure de début en nanosecondes, selon l'epoch UNIX.

end_time

Timestamp

Obligatoire. Heure de fin de la période, à la nanoseconde près.

end_time_unix_nano

integer

Heure de fin en nanosecondes, selon l'epoch UNIX.

receive_time

Timestamp

Obligatoire. Recevez la durée de la période, à la nanoseconde près.

receive_time_unix_nano

integer

Heure de fin en nanosecondes, selon l'epoch UNIX.

duration_unix_nano

integer

Durée en nanosecondes.

attributes

JSON type

Chaque attribut est une paire clé/valeur. Les attributs disponibles dépendent de vos données de trace. La structure des attributs suit la norme OpenTelemetry. Pour en savoir plus, consultez OpenTelemetry : Attributs.

OpenTelemetry spécifie des conventions sémantiques pour les attributs. Pour en savoir plus sur ces conventions, consultez Conventions sémantiques pour les traces.

Voici quelques exemples d'attributs :

"yourcompany.your.own.key": "your own value"
"network.protocol.name": "http"
"network.protocol.version": "1.1"
"http.response.status_code": "200"
"network.peer.address": "REDACTED"
dropped_attributes_count

integer

Nombre d'attributs supprimés. Les attributs peuvent être supprimés si leurs clés sont trop longues ou s'il y a trop d'attributs. Lorsque cette valeur est égale à zéro, aucun attribut n'a été supprimé.

Cette valeur peut être définie par l'instrumentation côté client ou par une application. La valeur peut être incrémentée par le serveur.

events

record avec des champs répétés

Événement ponctuel. Chaque événement contient les champs suivants.

ChampDescription
time

Timestamp

time_unix_nano

integer

name

string

Obligatoire. Nom de l'événement.

attributes

JSON type

Chaque attribut est une paire clé/valeur. Les attributs disponibles dépendent de vos données de trace. La structure des attributs suit la norme OpenTelemetry. Pour en savoir plus, consultez OpenTelemetry : Attributs.

dropped_attributes_count

integer

Nombre d'attributs supprimés. Les attributs peuvent être supprimés si leurs clés sont trop longues ou s'il y a trop d'attributs. Lorsque cette valeur est égale à zéro, aucun attribut n'a été supprimé.

Cette valeur peut être définie par l'instrumentation côté client ou par une application. La valeur peut être incrémentée par le serveur.

dropped_events_count

integer

Nombre d'événements supprimés. Les événements peuvent être supprimés, car il y en a trop. Lorsque cette valeur est égale à zéro, aucun événement n'a été supprimé.

status

record sans champs répétés

Ce champ enregistre l'état d'achèvement d'un segment. La valeur du sous-champ code correspond à l'énumération OpenTelemetry : état de la portée :

ValeurÉnumération OpenTelemetry
Description
0 UNSET L'opération a bien été effectuée.
1 OK L'opération a été marquée comme exempte d'erreurs par un humain.
2 ERROR L'opération s'est terminée avec une erreur. Par exemple, si l'état est 400 (BAD REQUEST) sur une portée client, ce champ est défini sur ERROR.

Le sous-champ message, qui est mis en forme sous forme de chaîne, contient des informations sur les erreurs.

resource

record sans champs répétés

Ce champ identifie l'infrastructure ou le système d'hébergement à partir duquel les données de télémétrie ont été collectées ou auxquelles elles se rapportent. Par exemple, prenons l'exemple d'une application exécutée sur Google Kubernetes Engine. Les attributs de cette ressource peuvent inclure le nom du processus et l'espace de noms.

Ce champ contient les sous-champs suivants :

ChampDescription
attributes

JSON type

Chaque attribut est une paire clé/valeur. Les attributs disponibles dépendent de vos données de trace. La structure des attributs suit la norme OpenTelemetry. Pour en savoir plus, consultez OpenTelemetry : Attributs.

Voici des exemples d'attributs de ressources :

cloud.account.id: "my-project"
cloud.platform: "gcp_kubernetes_engine"
cloud.provider: "gcp"
cloud.region: "us-central1"
gcp.project_id: "my-project"
host.id: "REDACTED"
host.name: "gke-otel-demo"
k8s.cluster.name: "otel-demo"
k8s.deployment.name: "otel-demo-frontendproxy"
dropped_attributes_count

integer

Nombre d'attributs supprimés. Les attributs peuvent être supprimés si leurs clés sont trop longues ou s'il y a trop d'attributs. Lorsque cette valeur est égale à zéro, aucun attribut n'a été supprimé.

Cette valeur peut être définie par l'instrumentation côté client ou par une application. La valeur peut être incrémentée par le serveur.

Pour en savoir plus, consultez OpenTelemetry : ressources.

instrumentation_scope

record sans champs répétés

Ce champ identifie la bibliothèque ou le composant d'application pour le resource spécifié qui collecte la télémétrie. La portée représente une opération spécifique qui passe par cette portée, c'est-à-dire par la bibliothèque ou le composant, dans la ressource.

Par exemple, supposons que l'application "checkout-service" soit déployée sur Cloud Run, ce qui signifie que resource est une instance Cloud Run spécifique. Supposons également que la ressource comporte plusieurs étendues d'instrumentation, comme "request-authorization-library" et "payment-processor-library".

Une portée client, comme "WritePaymentInfoToStripe", peut être une portée signalée par la "payment-processor-library", qui se trouve dans le service Cloud Run nommé "checkout-service".

Ce champ contient les sous-champs suivants :

ChampDescription
name

string

version

string

attributes

JSON type

Chaque attribut est une paire clé/valeur. Les attributs disponibles dépendent de vos données de trace. La structure des attributs suit la norme OpenTelemetry. Pour en savoir plus, consultez OpenTelemetry : Attributs.

dropped_attributes_count

integer

Nombre d'attributs supprimés. Les attributs peuvent être supprimés si leurs clés sont trop longues ou s'il y a trop d'attributs. Lorsque cette valeur est égale à zéro, aucun attribut n'a été supprimé.

Cette valeur peut être définie par l'instrumentation côté client ou par une application. La valeur peut être incrémentée par le serveur.

Pour en savoir plus, consultez OpenTelemetry : champ d'application de l'instrumentation.

resource_schema_link

string

Ces champs doivent être des URL au format chaîne.

Ces champs contiennent une URL qui renvoie un fichier de schéma pour une ressource. Le format du fichier de schéma et des données est défini par OpenTelemetry. Pour en savoir plus, consultez OpenTelemetry : Schémas.

Ces champs ne peuvent être définis que lorsque vous utilisez l'API Telemetry. Cette API ne valide pas la conformité des données au schéma déclaré.

scope_schema_link

string

Ces champs doivent être des URL au format chaîne.

Ces champs contiennent une URL qui renvoie un fichier de schéma pour un champ d'application. Le format du fichier de schéma et des données est défini par OpenTelemetry. Pour en savoir plus, consultez OpenTelemetry : Schémas.

Ces champs ne peuvent être définis que lorsque vous utilisez l'API Telemetry. Cette API ne valide pas la conformité des données au schéma déclaré.

apphub

record sans champs répétés

Les libellés spécifiques aux applications sont disponibles lorsque les spans de trace sont générés par les applications App Hub, lorsque ces applications s'exécutent sur une infrastructure compatible ou ont été instrumentées. Pour en savoir plus sur la surveillance des applications et sur la disponibilité de ces libellés, consultez la présentation de la surveillance des applications.

Ce champ contient les sous-champs application, service et workload.

Sous-champ d'applicationDescription
container

string

location

string

id

string

Sous-champ "Service/charge de travail"
Description
id

string

environment_type

string

criticality_type

string