Escolher uma abordagem de instrumentação

Escolha a abordagem de instrumentação mais eficaz para seu aplicativo com base na plataforma de computação do Google Cloud e nos requisitos de telemetria. Este guia oferece recomendações para o Google Kubernetes Engine (GKE), o Compute Engine e o Cloud Run, ajudando você a decidir entre o coletor do OpenTelemetry criado pelo Google, o Agente de operações e a exportação direta do OpenTelemetry em processo.

Este documento fornece recomendações gerais, além de orientações para as seguintes plataformas:

Para ver exemplos de aplicativos, consulte Exemplos e guias de implementação.

As recomendações nesta página não são as únicas soluções, e outras abordagens podem funcionar. Para receber mais orientações, entre em contato com o Cloud Customer Care.

Recomendações gerais

Esta seção contém recomendações gerais sobre como instrumentar seu aplicativo. Para orientações específicas da plataforma, consulte Recomendações da plataforma.

  • Dados de registro:recomendamos que você use um framework que possa ser configurado para gerar registros estruturados em JSON para o Cloud Logging. Para gravar dados de registro, recomendamos o seguinte:

  • Dados de métricas: recomendamos que você use o OpenTelemetry ou as bibliotecas de cliente do Prometheus:

    • O OpenTelemetry fornece um framework de código aberto e independente de fornecedor e bibliotecas de cliente para instrumentar aplicativos para métricas.
    • As bibliotecas de cliente do Prometheus (Go, Java, Python etc.) geram métricas que podem ser expostas em um endpoint HTTP e copiadas por um agente.
  • Dados de trace: recomendamos que você use o OpenTelemetry para gerar dados de trace distribuídos do código do aplicativo.

Arquiteturas de coleta do OpenTelemetry

Ao instrumentar um aplicativo com as bibliotecas do OpenTelemetry, é possível rotear a telemetria pelo OpenTelemetry Collector independente ou exportar diretamente do processo do aplicativo. O arquivo de configuração do OpenTelemetry Collector controla como o coletor recebe, processa e exporta telemetria. Em geral, recomendamos que os coletores recebam e exportem telemetria usando o protocolo OpenTelemetry (OTLP). A API Telemetry (OTLP) implementa esse protocolo.

Há duas abordagens fundamentais para enviar telemetria ao seu projeto do Google Cloud :

  • Exportação baseada em coletor (independente de fornecedor): instrumente o código do aplicativo com o SDK do OpenTelemetry e use o exportador OTLP em processo para enviar dados a um coletor do OpenTelemetry, como o coletor do OpenTelemetry criado pelo Google ou um receptor do Agente de Operações. O coletor recebe a telemetria e a encaminha para o projeto do Google Cloud . O código do aplicativo permanece totalmente neutro em relação ao fornecedor.

  • Exportação direta (específica do fornecedor): você instrumenta o código do aplicativo com o SDK do OpenTelemetry e configura o OpenTelemetry para enviar telemetria ao projeto usando a API Telemetry. Não é necessário implantar um coletor, mas o código do aplicativo inclui dependências específicas do fornecedor.

Recomendamos que você use um coletor do OpenTelemetry quando o ambiente de computação for compatível com um. Para ambientes em que a execução de um processo de coletor separado não é prática, use a exportação direta em processo.

Recomendações de plataforma

Como os ambientes de computação do Google Cloud têm diferentes recursos de ciclo de vida e sidecar, o padrão de coleta ideal varia de acordo com a plataforma. As seções a seguir fornecem recomendações específicas para seu ambiente de implantação.

GKE

Para informações gerais sobre o GKE, consulte Visão geral do GKE.

Tipo Recomendação
Métricas

Recomendamos que você use o Serviço Gerenciado do Google Cloud para Prometheus.

Para instrumentação, siga um destes procedimentos:

Traces

Faça o seguinte:

  1. Implantar o coletor do OpenTelemetry criado pelo Google no Google Kubernetes Engine.

    O coletor recebe dados de trace do exportador OTLP em processo do SDK, processa esses dados e os envia ao projeto do Google Cloud usando a API Telemetry (OTLP).

  2. Use o SDK do OpenTelemetry e o exportador OTLP para sua linguagem (link em inglês).
Registros

Configure seu app para gerar registros estruturados em JSON para stdout e stderr. Para ver uma lista de frameworks, consulte Frameworks de geração de registros recomendados.

O GKE coleta registros gravados em stdout e stderr automaticamente. Para mais informações, acesse Sobre os registros do GKE.

Compute Engine

Para informações gerais sobre o Compute Engine, consulte Instâncias de máquina virtual.

Tipo Recomendação
Métricas e traces

Faça o seguinte:

  1. Usar o Agente de operações para coletar métricas e traces.

    Por exemplo, consulte Coletar métricas e traces do protocolo OpenTelemetry (OTLP). Neste guia, descrevemos como configurar o Agente de Operações para receber dados de métricas e traces dos exportadores OTLP em processo do SDK, transformar esses dados e enviá-los ao projeto do Google Cloud . Os dados de métricas são enviados usando a API Cloud Monitoring, e os dados de trace são enviados usando a API Cloud Trace.

  2. Use o SDK do OpenTelemetry e o exportador OTLP para sua linguagem (link em inglês).

Como alternativa, se você só quiser configurar a coleta para métricas no formato do Prometheus, use o receptor do Prometheus do Agente de Operações para coletar métricas instrumentadas usando bibliotecas de cliente do Prometheus ou o SDK do OpenTelemetry.

Registros

Faça o seguinte:

  1. Configure seu app para gerar registros estruturados em JSON em um arquivo. Para ver uma lista de frameworks, consulte Frameworks de geração de registros recomendados.
  2. Instale o Agente de operações e configure um receptor. Por exemplo, consulte Receptores de geração de registros.

Cloud Run

Para informações gerais sobre o Cloud Run, consulte O que é o Cloud Run.

Tipo Recomendação
Métricas e traces

Faça o seguinte:

  1. Use o SDK do OpenTelemetry e o exportador OTLP para sua linguagem (link em inglês).
  2. Implantar um arquivo secundário do OpenTelemetry para coletar métricas e traces.

    Confira alguns exemplos nos seguintes documentos:

  3. Para o serviço do Cloud Run, use o faturamento com base em instâncias. Com o faturamento com base em instâncias, a CPU é alocada para todo o ciclo de vida da instância, o que é necessário porque a instrumentação do OpenTelemetry faz processamento em segundo plano. Para mais informações, consulte Configurações de faturamento para serviços do Cloud Run.

Como alternativa, se você quiser configurar a coleta apenas para métricas no formato do Prometheus, use o arquivo secundário do Prometheus para o Cloud Run a fim de coletar métricas instrumentadas usando Bibliotecas de cliente do Prometheus ou o SDK do OpenTelemetry.

Registros

Configure seu app para gerar registros estruturados em JSON para stdout e stderr. Para ver uma lista de frameworks, consulte Frameworks de geração de registros recomendados.

O Cloud Run coleta registros gravados em stdout e stderr automaticamente. Para mais informações, acesse Gravar registros de contêiner.

Cloud Run functions

Para informações gerais sobre o Cloud Run functions, consulte Visão geral do Cloud Run functions.

Tipo Recomendação
Métricas Não é possível gravar dados de métricas diretamente no Cloud Run functions. É possível gerar métricas com base em registros.
Traces Use o SDK do OpenTelemetry e o exportador OTLP para sua linguagem (link em inglês).
Registros

Configure seu app para gerar registros estruturados em JSON para stdout e stderr. Para ver uma lista de frameworks, consulte Frameworks de geração de registros recomendados.

O Cloud Run functions coleta registros gravados em stdout e stderr automaticamente. Para mais informações, consulte Funções do Cloud Run: visão geral de monitoramento e geração de registros.

App Engine

Para informações gerais sobre o App Engine, consulte Visão geral do App Engine.

Tipo Recomendação
Métricas Use o SDK do OpenTelemetry e o exportador OTLP para sua linguagem (link em inglês).
Traces Use o SDK do OpenTelemetry e o exportador OTLP para sua linguagem (link em inglês).
Registros

Configure seu app para gerar registros estruturados em JSON para stdout e stderr. Para ver uma lista de frameworks, consulte Frameworks de geração de registros recomendados.

O App Engine coleta registros gravados em stdout e stderr automaticamente. Para mais informações, consulte Gravar e visualizar registros.

Exemplos e guias de implementação

Documentação do OpenTelemetry

Nesta seção, fornecemos links para o SDK do OpenTelemetry e os exportadores do OTLP em diferentes linguagens.

Referências gerais:

Go

Java

JavaScript

Python