Esquema de almacenamiento para los datos de registro

En este documento, se describe el formato en el que se almacenan los intervalos de seguimiento. El formato de los datos suele ser coherente con los archivos .proto definidos por el protocolo OTLP de OpenTelemetry. Sin embargo, los campos se pueden convertir de un tipo de datos específico de OpenTelemetry a un tipo de datos JSON antes del almacenamiento.

La API de Telemetry usa el protocolo OTLP de OpenTelemetry. Este protocolo se basa en los archivos trace_service.proto y trace.proto. Para obtener información sobre los límites de los campos, consulta Límites de la API de Telemetry.

La API de Cloud Trace no usa el protocolo OTLP de OpenTelemetry y define un formato de datos propietario. Los datos de seguimiento que se envían a tu proyecto Google Cloud a través de esta API se convierten al formato que se describe en este documento. Sin embargo, se aplican los límites de la API de Cloud Trace.

Formato de almacenamiento de tramos

Campo Descripción
trace_id

string

Identificador único a nivel global del registro de seguimiento. Este identificador es un valor numérico de 128 bits con formato de cadena hexadecimal de 16 bytes. Por ejemplo, 382d4f4c6b7bb2f4a972559d9085001d. Para obtener más información sobre este identificador, consulta W3C trace-id.

No se acepta un valor numérico de cero.

Las herramientas de visualización y análisis usan el trace_id para identificar los intervalos asociados con un registro. Por este motivo, cada operación de extremo a extremo debe tener un identificador único. No reutilices un identificador de seguimiento.

span_id

string

Obligatorio. Identificador del intervalo. Debe ser único dentro de un registro. Este identificador es un valor numérico de 64 bits con formato de cadena hexadecimal de 8 bytes. Por ejemplo, 9046a5b9f7c12500

No se acepta un valor numérico de cero.

trace_state

string

Este campo corresponde al encabezado tracestate, según se define en el contexto de seguimiento de W3C. Este encabezado contiene información de configuración que se incluye en las solicitudes cuando las aplicaciones se instrumentan para recopilar datos de seguimiento. Por ejemplo, una aplicación puede especificar la configuración del muestreo probabilístico o incluir contenido específico del proveedor.

Las bibliotecas de OpenTelemetry registran automáticamente el valor del encabezado tracestate cuando generan intervalos.

parent_span_id

string

Es opcional. Identifica la operación que invocó este intervalo. El intervalo "raíz" tiene el ID del intervalo principal establecido como nulo.

Las herramientas de visualización utilizan la relación principal-secundaria entre los intervalos para construir la estructura de árbol.

name

string

Obligatorio. Nombre de la operación que se realizó.

El nombre puede ser el de un método o algún otro nombre del sitio por llamada. Para el mismo ejecutable y el mismo extremo, usar un nombre coherente facilita la correlación de los intervalos entre los registros. Para conocer las prácticas recomendadas, consulta Cómo nombrar tus intervalos.

El nombre del tramo se limpia y se muestra en la consola de Google Cloud .

kind

integer

Especifica en qué parte del sistema se llevó a cabo la operación. El valor corresponde a la enumeración OpenTelemetry: Span Kind:

ValorEnumeración de OpenTelemetry
0SPAN_KIND_UNSPECIFIED
1SPAN_KIND_INTERNAL
2SPAN_KIND_SERVER
3SPAN_KIND_CLIENT
4SPAN_KIND_PRODUCER
5SPAN_KIND_CONSUMER
start_time

Timestamp

Obligatorio. Hora de inicio del período, expresada en nanosegundos.

start_time_unix_nano

integer

Hora de inicio en nanosegundos, según la época de UNIX.

end_time

Timestamp

Obligatorio. Es la fecha y hora de finalización del período, expresada en nanosegundos.

end_time_unix_nano

integer

Es la hora de finalización en nanosegundos, según la época de UNIX.

receive_time

Timestamp

Obligatorio. Es la hora de recepción del intervalo, expresada en nanosegundos.

receive_time_unix_nano

integer

Es la hora de finalización en nanosegundos, según la época de UNIX.

duration_unix_nano

integer

Es la duración en nanosegundos.

attributes

JSON type

Cada atributo es un par clave-valor. Los atributos disponibles para ti dependen de tus datos de seguimiento. La estructura de los atributos sigue el estándar de OpenTelemetry. Para obtener más información, consulta OpenTelemetry: Attributes (OpenTelemetry: Atributos).

OpenTelemetry especifica convenciones semánticas para los atributos. Para obtener más información sobre estas convenciones, consulta Convenciones semánticas de seguimiento.

A continuación, se muestran ejemplos de atributos:

"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

Es la cantidad de atributos que se descartaron. Los atributos se pueden descartar porque sus claves son demasiado largas o porque hay demasiados atributos. Cuando este valor es cero, no se descartó ningún atributo.

Este valor lo puede establecer la instrumentación del cliente o una aplicación. El servidor puede incrementar el valor.

events

record con campos repetidos

Es un evento de un momento determinado. Cada evento contiene los siguientes campos.

CampoDescripción
time

Timestamp

time_unix_nano

integer

name

string

Obligatorio. Nombre del evento.

attributes

JSON type

Cada atributo es un par clave-valor. Los atributos disponibles para ti dependen de tus datos de seguimiento. La estructura de los atributos sigue el estándar de OpenTelemetry. Para obtener más información, consulta OpenTelemetry: Attributes (OpenTelemetry: Atributos).

dropped_attributes_count

integer

Es la cantidad de atributos que se descartaron. Los atributos se pueden descartar porque sus claves son demasiado largas o porque hay demasiados atributos. Cuando este valor es cero, no se descartó ningún atributo.

Este valor lo puede establecer la instrumentación del cliente o una aplicación. El servidor puede incrementar el valor.

dropped_events_count

integer

Es la cantidad de eventos que se descartaron. Se pueden descartar eventos porque hay demasiados. Cuando este valor es cero, no se descartó ningún evento.

status

record sin campos repetidos

En este campo, se registra el estado de finalización de un intervalo. El valor del subcampo code corresponde a la enumeración OpenTelemetry: Estado del intervalo:

ValorEnumeración de OpenTelemetry
Descripción
0 UNSET La operación se completó correctamente.
1 OK Un humano marcó la operación como libre de errores.
2 ERROR La operación se completó con un error. Por ejemplo, si el estado es 400 (BAD REQUEST) en un intervalo del cliente, este campo se establece en ERROR.

El subcampo message, que tiene el formato de una cadena, contiene información sobre el error.

resource

record sin campos repetidos

Este campo identifica el sistema de infraestructura o alojamiento desde el que se recopiló la telemetría o sobre el que trata la telemetría. Por ejemplo, considera una aplicación que se ejecuta en Google Kubernetes Engine. Los atributos de este recurso pueden incluir el nombre del proceso y el espacio de nombres.

Este campo contiene los siguientes subcampos:

CampoDescripción
attributes

JSON type

Cada atributo es un par clave-valor. Los atributos disponibles para ti dependen de tus datos de seguimiento. La estructura de los atributos sigue el estándar de OpenTelemetry. Para obtener más información, consulta OpenTelemetry: Attributes (OpenTelemetry: Atributos).

A continuación, se muestran ejemplos de atributos de recursos:

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

Es la cantidad de atributos que se descartaron. Los atributos se pueden descartar porque sus claves son demasiado largas o porque hay demasiados atributos. Cuando este valor es cero, no se descartó ningún atributo.

Este valor lo puede establecer la instrumentación del cliente o una aplicación. El servidor puede incrementar el valor.

Para obtener más información, consulta OpenTelemetry: Recursos.

instrumentation_scope

record sin campos repetidos

Este campo identifica el componente de la biblioteca o la aplicación para el resource especificado que recopila datos de telemetría. El tramo representa una operación específica que pasa por ese alcance, es decir, por la biblioteca o el componente, dentro del recurso.

Por ejemplo, supongamos que la aplicación "checkout-service" se implementa en Cloud Run, lo que significa que resource es una instancia específica de Cloud Run. Además, supón que el recurso tiene varios alcances de instrumentación, como "request-authorization-library" y "payment-processor-library".

Un intervalo de cliente, como "WritePaymentInfoToStripe", podría ser un intervalo del que informa la "biblioteca de procesador de pagos", que se encuentra dentro del servicio de Cloud Run llamado "checkout-service".

Este campo contiene los siguientes subcampos:

CampoDescripción
name

string

version

string

attributes

JSON type

Cada atributo es un par clave-valor. Los atributos disponibles para ti dependen de tus datos de seguimiento. La estructura de los atributos sigue el estándar de OpenTelemetry. Para obtener más información, consulta OpenTelemetry: Attributes (OpenTelemetry: Atributos).

dropped_attributes_count

integer

Es la cantidad de atributos que se descartaron. Los atributos se pueden descartar porque sus claves son demasiado largas o porque hay demasiados atributos. Cuando este valor es cero, no se descartó ningún atributo.

Este valor lo puede establecer la instrumentación del cliente o una aplicación. El servidor puede incrementar el valor.

Para obtener más información, consulta OpenTelemetry: Ámbito de la instrumentación.

resource_schema_link

string

Estos campos deben ser una URL con formato de cadena.

Estos campos contienen una URL que devuelve un archivo de esquema para un recurso. OpenTelemetry define el formato del archivo de esquema y los datos. Para obtener más información, consulta OpenTelemetry: Esquemas.

Estos campos solo se pueden configurar cuando se usa la API de Telemetry. Esa API no valida que los datos se ajusten al esquema declarado.

scope_schema_link

string

Estos campos deben ser una URL con formato de cadena.

Estos campos contienen una URL que devuelve un archivo de esquema para un alcance. OpenTelemetry define el formato del archivo de esquema y los datos. Para obtener más información, consulta OpenTelemetry: Esquemas.

Estos campos solo se pueden configurar cuando se usa la API de Telemetry. Esa API no valida que los datos se ajusten al esquema declarado.

apphub

record sin campos repetidos

Las etiquetas específicas de la aplicación están disponibles cuando las aplicaciones de App Hub generan intervalos de seguimiento, cuando esas aplicaciones se ejecutan en la infraestructura compatible o cuando se instrumentaron. Para obtener más información sobre la Supervisión de la aplicación y cuándo están disponibles estas etiquetas, consulta la Descripción general de la Supervisión de la aplicación.

Este campo contiene los subcampos application, service y workload.

Subcampo de la aplicaciónDescripción
container

string

location

string

id

string

Subcampo de servicio o carga de trabajo
Descripción
id

string

environment_type

string

criticality_type

string