Rótulos de trace

O Trace fornece um mecanismo para você adicionar dados significativos aos seus períodos. Se você estiver usando a API Cloud Trace V1, é possível adicionar rótulos, que são pares de chave-valor, usando o campo labels no objeto TraceSpan da API Cloud Trace. Se você estiver usando a API Cloud Trace V2, poderá adicionar informações usando um objeto Attributes. Para mais informações, consulte Adicionar anotações de evento a intervalos de rastreamento.

Quando você analisa um período, os rótulos dele aparecem na guia Atributos. Por exemplo, a captura de tela a seguir ilustra essa guia:

Exemplo da tabela de atributos do Cloud Trace.

Para saber como acessar essas informações, consulte Encontrar e analisar traces.

O campo labels é um mapa de pares de chave-valor. As chaves e os valores são armazenadas como strings. Para restrições de tamanho de string, consulte a referência da API para labels.

Há um limite de 32 rótulos por período.

Chaves predefinidas

Rótulos canônicos

A tabela a seguir lista as chaves predefinidas compatíveis, inclui uma descrição e, em alguns casos, inclui um exemplo:

Chave de rótuloDescrição
Exemplo
/agent Identificador do agente de rastreamento.
"node@google-cloud/trace-agent v3.0.0"
/component Identificador do componente.
"grpc"
/error/message Uma mensagem de erro.
"Rendezvous of RPC that terminated with:
status = StatusCode.UNAVAILABLE details = OS Error."
/error/name Nome de exibição do erro.
/http/client_city A cidade do cliente.
"NYC"
/http/client_country O país do cliente.
"US"
/http/client_protocol Identificador do protocolo HTTP.
"1.0"
/http/client_region A região do cliente.
"us-east4"
/http/host O valor do Cabeçalho do host.
"default.example.com"
/http/method Defina como o método de solicitação HTTP.
Não inclua essa chave em solicitações não HTTP.
"GET"
/http/path Caminho do URL de solicitação.
"/cart/checkout"
/http/redirected_url O URL antes do redirecionamento.
Neste caso, use o rótulo de URL HTTL da chave para armazenar o URL final.
/http/request/size Número de bytes na solicitação.
/http/response/size Número de bytes na resposta.
/http/route A rota correspondente.
"/cart/checkout/:item_id"
/http/status_code Código de status de resposta HTTP.
"200"
/http/url URL de solicitação HTTP completo.
"http://example.com"
/http/user_agent Informações sobre o user agent HTTP que originou a solicitação.
"python-requests/2.19.1"
/stacktrace Trace de pilha formatado em JSON. Os traces de pilha não são indexados para pesquisa.
Esse rótulo é exibido na tabela Pilha de chamadas.
O rótulo /stacktrace é usado apenas pela API V1.
Para a API V2, o span tem um campo stackTrace.
    "stackTrace": {
      "stackFrames": {
        "frame": [
          {
            "functionName": {
              "value": "serverMethodTrace [as func]"
            },
            "fileName": {
              "value":
              "/usr/src/app/node_modules/@google-cloud/trace-agent/build/src/plugins/plugin-grpc.js"
            },
            "lineNumber": "249",
            "columnNumber": "28"
          },
          {
            "functionName": {
              "value": "anonymous function"
            },
            "fileName": {
              "value": "/usr/src/app/node_modules/grpc/src/server.js"
            },
            "lineNumber": "592",
            "columnNumber": "13"
          }
        ]
      }
    },

Esse rótulo e seu valor são exibidos na tabela Detalhes que está incluída na visualização Detalhes do trace.

Rótulos canônicos para o GKE

A tabela a seguir lista todos os rótulos canônicos de um contêiner do GKE:

Nome de exibição na tabela Contêiner do GKE
Chave de rótulo
Descrição
ID do projeto
g.co/r/k8s_container/project_id
O projeto do Google Cloud que hospeda o cluster do GKE. Clique no nome do projeto para acessar o painel do GKE no console do Google Cloud.
Local
g.co/r/k8s_container/location
O local físico do cluster do GKE.
Nome do cluster
g.co/r/k8s_container/cluster_name
Identifica o cluster do GKE. Para acessar a página de configuração Clusters, clique nesse valor.
Namespace
g.co/r/k8s_container/namespace
Identifica o namespace. Para acessar a página Cargas de trabalho do GKE, clique nesse valor.
Nome do pod
g.co/r/k8s_container/pod_name
Identifica o pod do GKE. Clique no valor para acessar o painel Detalhes do pod.
Nome do contêiner
g.co/r/k8s_container/container_name
Identifica o contêiner do GKE. Para acessar a página de detalhes do contêiner, clique nesse valor.

Exemplo

Veja a seguir uma representação JSON parcial de um objeto Trace que inclui vários rótulos:

{
  "projectId": "a-sample-project",
  "traceId": "00000000000000004db6dd68e7d37f57",
  "spans": [
    {
      "spanId": "12913864118554233534",
      "kind": "RPC_SERVER",
      "name": "http://xx.xxx.xxx.xxx/",
      "startTime": "2019-04-02T19:37:34.149058Z",
      "endTime": "2019-04-02T19:37:34.151136Z",
      "parentSpanId": "5599906629317525335",
      "labels": {
        "/component": "default",
        "/http/host": "xx.xxx.xxx.xxx",
        "/http/status_code": "200",
        "/http/url": "http://xx.xxx.xxx.xxx/",
        "zipkin.io/http.route": "/**",
        "/http/method": "GET",
        "zipkin.io/endpoint.ipv4": "10.16.1.6",
        "zipkin.io/http.path": "/",
        "zipkin.io/mvc.controller.class": "ResourceHttpRequestHandler"
      }
    }
  ]
}

O trace anterior foi retirado de um sistema usando um coletor Zipkin. Nesse caso, os rótulos com chaves zipkin.io foram adicionados por esse coletor.

Prefixo g.co

Em alguns casos, os rótulos exibidos contêm um prefixo g.co. O prefixo g.co indica que esse rótulo foi gerado por um serviço do Google. Se você estiver executando seu serviço no App Engine ou em outra infraestrutura do Google Cloud, poderá ver rótulos como os seguintes:

Chave de rótulo Exemplo de valor do rótulo
g.co/agent opentelemetry-js 1.18.1; google-cloud-trace-exporter 2.1.0
g.co/r/generic_node/location global

Rótulos personalizados

Você pode criar rótulos personalizados. Se você criar um rótulo personalizado, recomendamos usar os seguintes formatos:

  • /category/product/key para agentes de produtos conhecidos. Por exemplo, /db/mongodb/read_size;
  • short_host/path/key para chaves específicas do domínio. Por exemplo, g.co/agent.

Se você criar vários rótulos personalizados, isso poderá gerar impacto no desempenho devido ao aumento da cardinalidade do rótulo.

Conforme ilustrado na seção Exemplo, se você usar um coletor Zipkin ou uma biblioteca como o OpenTelemetry, isso poderá adicionar rótulos aos períodos de trace.

Como usar o OpenTelemetry

Se você estiver usando bibliotecas do OpenTelemetry, use as convenções semânticas do OpenTelemetry ao criar períodos.