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 de línea de OpenTelemetry. Sin embargo, es posible que los campos se conviertan 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 de línea 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 intervalos
| Campo | Descripción | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
trace_id |
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, Un valor numérico de cero no es válido. Las herramientas de visualización y análisis usan el |
||||||||||||||||
span_id |
Obligatorio. Es el 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, Un valor numérico de cero no es válido. |
||||||||||||||||
trace_state |
Este campo corresponde al encabezado Las bibliotecas de OpenTelemetry registran automáticamente el valor del encabezado |
||||||||||||||||
parent_span_id |
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 |
Obligatorio. Es el nombre de la operación que se realizó. El nombre puede ser el de un método o algún otro nombre de 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 |
Especifica en qué parte del sistema se llevó a cabo la operación. El valor corresponde a la enumeración OpenTelemetry: Span Kind:
|
||||||||||||||||
start_time |
Obligatorio. Hora de inicio del intervalo, expresada en nanosegundos. |
||||||||||||||||
start_time_unix_nano |
Es la hora de inicio en nanosegundos, según la época de UNIX. |
||||||||||||||||
end_time |
Obligatorio. Hora de finalización del intervalo, expresada en nanosegundos más cercanos. |
||||||||||||||||
end_time_unix_nano |
Es la hora de finalización en nanosegundos, según la época de UNIX. |
||||||||||||||||
receive_time |
Obligatorio. Es la hora de recepción del intervalo, expresada en nanosegundos. |
||||||||||||||||
receive_time_unix_nano |
Es la hora de finalización en nanosegundos, según la época de UNIX. |
||||||||||||||||
duration_unix_nano |
Es la duración en nanosegundos. |
||||||||||||||||
attributes |
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 |
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 |
Es un evento de un momento determinado. Cada evento contiene los siguientes campos.
|
||||||||||||||||
dropped_events_count |
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. |
||||||||||||||||
links |
Vínculos asociados con el intervalo. Los vínculos son referencias de este intervalo a otro intervalo en el mismo registro o en uno diferente. Los vínculos proporcionan un mecanismo para correlacionar los tramos de un registro con los tramos de otro registro. Por ejemplo, supongamos que una operación provoca una operación asíncrona. En esta situación, hay dos registros, uno para la operación original y otro para la operación asíncrona. Puedes usar vínculos para correlacionar los intervalos en estos registros. Cada vínculo contiene los siguientes campos.
|
||||||||||||||||
dropped_links_count |
Es la cantidad de vínculos que se descartaron. Se pueden descartar vínculos porque hay demasiados. Cuando este valor es cero, no se descartaron vínculos. |
||||||||||||||||
status |
En este campo, se registra el estado de finalización de un intervalo.
El valor del subcampo
El subcampo |
||||||||||||||||
resource |
Este campo identifica la infraestructura o el sistema de hosting 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 y el espacio de nombres del proceso. Este campo contiene los siguientes subcampos:
Para obtener más información, consulta OpenTelemetry: Recursos. |
||||||||||||||||
instrumentation_scope |
Este campo identifica el componente de la biblioteca o la aplicación para el Por ejemplo, supongamos que la aplicación "checkout-service" se implementa en Cloud Run, lo que significa que Un intervalo de cliente, como "WritePaymentInfoToStripe", podría ser un intervalo 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:
Para obtener más información, consulta OpenTelemetry: Ámbito de la instrumentación. |
||||||||||||||||
resource_schema_link |
Estos campos deben ser URLs 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 |
Estos campos deben ser URLs 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 |
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
|