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 |
Identificador globalmente exclusivo do
trace.
Esse identificador é um valor numérico de 128 bits formatado como uma string hexadecimal de 16 bytes. Por exemplo,
Um valor numérico de zero é inválido. O |
||||||||||||||||
span_id |
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, Um valor numérico de zero é inválido. |
||||||||||||||||
trace_state |
Esse campo corresponde ao cabeçalho As bibliotecas do OpenTelemetry registram automaticamente o valor do cabeçalho |
||||||||||||||||
parent_span_id |
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 |
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 |
Especifica onde no sistema a operação ocorreu. O valor corresponde à enumeração OpenTelemetry: Span Kind:
|
||||||||||||||||
start_time |
Obrigatório. Horário de início do intervalo, até o nanossegundo mais próximo. |
||||||||||||||||
start_time_unix_nano |
O horário de início em nanossegundos, de acordo com a época do UNIX. |
||||||||||||||||
end_time |
Obrigatório. Horário de término do intervalo, até o nanossegundo mais próximo. |
||||||||||||||||
end_time_unix_nano |
O horário de término em nanossegundos, de acordo com a época do UNIX. |
||||||||||||||||
receive_time |
Obrigatório. Recebe o tempo do intervalo, até o nanossegundo mais próximo. |
||||||||||||||||
receive_time_unix_nano |
O horário de término em nanossegundos, de acordo com a época do UNIX. |
||||||||||||||||
duration_unix_nano |
A duração em nanossegundos. |
||||||||||||||||
attributes |
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 |
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 |
Um evento pontual. Cada evento contém os seguintes campos.
|
||||||||||||||||
dropped_events_count |
O número de eventos descartados. Os eventos podem ser descartados porque há muitos eventos. Quando esse valor é zero, nenhum evento foi descartado. |
||||||||||||||||
links |
Links associados ao intervalo. Links são referências deste intervalo para outro intervalo no mesmo rastreamento ou em um diferente. Os links fornecem um mecanismo para correlacionar intervalos de um rastreamento com intervalos em outro. Por exemplo, suponha que uma operação cause uma operação assíncrona. Nesse cenário, há dois rastreamentos, um para a operação original e outro para a operação assíncrona. Você pode usar links para correlacionar os intervalos nesses rastreamentos. Cada link contém os seguintes campos.
|
||||||||||||||||
dropped_links_count |
O número de links descartados. Os links podem ser descartados porque há muitos links. Quando esse valor é zero, nenhum link foi descartado. |
||||||||||||||||
status |
Esse campo registra o status de conclusão de um período.
O valor do subcampo
O subcampo |
||||||||||||||||
resource |
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:
Para saber mais, consulte OpenTelemetry: recursos. |
||||||||||||||||
instrumentation_scope |
Esse campo identifica a biblioteca ou o componente do aplicativo para o
Por exemplo, suponha que o aplicativo "checkout-service" esteja implantado
no Cloud Run, o que significa que o 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:
Para saber mais, consulte OpenTelemetry: escopo de instrumentação. |
||||||||||||||||
resource_schema_link |
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 |
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 |
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
|