Este documento mostra como configurar a monitorização do lado do cliente e ponto a ponto com o OpenTelemetry. Tem de configurar a monitorização do lado do cliente antes de poder ativar a monitorização ponto a ponto. Para mais informações, consulte o artigo Vista geral da recolha de rastreios.
Antes de começar
-
Para garantir que a conta de serviço que a sua aplicação usa tem as autorizações necessárias para configurar a recolha de rastreios, peça ao seu administrador para conceder à conta de serviço que a sua aplicação usa a função do agente do Cloud Trace (
roles/cloudtrace.agent
) IAM no seu projeto. Confirme se a API Cloud Trace está ativada no seu projeto. Para mais informações sobre a ativação de APIs, consulte o artigo Ativar APIs.
Configure o rastreio do lado do cliente
Para configurar o rastreio do lado do cliente, tem de exportar rastreios. Pode exportar rastreios para um coletor ou diretamente para um back-end de observabilidade. Pode configurar a monitorização através das APIs OpenTelemetry.
Exporte rastreios para um coletor através das APIs OpenTelemetry
Para exportar rastreios para um coletor através das APIs OpenTelemetry, configure o SDK OpenTelemetry e o exportador OLTP:
Adicione as dependências necessárias à sua aplicação através do seguinte código:
Java
Go
go.opentelemetry.io/otel v1.28.0 go.opentelemetry.io/otel/sdk v1.28.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0
Node.js
"@opentelemetry/exporter-trace-otlp-grpc": "^0.57.0", "@opentelemetry/sdk-trace-base": "^1.26.0", "@opentelemetry/sdk-trace-node": "^1.26.0",
Python
pip install opentelemetry-api opentelemetry-sdk pip install opentelemetry-exporter-otlp
Configure o objeto OpenTelemetry e ative o rastreio.
Java
Go
Node.js
Python
Exporte diretamente para um back-end de observabilidade através de APIs OpenTelemetry
Para configurar as bibliotecas de cliente do Spanner para exportar diretamente intervalos de rastreio para o Cloud Trace ou outro back-end de fornecedor de serviços de observabilidade, siga estes passos:
Adicione as dependências necessárias à sua aplicação através do seguinte código:
Java
<dependency> <groupId>com.google.cloud</groupId> <artifactId>google-cloud-spanner</artifactId> </dependency> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-api</artifactId> </dependency> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-sdk</artifactId> </dependency> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-sdk-common</artifactId> </dependency> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-sdk-trace</artifactId> </dependency> <dependency> <groupId>com.google.cloud.opentelemetry</groupId> <artifactId>exporter-trace</artifactId> <version>0.30.0</version> </dependency>
Go
go.opentelemetry.io/otel v1.28.0 go.opentelemetry.io/otel/sdk v1.28.0 github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.24.1
Node.js
"@google-cloud/opentelemetry-cloud-trace-exporter": "^2.4.1", "@opentelemetry/sdk-trace-base": "^1.26.0", "@opentelemetry/sdk-trace-node": "^1.26.0",
Python
pip install opentelemetry-api opentelemetry-sdk pip install opentelemetry-exporter-gcp-trace
Configure o objeto OpenTelemetry e ative o rastreio.
Java
Go
Node.js
Python
Configure o rastreio ponto a ponto
Esta secção fornece instruções para configurar a monitorização ponto a ponto nas bibliotecas cliente do Spanner:
Adicione as dependências necessárias à sua aplicação através do seguinte código:
Java
As dependências de rastreio do lado do cliente existentes são suficientes para configurar o rastreio ponto a ponto. Não precisa de dependências adicionais.
Go
Além das dependências necessárias para a monitorização do lado do cliente, também precisa da seguinte dependência:
go.opentelemetry.io/otel/propagation v1.28.0
Node.js
As dependências de rastreio do lado do cliente existentes são suficientes para configurar o rastreio ponto a ponto. Não precisa de dependências adicionais.
Python
As dependências de rastreio do lado do cliente existentes são suficientes para configurar o rastreio ponto a ponto. Não precisa de dependências adicionais.
Ative o rastreio ponto a ponto.
Java
SpannerOptions options = SpannerOptions.newBuilder() .setOpenTelemetry(openTelemetry) .setEnableEndToEndTracing(/* enableEndtoEndTracing= */ true) .build();
Go
Use a opção
EnableEndToEndTracing
na configuração do cliente para ativar.client, _ := spanner.NewClientWithConfig(ctx, "projects/test-project/instances/test-instance/databases/test-db", spanner.ClientConfig{ SessionPoolConfig: spanner.DefaultSessionPoolConfig, EnableEndToEndTracing: true, }, clientOptions...)
Node.js
const spanner = new Spanner({ projectId: projectId, observabilityOptions: { tracerProvider: openTelemetryTracerProvider, enableEndToEndTracing: true, } })
Python
observability_options = dict( tracer_provider=tracer_provider, enable_end_to_end_tracing=True, ) spanner = spanner.Client(project_id, observability_options=observability_options)
Defina a propagação do contexto de rastreio no OpenTelemetry.
Java
OpenTelemetry openTelemetry = OpenTelemetrySdk.builder() .setTracerProvider(sdkTracerProvider) .setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance())) .buildAndRegisterGlobal();
Go
// Register the TraceContext propagator globally. otel.SetTextMapPropagator(propagation.TraceContext{})
Node.js
const {propagation} = require('@opentelemetry/api'); const {W3CTraceContextPropagator} = require('@opentelemetry/core'); propagation.setGlobalPropagator(new W3CTraceContextPropagator());
Python
from opentelemetry.propagate import set_global_textmap from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator set_global_textmap(TraceContextTextMapPropagator())
Atributos de rastreio ponto a ponto
Os rastreios completos podem incluir as seguintes informações:
Nome do atributo | Descrição |
---|---|
service.name | O valor do atributo é sempre spanner_api_frontend . |
cloud.region | A Google Cloud região na nuvem do front-end da API Spanner que processa o pedido da sua aplicação. |
gcp.spanner.server.query.fingerprint | O valor do atributo é a impressão digital de consulta. Para depurar ainda mais esta consulta, consulte a coluna TEXT_FINGERPRINT nas tabelas de estatísticas de consultas. |
gcp.spanner.server.paxos.participantcount | O número de participantes envolvidos na transação. Para mais informações, consulte o artigo Ciclo de vida das leituras e escritas do Spanner. |
Exemplo de rastreio
Um rastreio ponto a ponto permite-lhe ver os seguintes detalhes:
- A latência entre a sua aplicação e o Spanner. Pode calcular a latência da rede para ver se tem problemas de rede.
- A região da nuvem de front-end da API Spanner a partir da qual os pedidos da sua aplicação estão a ser processados. Pode usar esta opção para verificar chamadas entre regiões entre a sua aplicação e o Spanner.
No exemplo seguinte, o pedido da sua aplicação está a ser publicado
pelo front-end da API Spanner na região us-west1
e a latência da rede é de 8,542 ms (55,47 ms - 46,928 ms).
O que se segue?
- Para mais informações sobre o OpenTelemetry, consulte a documentação do OpenTelemetry.