Instrumentação e observabilidade

A instrumentação refere-se ao código específico que gera ou recolhe dados sobre o comportamento de tempo de execução da sua aplicação. Na sua aplicação, a instrumentação, como a fornecida pelo OpenTelemetry, pode recolher informações específicas do domínio sobre o tempo de execução da linguagem, a framework ou a lógica da aplicação e, em seguida, enviar esses dados para um Google Cloud projeto ou para outro destino. Estes dados, também conhecidos como telemetria, incluem métricas, registos e rastreios.

As métricas ao nível do sistema, como a utilização da CPU, a utilização da memória e a utilização do disco, são valiosas para detetar problemas com a sua aplicação, mas não fornecem muitas informações sobre as preocupações ao nível da aplicação. A instrumentação pode ajudar a sua aplicação a gerar os dados de que precisa para diagnosticar a causa principal de um problema, porque a telemetria resultante mostra o que está a acontecer na sua aplicação. Por exemplo, os registos incluem frequentemente contexto sobre o seu programa, como uma mensagem de erro específica ou um rastreio de pilha, e a localização no seu código fonte. Da mesma forma, os rastreios distribuídos ajudam a compreender como vários serviços interagem ao processar pedidos. As métricas permitem-lhe receber notificações quando a sua aplicação não está a funcionar corretamente.

A instrumentação da sua aplicação envolve a geração de telemetria e o envio da mesma para onde os dados podem ser armazenados e consultados. Por exemplo, a sua instrumentação pode enviar telemetria para um Google Cloud projeto. Os serviços no Google Cloud Observability ajudam a recolher, analisar e correlacionar dados de telemetria. Também oferecem predefinições incorporadas para ajudar a começar mais rapidamente, como painéis de controlo e políticas de alertas predefinidos. Para mais informações sobre a observabilidade do Google Cloud, consulte o artigo Observabilidade no Google Cloud.

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

Figura que ilustra a arquitetura da instrumentação em processo.

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

Acerca das frameworks de instrumentação independentes de fornecedores

Mesmo que planeie enviar telemetria apenas para o Google Cloud, recomendamos que use uma framework de instrumentação de código aberto neutra em relação ao fornecedor para instrumentar as suas aplicações. Estes tipos de frameworks têm algumas vantagens importantes:

Sem restrições de fornecedores
As estruturas independentes de fornecedores não estão associadas a nenhum fornecedor específico e fornecem o seu próprio modelo de dados para a telemetria gerada. Por conseguinte, pode enviar dados a vários fornecedores e, normalmente, pode alterar o fornecedor que usa sem modificar o seu código.
Procedimentos padronizados para recolher telemetria
As frameworks bem concebidas, como a OpenTelemetry, oferecem uma abordagem padronizada à recolha de telemetria de aplicações. Pode usar a mesma estrutura para aplicações escritas em idiomas suportados. Além disso, como a estrutura é padronizada, pode recolher e comparar a telemetria de todos os seus serviços.
Bibliotecas interoperáveis
As frameworks de instrumentação incluem um ecossistema avançado de bibliotecas que recolhem sinais de telemetria, e estas bibliotecas são interoperáveis. Por exemplo, o OpenTelemetry fornece bibliotecas para recolher dados de rastreio e dados de métricas. Pode usar qualquer uma das bibliotecas ou ambas.

Recomendações gerais

Esta secção contém recomendações gerais sobre como instrumentar a sua aplicação. Para orientações específicas para Google Cloud, consulte o artigo Escolha uma abordagem de instrumentação.

Para recolher métricas, recomendamos que use o OpenTelemetry ou o Prometheus:

  • O OpenTelemetry é um projeto de código aberto que fornece uma estrutura unificada para a instrumentação de aplicações. Também fornece 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 ficheiro de configuração do OpenTelemetry Collector determina o comportamento do OpenTelemetry Collector. Para enviar telemetria a um agente ou diretamente a um sistema de armazenamento, use o protocolo OpenTelemetry (OTLP).

  • O Prometheus é um sistema de monitorização de código aberto popular. Pode usar as bibliotecas de cliente do Prometheus para gerar métricas a partir da sua aplicação. Além disso, existe um ecossistema de terceiros de bibliotecas de instrumentação para frameworks populares. Os clientes do Prometheus expõem as respetivas métricas como um ponto final de HTTP que pode ser extraído por um agente.

Para recolher rastreios, recomendamos que use o OpenTelemetry.

Para recolher registos, recomendamos que use uma framework que possa ser configurada para gerar registos estruturados em JSON para o Cloud Logging. Para escrever dados de registo, recomendamos o seguinte:

Google Cloud solutions

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

O que se segue?

Para mais informações sobre a observabilidade do Google Cloud, consulte o artigo Observabilidade no Google Cloud.