Habilitar o OpenTelemetry do Azure Monitor para aplicativos .NET, Node.js, Python e Java

Este artigo descreve como habilitar e configurar a coleta de dados baseada em OpenTelemetry para alimentar as experiências no Application Insights do Azure Monitor. Explicamos como instalar a Distribuição do OpenTelemetry do Azure Monitor. A Distribuição do OpenTelemetry do Azure Monitor fornece uma distribuição do OpenTelemetry que inclui suporte para recursos específicos do Azure Monitor. A Distribuição habilita telemetria automática, incluindo bibliotecas de instrumentação do OpenTelemetry para coletar rastreamentos, métricas, logs e exceções e permite coletar telemetria personalizada. Você também pode usar o recurso Live Metrics incluído na Distribuição para monitorar e coletar mais telemetria de aplicativos Web ao vivo e em produção. Para obter mais informações sobre as vantagens de usar a Distribuição do OpenTelemetry do Azure Monitor, consulte Por que devo usar a "Distribuição do OpenTelemetry do Azure Monitor"? em Perguntas frequentes do OpenTelemetry.

Para saber mais sobre como coletar dados usando o OpenTelemetry, confira Noções básicas de coleta de dados ou Perguntas frequentes sobre o OpenTelemetry.

Status de versão do OpenTelemetry

As ofertas do OpenTelemetry estão disponíveis para aplicativos .NET, Node.js, Python e Java.

Observação

Para obter um status de versão de recurso por recurso, confira as Perguntas frequentes.

Introdução

Siga as etapas nesta seção para instrumentar seu aplicativo com o OpenTelemetry.

Pré-requisitos

Instalar a biblioteca de clientes

Instalar o pacote mais recente do Azure.Monitor.OpenTelemetry.AspNetCore NuGet:

dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore 

Habilitar o Application Insights do Azure Monitor

Para habilitar o Application Insights do Azure Monitor, faça uma pequena modificação em seu aplicativo e defina a "Cadeia de Conexão". A Cadeia de Conexão informa ao aplicativo para onde enviar a telemetria que o Distro coleta e é exclusiva para você.

Modificar o Aplicativo

Adicione UseAzureMonitor() à inicialização do aplicativo, localizada em sua classe program.cs.

// Import the Azure.Monitor.OpenTelemetry.AspNetCore namespace.
using Azure.Monitor.OpenTelemetry.AspNetCore;

// Create a new WebApplicationBuilder instance.
var builder = WebApplication.CreateBuilder(args);

// Add OpenTelemetry and configure it to use Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the application.
var app = builder.Build();

// Run the application.
app.Run();

Copiar a Cadeia de Conexão do seu Recurso do Application Insights

Dica

Se você ainda não tiver um, agora é um ótimo momento para Criar um recurso do Application Insights . Neste momento é quando recomendamos criar um novo recurso do Application Insights Resource em vez de usar um existente.

Para copiar sua Cadeia de Conexão exclusiva:

Captura de tela exibindo a visão geral e a cadeia de conexão do Application Insights.

  1. Acesse o painel Visão geral do recurso Application Insights.
  2. Localize sua Cadeia de Conexão.
  3. Passe o mouse sobre a cadeia de conexão e selecione o ícone Copiar para a área de transferência.

Cole a cadeia de conexão no seu ambiente

Para colar sua Cadeia de Conexão, selecione uma das opções a seguir:

a. Definir via Variável de Ambiente (recomendado)

Substitua <Your Connection String> no comando a seguir por sua cadeia de conexão exclusiva.

APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>

B. Definir via Arquivo de Configuração - Somente Java (Recomendado)

Crie um arquivo de configuração chamado applicationinsights.json e coloque-o no mesmo diretório que applicationinsights-agent-3.5.1.jar com o seguinte conteúdo:

{
  "connectionString": "<Your Connection String>"
}

Substitua <Your Connection String> no JSON anterior por sua cadeia de conexão exclusiva.

C. Definido via Código; Somente ASP.NET Core, Node.js e Python (Não recomendado)

Consulte Configuração da Cadeia de Conexão para, por exemplo, definir a Cadeia de Conexão por meio de código.

Observação

Se você definir a cadeia de conexão em mais de um local, seguiremos a seguinte precedência:

  1. Código
  2. Variável de ambiente
  3. Arquivo de configuração

Confirmar se os dados estão fluindo

Execute o aplicativo e abra a guia Recurso do Application Insights no portal do Azure. Pode levar alguns minutos para os dados aparecerem no portal.

Captura de tela da guia Visão geral do Application Insights com as solicitações de servidor e o tempo de resposta do servidor realçados.

Agora, o Application Insights está habilitado para seu aplicativo. Todas as etapas a seguir são opcionais e permitem uma personalização adicional.

Importante

Se você tem dois ou mais serviços que emitem telemetria para o mesmo recurso do Application Insights, precisa definir Nomes de Função de Nuvem para representá-los corretamente no Mapa do Aplicativo.

Como parte do uso da instrumentação do Application Insights, coletamos e enviamos dados de diagnóstico para a Microsoft. Esses dados nos ajudam a executar e a aprimorar o Application Insights. Para saber mais, confira Statsbeat no Azure Application Insights.

Exemplos

Os aplicativos de exemplo do OpenTelemetry do Azure Monitor estão disponíveis para todos os idiomas com suporte.

Próximas etapas

Perguntas frequentes

Esta seção fornece respostas para perguntas comuns.

O que é o OpenTelemetry?

É um novo padrão de código aberto para observabilidade. Saiba mais em OpenTelemetry.

Por que o Microsoft Azure Monitor está investindo no OpenTelemetry?

A Microsoft está entre os maiores colaboradores do OpenTelemetry.

As principais propostas de valor do OpenTelemetry são a neutralidade de fornecedor e o fornecimento de APIs/SDKs consistentes em várias linguagens.

Ao longo do tempo, acreditamos que o OpenTelemetry permitirá que os clientes do Azure Monitor observem os aplicativos escritos em linguagens além das nossas linguagens com suporte. Ele também expande os tipos de dados que você pode coletar através de um conjunto avançado de bibliotecas de instrumentação. Além disso, os SDKs do OpenTelemetry tendem a ter mais desempenho em escala do que seus antecessores, os SDKs do Application Insights.

Por fim, o OpenTelemetry se alinha com a estratégia da Microsoft de adoção de código aberto.

Qual é o status do OpenTelemetry?

Confira Status do OpenTelemetry.

O que é a "Distribuição OpenTelemetry do Azure Monitor"?

Você pode pensar nisso como um invólucro fino que reúne todos os componentes do OpenTelemetry para uma experiência de primeira classe no Azure. Esse wrapper também é chamado de distribuição no OpenTelemetry.

Por que devo usar a "Distribuição OpenTelemetry do Azure Monitor"?

Há várias vantagens em usar a Distribuição OpenTelemetry do Azure Monitor em relação ao OpenTelemetry nativo da comunidade:

No espírito do OpenTelemetry, projetamos a distribuição para ser aberta e extensível. Por exemplo, você pode adicionar:

  • Um exportador do Protocolo OpenTelemetry (OTLP) e enviar para um segundo destino simultaneamente
  • Outras bibliotecas de instrumentação não incluídas na distribuição

Como a Distribuição oferece uma distribuição do OpenTelemetry, ela suporta tudo o que é suportado pelo OpenTelemetry. Por exemplo, você pode adicionar mais processadores de telemetria, exportadores ou bibliotecas de instrumentação se o OpenTelemetry der suporte a eles.

Observação

A Distribuição define o amostrador para um amostrador personalizado de taxa fixa para o Application Insights. Você pode alterar isso para um amostrador diferente, mas fazê-lo pode desabilitar alguns dos recursos incluídos na Distribuição. Para obter mais informações sobre o amostrador com suporte, consulte a seção Habilitar Amostragem de Configurar o OpenTelemetry do Azure Monitor.

Para idiomas sem um exportador autônomo do OpenTelemetry com suporte, a Distribuição do OpenTelemetry para Azure Monitor é atualmente a única maneira com suporte para usar o OpenTelemetry com o Azure Monitor. Para idiomas com um exportador autônomo do OpenTelemetry com suporte, você tem a opção de usar tanto a Distribuição do OpenTelemetry do Azure Monitor quanto o exportador autônomo apropriado do OpenTelemetry, dependendo do seu cenário de telemetria. Para obter mais informações, consulte Quando devo usar o exportador do OpenTelemetry do Azure Monitor?.

Como posso testar a Distribuição OpenTelemetry do Azure Monitor?

Confira nossos documentos de ativação para .NET, Java, JavaScript (Node.js) e Python.

Devo usar o OpenTelemetry ou o SDK do Application Insights?

É recomendável usar a Distribuição do OpenTelemetry, a menos que você exija um recurso disponível apenas com suporte formal no SDK do Application Insights.

A adoção do OpenTelemetry agora impede a migração em uma data posterior.

Quando devo usar a o exportador do OpenTelemetry do Azure Monitor?

No caso do ASP.NET Core, do Java, do Node.js e do Python, recomendamos usar a Distribuição do OpenTelemetry para Azure Monitor. Basta uma linha de código para começar.

Para todos os outros cenários do .NET, incluindo o ASP.NET clássico, aplicativos de console, etc., recomendamos usar o exportador do OpenTelemetry do Azure Monitor do .NET: Azure.Monitor.OpenTelemetry.Exporter.

Para cenários de telemetria do Python mais complexos que exigem configuração avançada, recomendamos usar o Exportador OpenTelemetry do Azure Monitor do Python.

Qual é o estado atual da versão dos recursos na Distribuição OpenTelemetry do Azure Monitor?

O gráfico a seguir divide o suporte ao recurso OpenTelemetry para cada idioma.

Recurso .NET Node.js Python Java
Rastreamento distribuído
Métricas personalizadas
Métricas Padrão (precisão atualmente afetada pela amostragem)
Amostragem de taxa fixa
Armazenamento offline e novas tentativas automáticas
Relatório de exceção
Coleção de logs ⚠️
Eventos personalizados ⚠️ ⚠️ ⚠️
autenticação do Microsoft Entra
Live Metrics
Detectar Contexto do Recurso de VM/VMSS e Serviço de Aplicativo
Detectar o Contexto do Recurso do AKS e das Funções
Filtragem da Extensão do Teste de Disponibilidade
Preenchimento automático da ID de usuário, ID de usuário autenticado e IP do usuário
Substituir/definir manualmente o nome da operação, a ID de usuário ou a ID de usuário autenticado
amostragem adaptável
Profiler ⚠️
Depurador de instantâneo

Chave

O OpenTelemetry pode ser usado para navegadores da Web?

Sim, mas não recomendamos e o Azure não dá suporte a ele. O Javascript do OpenTelemetry é altamente otimizado para Node.js. Nesse caso, recomendamos usar o SDK do JavaScript do Application Insights.

Quando podemos esperar que o SDK do OpenTelemetry esteja disponível para uso em navegadores da Web?

O SDK da Web do OpenTelemetry não tem uma linha do tempo de disponibilidade determinada. Deve demorar alguns anos para algum SDK de navegador ser uma alternativa viável ao SDK do JavaScript do Application Insights.

Posso testar o OpenTelemetry em um navegador da Web hoje?

A área restrita Web do OpenTelemetry é uma bifurcação projetada para fazer o OpenTelemetry funcionar em um navegador. Ainda não é possível enviar telemetria para o Application Insights. O SDK não define eventos gerais do cliente.

Há suporte para a execução do Application Insights junto com agentes concorrentes, como o AppDynamics, DataDog e NewRelic?

Não. Essa prática não é algo que planejamos testar ou oferecer suporte, embora nossas distribuições permitam que você exporte para um ponto de extremidade OTLP junto com o Azure Monitor simultaneamente.

Posso usar versão prévia do recurso em ambientes de produção?

Não recomendamos isso. Consulte os Termos de uso complementares para versões prévias do Microsoft Azure.

Qual é a diferença entre a instrumentação automática e manual?

Consulte a Visão geral do OpenTelemetry.

Posso usar o Coletor do OpenTelemetry?

Alguns clientes usam o Coletor do OpenTelemetry como uma alternativa de agente, embora a Microsoft ainda não dê suporte oficial a uma abordagem baseada em agente para o monitoramento de aplicativos. Enquanto isso, a comunidade de código aberto contribuiu com um Exportador do Azure Monitor para o Coletor do OpenTelemetry, que alguns clientes estão usando para enviar dados para o Application Insights do Azure Monitor. Isso não tem suporte da Microsoft.

Qual é a diferença entre o OpenCensus e o OpenTelemetry?

O OpenCensus é o precursor do OpenTelemetry. A Microsoft ajudou a reunir o OpenTracing e o OpenCensus para criar o OpenTelemetry, um padrão de observabilidade exclusivo para o mundo. O SDK do Python recomendado para produção atual para o Azure Monitor é baseado no OpenCensus. A Microsoft está comprometida em dar suporte ao OpenTelemetry no Azure Monitor.

Solução de problemas

Não está funcionando? Confira a página de solução de problemas do ASP.NET Core.

Suporte

Selecione uma guia para o idioma de sua escolha para descobrir as opções de suporte.

Comentários sobre o OpenTelemetry

Para fornecer comentários: