Instrumentação e observabilidade

Instrumentação é o código específico que gera ou coleta dados sobre o comportamento do ambiente de execução do aplicativo. Dentro do aplicativo, a instrumentação, como a fornecida pelo OpenTelemetry, pode coletar informações específicas do domínio sobre o ambiente de execução da linguagem, framework ou lógica do aplicativo e, em seguida, enviar esses dados para o projeto do Google Cloud ou para algum outro destino. Esses dados, também conhecidos como telemetria, incluem metrics, registros e traces.

As métricas no nível do sistema, como uso da CPU, da memória e do disco, são valiosas para detectar problemas com o aplicativo, mas não fornecem muitos insights sobre as preocupações no nível do aplicativo. A instrumentação pode ajudar seu aplicativo a gerar os dados necessários para diagnosticar a causa raiz de um problema, porque a telemetria resultante mostra o que está acontecendo nele. Por exemplo, os registros geralmente incluem contexto sobre o programa, como uma mensagem de erro ou stack trace específicos, e o local no código-fonte. Da mesma forma, os traces distribuídos ajudam a entender como vários serviços interagem ao processar solicitações. As métricas permitem que você seja notificado quando seu aplicativo não estiver se comportando corretamente.

A instrumentação do aplicativo envolve a geração de telemetria e o envio dela para o local de armazenamento e consulta dos dados. Por exemplo, sua instrumentação pode enviar telemetria para um projeto do Google Cloud. Os serviços no Google Cloud Observability ajudam a coletar, analisar e correlacionar dados de telemetria. Eles também fornecem padrões integrados para ajudar você a começar mais rapidamente, como painéis padrão e políticas de alerta. Para mais informações sobre o Google Cloud Observability, consulte Observabilidade no Google Cloud.

A figura a seguir ilustra como um aplicativo usa a instrumentação para gerar e enviar telemetria para um sistema de armazenamento:

Figura ilustrando a arquitetura da instrumentação em processo.

Conforme ilustrado na figura anterior, o código de instrumentação existe no processo do aplicativo e interage com ele para gerar dados de telemetria. Em seguida, o framework de instrumentação exporta a telemetria para um sistema de armazenamento configurado. Na figura, o sistema de armazenamento é seu projeto do Google Cloud.

Sobre frameworks de instrumentação independentes de fornecedor

Mesmo que você pretenda enviar telemetria apenas para o Google Cloud, recomendamos usar um framework de instrumentação de código aberto neutro em relação a fornecedores para instrumentar os aplicativos. Esses tipos de framework têm alguns benefícios importantes:

Sem dependência de fornecedores
Os frameworks neutros em relação a fornecedores não estão vinculados a nenhum fornecedor específico e fornecem o próprio modelo de dados para a telemetria gerada. Portanto, é possível enviar dados para vários fornecedores e, geralmente, é possível mudar o fornecedor usado sem modificar seu código.
Procedimentos padronizados para coleta de telemetria
Frameworks bem projetados, como o OpenTelemetry, oferecem uma abordagem padronizada para coletar telemetria de aplicativos. Você pode usar o mesmo framework para aplicativos escritos em linguagens compatíveis. Como o framework é padronizado, é possível coletar e comparar a telemetria de todos os seus serviços.
Bibliotecas interoperabilidade
Os frameworks de instrumentação incluem um amplo ecossistema de bibliotecas que coletam sinais de telemetria e são interoperáveis. Por exemplo, o OpenTelemetry fornece bibliotecas para coletar dados de trace e coletar dados de métricas. Você pode usar uma delas ou as duas.

Recomendações gerais

Esta seção contém recomendações gerais sobre como instrumentar seu aplicativo. Para orientações específicas para o Google Cloud, consulte Escolher uma abordagem de instrumentação.

Para coletar métricas, recomendamos que você use o OpenTelemetry ou o Prometheus:

  • O OpenTelemetry é um projeto de código aberto que fornece um framework unificado para instrumentação de aplicativos. Ele também oferece bibliotecas de instrumentação para bibliotecas populares. O OpenTelemetry fornece um agente autônomo, o OpenTelemetry Collector, que pode receber, transformar e exportar telemetria. O arquivo de configuração do Coletor do OpenTelemetry determina o comportamento dele. Para enviar telemetria a um agente ou diretamente a um sistema de armazenamento, use o protocolo OpenTelemetry (OTLP).

  • O Prometheus é um sistema de monitoramento de código aberto conhecido. É possível usar as bibliotecas de cliente do Prometheus para gerar métricas a partir do seu aplicativo. Existe um ecossistema de terceiros de bibliotecas de instrumentação para frameworks conhecidos. Os clientes do Prometheus expõem as métricas como um endpoint HTTP que pode ser copiado por um agente.

Para coletar rastros, recomendamos que você use o OpenTelemetry.

Para coletar registros, 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:

Soluções do Google Cloud

O Google Cloud Observability oferece opções flexíveis para a coleta de telemetria:

A seguir

Para mais informações sobre o Google Cloud Observability, consulte Observabilidade no Google Cloud.