Esquema de armazenamento para dados de rastreamento

Este documento descreve o formato em que os intervalos de rastreamento são armazenados. O formato dos dados geralmente é consistente com os arquivos proto definidos pelo protocolo OTLP do OpenTelemetry. No entanto, os campos podem ser convertidos de um tipo de dados específico do OpenTelemetry para um tipo de dados JSON antes do armazenamento.

A API Telemetry usa o protocolo OTLP do OpenTelemetry. Esse protocolo depende dos arquivos trace_service.proto e trace.proto. Para informações sobre limites de campo, consulte Limites da API Telemetry.

A API Cloud Trace não usa o protocolo OTLP do OpenTelemetry e define um formato de dados proprietário. Os dados de rastreamento enviados ao seu projeto Google Cloud pela API são convertidos para o formato descrito neste documento. No entanto, os limites da API Cloud Trace se aplicam.

Formato de armazenamento de extensão

Campo Descrição
trace_id

string

Identificador globalmente exclusivo do trace. Esse identificador é um valor numérico de 128 bits formatado como uma string hexadecimal de 16 bytes. Por exemplo, 382d4f4c6b7bb2f4a972559d9085001d. Para saber mais sobre esse identificador, consulte W3C trace-id.

Um valor numérico de zero é inválido.

O trace_id é usado por ferramentas de visualização e análise para identificar os intervalos associados a um rastreamento. Por isso, cada operação de ponta a ponta precisa ter um identificador exclusivo. Não reutilize um identificador de rastreamento.

span_id

string

Obrigatório. Identificador do intervalo. Precisa ser exclusivo em um rastreamento. Esse identificador é um valor numérico de 64 bits formatado como uma string hexadecimal de 8 bytes. Por exemplo, 9046a5b9f7c12500.

Um valor numérico de zero é inválido.

trace_state

string

Esse campo corresponde ao cabeçalho tracestate, conforme definido pelo Contexto de rastreamento do W3C. Esse cabeçalho contém informações de configuração incluídas em solicitações quando os aplicativos são instrumentados para coletar dados de rastreamento. Por exemplo, um aplicativo pode especificar as configurações de amostragem de probabilidade ou incluir conteúdo específico do fornecedor.

As bibliotecas do OpenTelemetry registram automaticamente o valor do cabeçalho tracestate ao gerar intervalos.

parent_span_id

string

Opcional. Identifica a operação que invocou este intervalo. O período "raiz" tem o ID do período pai definido como nulo.

A relação pai-filho entre intervalos é usada por ferramentas de visualização para construir a estrutura de árvore.

name

string

Obrigatório. O nome da operação realizada.

O nome pode ser um nome de método ou outro nome de site por chamada. Para o mesmo executável e o mesmo endpoint, usar um nome consistente facilita a correlação de intervalos entre rastreamentos. Para conferir as práticas recomendadas, consulte Como nomear seus intervalos.

O nome do intervalo é higienizado e exibido no console Google Cloud .

kind

integer

Especifica onde no sistema a operação ocorreu. O valor corresponde à enumeração OpenTelemetry: Span Kind:

ValorEnumeração do OpenTelemetry
0SPAN_KIND_UNSPECIFIED
1SPAN_KIND_INTERNAL
2SPAN_KIND_SERVER
3SPAN_KIND_CLIENT
4SPAN_KIND_PRODUCER
5SPAN_KIND_CONSUMER
start_time

Timestamp

Obrigatório. Horário de início do intervalo, até o nanossegundo mais próximo.

start_time_unix_nano

integer

O horário de início em nanossegundos, de acordo com a época do UNIX.

end_time

Timestamp

Obrigatório. Horário de término do intervalo, até o nanossegundo mais próximo.

end_time_unix_nano

integer

O horário de término em nanossegundos, de acordo com a época do UNIX.

receive_time

Timestamp

Obrigatório. Recebe o tempo do intervalo, até o nanossegundo mais próximo.

receive_time_unix_nano

integer

O horário de término em nanossegundos, de acordo com a época do UNIX.

duration_unix_nano

integer

A duração em nanossegundos.

attributes

JSON type

Cada atributo é um par de chave-valor. Os atributos disponíveis dependem dos seus dados de rastreamento. A estrutura dos atributos segue o padrão OpenTelemetry. Para saber mais, consulte OpenTelemetry: atributos.

O OpenTelemetry especifica convenções semânticas para atributos. Para saber mais sobre essas convenções, consulte Convenções semânticas de rastreamento.

Confira alguns exemplos 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

O número de atributos descartados. Os atributos podem ser descartados porque as chaves são muito longas ou porque há muitos atributos. Quando esse valor é zero, nenhum atributo foi descartado.

Esse valor pode ser definido pela instrumentação do lado do cliente ou por um aplicativo. O valor pode ser incrementado pelo servidor.

events

record com campos repetidos

Um evento pontual. Cada evento contém os seguintes campos.

CampoDescrição
time

Timestamp

time_unix_nano

integer

name

string

Obrigatório. Nome do evento.

attributes

JSON type

Cada atributo é um par de chave-valor. Os atributos disponíveis dependem dos seus dados de rastreamento. A estrutura dos atributos segue o padrão OpenTelemetry. Para saber mais, consulte OpenTelemetry: atributos.

dropped_attributes_count

integer

O número de atributos descartados. Os atributos podem ser descartados porque as chaves são muito longas ou porque há muitos atributos. Quando esse valor é zero, nenhum atributo foi descartado.

Esse valor pode ser definido pela instrumentação do lado do cliente ou por um aplicativo. O valor pode ser incrementado pelo servidor.

dropped_events_count

integer

O número de eventos descartados. Os eventos podem ser descartados porque há muitos eventos. Quando esse valor é zero, nenhum evento foi descartado.

status

record sem campos repetidos

Esse campo registra o status de conclusão de um período. O valor do subcampo code corresponde à enumeração OpenTelemetry: Span Status:

ValorEnumeração OpenTelemetry
Descrição
0 UNSET A operação foi cancelada.
1 OK A operação foi marcada como sem erros por um humano.
2 ERROR A operação foi concluída com um erro. Por exemplo, se o status for 400 (BAD REQUEST) em um intervalo do cliente, este campo será definido como ERROR.

O subcampo message, que é formatado como uma string, contém informações de erro.

resource

record sem campos repetidos

Esse campo identifica a infraestrutura ou o sistema de hospedagem de que a telemetria foi coletada ou sobre o qual ela se refere. Por exemplo, considere um aplicativo em execução no Google Kubernetes Engine. Os atributos deste recurso podem incluir o nome do processo e o namespace.

Esse campo contém os seguintes subcampos:

CampoDescrição
attributes

JSON type

Cada atributo é um par de chave-valor. Os atributos disponíveis dependem dos seus dados de rastreamento. A estrutura dos atributos segue o padrão OpenTelemetry. Para saber mais, consulte OpenTelemetry: atributos.

Confira alguns exemplos 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

O número de atributos descartados. Os atributos podem ser descartados porque as chaves são muito longas ou porque há muitos atributos. Quando esse valor é zero, nenhum atributo foi descartado.

Esse valor pode ser definido pela instrumentação do lado do cliente ou por um aplicativo. O valor pode ser incrementado pelo servidor.

Para saber mais, consulte OpenTelemetry: recursos.

instrumentation_scope

record sem campos repetidos

Esse campo identifica a biblioteca ou o componente do aplicativo para o resource especificado que está coletando telemetria. O intervalo representa uma operação específica que passa por esse escopo, ou seja, pela biblioteca ou componente, dentro do recurso.

Por exemplo, suponha que o aplicativo "checkout-service" esteja implantado no Cloud Run, o que significa que o resource é uma instância específica do Cloud Run. Além disso, suponha que o recurso tenha vários escopos de instrumentação, como "request-authorization-library" e "payment-processor-library".

Um intervalo de cliente, como "WritePaymentInfoToStripe", pode ser um intervalo informado pela "payment-processor-library", que está dentro do serviço do Cloud Run chamado "checkout-service".

Esse campo contém os seguintes subcampos:

CampoDescrição
name

string

version

string

attributes

JSON type

Cada atributo é um par de chave-valor. Os atributos disponíveis dependem dos seus dados de rastreamento. A estrutura dos atributos segue o padrão OpenTelemetry. Para saber mais, consulte OpenTelemetry: atributos.

dropped_attributes_count

integer

O número de atributos descartados. Os atributos podem ser descartados porque as chaves são muito longas ou porque há muitos atributos. Quando esse valor é zero, nenhum atributo foi descartado.

Esse valor pode ser definido pela instrumentação do lado do cliente ou por um aplicativo. O valor pode ser incrementado pelo servidor.

Para saber mais, consulte OpenTelemetry: escopo de instrumentação.

resource_schema_link

string

Esses campos precisam ser um URL formatado como uma string.

Esses campos contêm um URL que retorna um arquivo de esquema para um recurso. O formato do arquivo de esquema e dos dados é definido pelo OpenTelemetry. Para mais informações, consulte OpenTelemetry: esquemas.

Esses campos só podem ser definidos ao usar a API Telemetry. Essa API não valida se os dados estão em conformidade com o esquema declarado.

scope_schema_link

string

Esses campos precisam ser um URL formatado como uma string.

Esses campos contêm um URL que retorna um arquivo de esquema para um escopo. O formato do arquivo de esquema e dos dados é definido pelo OpenTelemetry. Para mais informações, consulte OpenTelemetry: esquemas.

Esses campos só podem ser definidos ao usar a API Telemetry. Essa API não valida se os dados estão em conformidade com o esquema declarado.

apphub

record sem campos repetidos

Os rótulos específicos do aplicativo estão disponíveis quando os intervalos de rastreamento são gerados por aplicativos do App Hub, quando esses aplicativos são executados em uma infraestrutura compatível ou quando foram instrumentados. Para saber mais sobre o Application Monitoring e quando esses rótulos estão disponíveis, consulte Visão geral do Application Monitoring.

Esse campo contém os subcampos application, service e workload.

Subcampo do aplicativoDescrição
container

string

location

string

id

string

Subcampo serviço/carga de trabalho
Descrição
id

string

environment_type

string

criticality_type

string