Para manter o código do aplicativo independente do fornecedor ao coletar e enviar telemetria para Google Cloud, use os exemplos de instrumentação baseados no coletor do OpenTelemetry para Go, Java, Node.js e Python.
Esses exemplos demonstram como configurar um SDK do OpenTelemetry no processo para exportar métricas, registros e traces para um coletor local do OpenTelemetry que encaminha a telemetria para o seu projeto Google Cloud. Os exemplos enviam dados de métricas e traces no formato do protocolo OpenTelemetry (OTLP) para o seu Google Cloud projeto usando a API Telemetry e enviam dados de registro usando um Google Cloud exportador.
Como os exemplos funcionam
Os exemplos para Go, Java, Node.js e Python usam o
protocolo OpenTelemetry para coletar dados de métricas e traces.
Os exemplos configuram um framework de geração de registros para gravar
registros estruturados e configuram o
coletor do OpenTelemetry para ler o
fluxo stdout do aplicativo. Para recomendações de framework, consulte
Escolher uma abordagem de instrumentação.
Os aplicativos são criados e implantados usando o Docker. Não é necessário usar o Docker ao instrumentar um aplicativo com o OpenTelemetry.
É possível executar os exemplos no Cloud Shell, em Google Cloud recursos ou em um ambiente de desenvolvimento local.
Modo detalhado
Os exemplos usam o OpenTelemetry Collector como um arquivo secundário para receber e enriquecer a telemetria do aplicativo, que um exportador envia para o seu Google Cloud projeto. Os aplicativos de exemplo enviam dados de métricas e traces para o seu projeto usando a API Telemetry, que oferece suporte ao formato OTLP.
Os exemplos mostram como fazer o seguinte:
Configure o OpenTelemetry para coletar métricas e traces usando o OpenTelemetry collector.
A complexidade dessa etapa depende da linguagem. Por exemplo, em Go, atualize a função
mainpara inicializar a coleta de telemetria e configurar o servidor e o cliente HTTP.Configure um framework de geração de registros para gravar registros estruturados.
Recomendamos que os aplicativos gravem registros estruturados, que formatam o payload de registro como um objeto JSON. Para esses registros, é possível criar consultas que pesquisam caminhos JSON específicos e indexar campos específicos no payload de registro.
Alguns serviços, como o Google Kubernetes Engine, têm agentes integrados que extraem registros estruturados e os enviam para o seu Google Cloud projeto. Outros serviços, como o Compute Engine, exigem a instalação de um agente, que extrai e envia os registros. Para saber mais sobre os agentes instalados, consulte Visão geral do Agente de operações.
Não é necessário instalar agentes para usar esses exemplos.
Configure arquivos do Docker. Todos os exemplos contêm os seguintes arquivos YAML:
docker-compose.yaml: configura os serviços para o aplicativo, o coletor do OpenTelemetry e um gerador de carga. Por exemplo, o serviço do coletor do OpenTelemetry,otelcol, especifica uma imagem, um volume e variáveis de ambiente. O endpoint do coletor do OpenTelemetry é definido pela variável de ambienteOTEL_EXPORTER_OTLP_ENDPOINT, que é especificada no serviçoapp.otel-collector-config.yaml: configura o coletor do OpenTelemetry:Os exemplos usam o receptor
otlppara dados de métricas e traces e o receptorfilelogpara dados de registro.Os exemplos usam o
otlphttpexportador para dados de métricas e traces, e o Google Cloud exportador para dados de registro.O exportador
otlphttpenvia dados para o seu projeto usando a API Telemetry, que oferece suporte ao OTLP. O Google Cloud exportador converte os dados de registro em um formato compatível com a API Cloud Logging e envia os dados transformados para o seu Google Cloud projeto.
docker-compose.creds.yaml: esse arquivo monta opcionalmente um Google Cloud arquivo de credenciais no contêinerotelcol. Você precisa desse arquivo ao executar um exemplo em uma máquina local em que Application Default Credentials (ADC) estão disponíveis apenas como um arquivo.
Permissões necessárias
-
Para receber as permissões necessárias para que os aplicativos de exemplo gravem dados de registro, métricas e traces, peça ao administrador para conceder a você os seguintes papéis do IAM:
- Gravador de registros (
roles/logging.logWriter) no seu projeto - Gravador de métricas do Monitoring (
roles/monitoring.metricWriter) no seu projeto - Gravador de traces de telemetria do Cloud (
roles/telemetry.tracesWriter) no seu projeto - Consumidor do Service Usage (
roles/serviceusage.serviceUsageConsumer) no seu projeto de cota
Essas permissões são suficientes se você executar o exemplo no Cloud Shell, em Google Cloud recursos ou em um ambiente de desenvolvimento local. Para saber como configurar um projeto de cota, consulte Definir o projeto de cota.
- Gravador de registros (
-
Para receber as permissões necessárias para visualizar os dados de registro, métricas e traces, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
- Visualizador de registros (
roles/logging.viewer) - Leitor do Monitoring (
roles/monitoring.viewer) - Usuário do Cloud Trace (
roles/cloudtrace.user)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.
- Visualizador de registros (
APIs necessárias
Ative as APIs Cloud Logging, Cloud Monitoring, Cloud Trace e Telemetry:
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter a permissão serviceusage.services.enable. Se você
criou o projeto, provavelmente já tem essa permissão pelo
papel de proprietário (roles/owner). Caso contrário, é possível receber essa permissão pelo
papel de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin).
Saiba como conceder papéis.
gcloud services enable logging.googleapis.commonitoring.googleapis.com cloudtrace.googleapis.com telemetry.googleapis.com
Abordagens alternativas de instrumentação
Talvez você se interesse por outros exemplos que ilustram configurações diferentes:
Migrar do exportador do Trace para o endpoint OTLP descreve como usar a instrumentação no processo para enviar dados de trace diretamente para o seu Google Cloud projeto.
Recomendamos o uso de um coletor do OpenTelemetry para exportar os dados de telemetria quando o ambiente oferece suporte ao uso de um coletor. Se não for possível usar um coletor, use um exportador no processo que envie dados diretamente para o seu Google Cloud projeto.
Relacionar métricas e traces usando exemplos descreve como configurar um aplicativo Go para gerar exemplos. Um exemplo é um ponto de dados de exemplo anexado a um ponto de dados de métrica. É possível usar exemplos para correlacionar os dados de métricas e traces.
Usar o Agente de operações e o protocolo OpenTelemetry (OTLP) descreve como configurar o Agente de operações e um receptor OTLP para coletar métricas e traces de um aplicativo.
A seguir
Para saber mais sobre coletores, consulte Coletor do OpenTelemetry criado pelo Google.
Confira os exemplos que usam exportações baseadas em coletores.