Usando o painel do .NET Aspire

Concluído

Depois de registrar dados telemétricos, você precisará de uma maneira de examiná-los. Com o .NET Aspire, o painel fornece ferramentas avançadas para investigar a telemetria e diagnosticar problemas.

Imagine que você trabalha para um varejista de equipamentos para atividades ao ar livre. Você está usando o OpenTelemetry em seu aplicativo nativo de nuvem do .NET Aspire. Agora você deseja examinar os dados que a telemetria emite para decidir se pode usá-los para melhorar o desempenho.

Nesta unidade, você verá como o painel do .NET Aspire exibe dados telemétricos.

Telemetria no painel do .NET Aspire

Quando você inicia um aplicativo criado com .NET Aspire em seu computador de desenvolvimento e os contêineres que executam cada componente, o .NET inicia o painel do .NET Aspire. Essa interface da Web tem cinco seções, quatro das quais exibem telemetria:

  • Recursos: Lista os contêineres, projetos e executáveis que compõem todo o aplicativo nativo de nuvem. Use os links na coluna Pontos de extremidade para se conectar a cada microsserviço.
  • Console: Exibe o texto enviado à saída padrão do componente especificado.
  • Logs estruturados: Exibe informações enviadas aos agentes do OpenTelemetry.
  • Rastreamentos: Exibe um rastreamento para cada solicitação recebida por qualquer microsserviço no aplicativo.
  • Métricas: Exibe gráficos de domínio de tempo configuráveis que mostram como as métricas escolhidas variam.

Logs no painel

Eventos registrados descrevem o que acontece quando o aplicativo é iniciado e executado. Você pode ver dois tipos de informações registradas no painel: logs do console e logs estruturados.

Logs do console

Os logs do console exibem o texto que seu aplicativo enviou para a saída padrão. Um programa de linha de comando exibiria esse texto como linhas no console, mas os microsserviços e os serviços de apoio não têm lugar intrínseco para exibir a saída padrão. O .NET Aspire ajuda fornecendo a página de Logs do console no painel.

Ao abrir a página, primeiro você deve selecionar um componente de origem, como um de seus microsserviços. A ferramenta exibe toda a saída padrão dessa origem na janela principal com alguma formatação. Por exemplo, os eventos de informações são mostrados em verde enquanto as falhas são mostradas em vermelho.

Os logs do console são simplesmente linhas de texto. Eles são fáceis de criar e emitir pelos aplicativos, mas são difíceis de ler para os seres humanos e difíceis de processar para fins de análise, pois não têm estrutura.

Captura de tela mostrando os logs do console no painel do .NET Aspire.

Logs estruturados

Em vez de texto simples, os logs estruturados preservam mensagens registradas com seus parâmetros de modelo e mensagem. Essa estrutura facilita a filtragem de eventos irrelevantes para que você possa fazer drill down para solucionar um problema específico. Em um ambiente de produção, os logs podem ser persistidos, indexados e consultados como um banco de dados. Dessa forma, você poderá executar análises avançadas nos dados que eles contêm.

Observação

Os logs estruturados também são frequentemente chamados de logs semânticos.

Em seu código, envie um evento para os logs estruturados usando um objeto OpenTelemetry ILogger:

logger.Info("{shopitem} added to basket by {user}", "Ski goggles", "Kenny");

No painel do .NET, a página Logs estruturados mostra eventos de todos os recursos do aplicativo. Para fazer drill down, selecione o recurso que você está solucionando e use as caixas Filtro e Nível para exibir apenas eventos relevantes.

Captura de tela mostrando os logs estruturados no painel do .NET Aspire.

Rastreamentos distribuídos no painel

Um rastreamento é um registro que descreve como uma solicitação foi processada e retornada ao chamador. Cada rastreamento pode envolver chamadas para vários componentes em seu aplicativo. Por exemplo, quando um usuário solicita a página da Web do catálogo de produtos, o microsserviço da interface do usuário da Web pode receber a solicitação, que pode chamar o microsserviço de autenticação, o microsserviço de catálogo e o cache Redis, antes de retornar uma página da Web para o usuário.

Captura de tela mostrando a lista de rastreamentos no painel do .NET Aspire.

Cada rastreamento é composto de intervalos, como a chamada para o microsserviço do catálogo. O sistema registra cada intervalo com suas informações de tempo e pai, para que você possa ver qual componente responde rapidamente e qual causa atrasos. Mais detalhes estão disponíveis para cada intervalo.

Captura de tela mostrando um rastreamento individual no painel do .NET Aspire.

Semelhante aos logs estruturados, você pode selecionar a origem e aplicar filtros para fazer drill down e localizar rastreamentos para o problema específico que você está interessado em diagnosticar.

Métricas no painel

As métricas são valores que variam ao longo do tempo, registradas por um componente do seu aplicativo. Por exemplo, as métricas podem registrar a duração de uma solicitação e resposta ou uma contagem das conexões ativas com o microsserviço do catálogo. Algumas métricas são integradas ao .NET, algumas vêm com as bibliotecas do SDK do OpenTelemetry e os desenvolvedores podem adicionar métricas personalizadas do OpenTelemetry exclusivas para o componente.

O painel do .NET Aspire inclui a seção Métricas, que você pode usar para investigar e exibir como as métricas variam ao longo do tempo.

Por exemplo, a métrica http.server.active_requests exibe o número de solicitações sendo processadas em um determinado momento:

Captura de tela mostrando um grafo da métrica de solicitações ativas no painel do .NET Aspire.

A métrica http.server.request.duration exibe a capacidade de resposta do aplicativo em um determinado momento:

Captura de tela mostrando um grafo da métrica de duração da solicitação no painel do .NET Aspire.

Em cada grafo você pode especificar filtros para direcionar o grafo. Por exemplo, este gráfico mostra a métrica de duração da solicitação para solicitações à rota da página inicial:

Captura de tela mostrando um grafo da métrica de duração da solicitação no painel do .NET Aspire com um filtro aplicado.

Saiba mais