Quais ferramentas de diagnóstico estão disponíveis no .NET Core?
Artigo
O software nem sempre se comporta como esperado, mas o .NET Core tem ferramentas e APIs que ajudarão você a diagnosticar esses problemas de maneira rápida e eficaz.
Este artigo ajuda a identificar as diversas ferramentas de que você precisa.
Depuradores
Depuradores permitem que você interaja com seu programa. Pausar, executar incrementalmente, examinar e retomar fornecem informações sobre o comportamento do seu código. Um depurador é uma boa opção para diagnosticar problemas funcionais que podem ser facilmente reproduzidos.
Teste de unidade
O teste de unidade é um componente-chave da integração contínua e da implantação de um software de alta qualidade. Os testes de unidade são projetados para fornecer um aviso antecipado quando você interrompe algo.
Instrumentação para observabilidade
O .NET dá suporte a técnicas de instrumentação padrão do setor usando métricas, logs e rastreamentos distribuídos. Instrumentação é um código que é adicionado a um projeto de software para registrar o que ele está fazendo. Essas informações podem ser coletadas em arquivos, bancos de dados ou na memória e analisadas para entender como um programa de software está operando. Isso geralmente é usado em ambientes de produção para monitorar problemas e diagnosticá-los. O runtime do .NET tem instrumentação interna que pode ser opcionalmente habilitada e APIs que permitem adicionar instrumentação personalizada especializada para seu aplicativo.
Métricas
As métricas são medidas numéricas registradas ao longo do tempo para monitorar o desempenho e a integridade do aplicativo. As métricas geralmente são usadas para gerar alertas quando possíveis problemas são detectados. As métricas têm uma sobrecarga de desempenho muito baixa e muitos serviços as configuram como telemetria sempre ativa.
Logs
O registro em log é uma técnica em que o código é instrumentado para produzir um log, um registro de eventos interessantes que ocorreram durante a execução do programa. Geralmente, um conjunto de linha de base de eventos de log é configurado por padrão e o registro em log mais extenso pode ser habilitado sob demanda para diagnosticar problemas específicos. A sobrecarga de desempenho é variável dependendo da quantidade de dados que está sendo registrada.
Rastreamentos distribuídos
O Rastreamento Distribuído é uma forma especializada de registro em log que ajuda a localizar falhas e problemas de desempenho em aplicativos distribuídos em vários computadores ou processos. Essa técnica rastreia solicitações por meio de um aplicativo correlacionando o trabalho em conjunto feito por diferentes componentes do aplicativo e separando-o de outros trabalhos que o aplicativo pode estar fazendo para solicitações simultâneas. É possível rastrear todas as solicitações e amostras que podem ser empregadas opcionalmente para associar a sobrecarga de desempenho.
Despejos
Um despejo é um arquivo que contém um instantâneo do processo no momento da criação. Eles podem ser úteis para examinar o estado do aplicativo para fins de depuração.
Símbolos
Símbolos são um mapeamento entre o código-fonte e o binário produzido pelo compilador. Eles são comumente usados por depuradores .NET para resolver números de linha de origem, nomes de variáveis locais e outros tipos de informações de diagnóstico.
Coletar diagnósticos em contêineres
As mesmas ferramentas de diagnóstico usadas em ambientes Linux não conteinerizados também podem ser usadas para coletar diagnósticos em contêineres. Há apenas algumas alterações de uso necessárias para garantir que as ferramentas funcionem em um contêiner do Docker.
Ferramentas globais de diagnóstico do .NET Core
dotnet-counters
O dotnet-counters é uma ferramenta de monitoramento de desempenho para monitoramento de integridade de primeiro nível e investigação de desempenho. Ele observa os valores do contador de desempenho publicados por meio da API EventCounter. Por exemplo, você pode monitorar rapidamente itens como o uso da CPU ou a taxa de exceções que está sendo gerada em seu aplicativo .NET Core.
dotnet-dump
A ferramenta dotnet-dump é uma maneira de coletar e analisar despejos de núcleo do Windows e do Linux sem um depurador nativo.
dotnet-gcdump
A ferramenta dotnet-gcdump é uma maneira de coletar despejos do GC (Coletor de Lixo) de processos .NET dinâmicos.
dotnet-trace
O .NET Core inclui o que é chamado o EventPipe, por meio do qual dados de diagnóstico são expostos. A ferramenta dotnet-trace permite que você consuma dados interessantes de criação de perfil de seu aplicativo que podem ajudar em cenários em que você precisa criar uma raiz para causar lentidão nos aplicativos.
dotnet-stack
A ferramenta dotnet-stack permite que você imprima rapidamente as pilhas gerenciadas para todos os threads em um processo .NET em execução.
dotnet-symbol
O dotnet-symbol baixa arquivos de download (símbolos, DAC/DBI, arquivos de host etc.) necessários para abrir um despejo de núcleo ou um minidespejo. Use essa ferramenta se precisar de símbolos e módulos para depurar um arquivo de despejo capturado em um computador diferente.
PerfCollect é um script bash que você pode usar para coletar rastreamentos com perf e LTTng para uma análise de desempenho mais aprofundada de aplicativos .NET em execução em distribuições do Linux.
Utilize o Aplicativo Web Inoperante, o Monitoramento de Falhas e o Genie para solução de problemas. Use essas ferramentas para monitorar a disponibilidade de aplicativos e plataformas, identificar exceções sem tratamento, capturar despejos de memória e pilha de chamadas, bem como localizar áreas de investigação e diagnóstico.
Crie soluções de ponta a ponta no Microsoft Azure para criar Funções do Azure, implementar e gerenciar aplicativos Web, desenvolver soluções utilizando o Armazenamento do Microsoft Azure e muito mais.