Exercício - Usar telemetria em um projeto do .NET Aspire

Concluído

Neste exercício, você usa as APIs do OpenTelemetry para adicionar dados personalizados aos logs. Você também examina os logs para localizar seus eventos personalizados.

Pré-requisitos da instalação

Os pré-requisitos para este exercício são:

  • .NET 8
  • Pré-visualização do Visual Studio 2022
  • Área de trabalho do Docker
  • Carga de trabalho do .NET Aspire no Visual Studio

Se esses pacotes já estiverem instalados, você pode pular para começar a trabalhar com o registro em log do OpenTelemetria.

Instalar o .NET 8

Siga este link do .NET 8 e selecione o instalador correto para seu sistema operacional. Por exemplo, se você estiver usando o Windows 11 e um processador moderno, selecione o x64 .NET 8 SDK para Windows.

Após a conclusão do download, execute o instalador e siga as instruções. Em uma janela do terminal, execute o seguinte comando para verificar se a instalação foi bem-sucedida:

dotnet --version

Você deve ver o número da versão do SDK do .NET que você instalou. Por exemplo:

8.0.300-preview.24203.14

Instalar o Visual Studio 2022 Preview

Siga este link do Visual Studio 2022 Preview e selecione Baixar visualização. Após a conclusão do download, execute o instalador e siga as instruções.

Instalar o Docker Desktop

Siga este link do Docker Desktop e selecione o instalador correto para seu sistema operacional. Após a conclusão do download, execute o instalador e siga as instruções. Para obter o melhor desempenho e compatibilidade, use o back-end WSL 2 .

Abra o aplicativo Docker Desktop e aceite o contrato de serviço.

Instalar a carga de trabalho do .NET Aspire no Visual Studio

Instale a carga de trabalho do .NET Aspire usando a CLI do .NET:

  1. Abra um terminal.

  2. Atualize as cargas de trabalho do .NET com este comando:

    dotnet workload update
    

    Você verá uma mensagem informando que as cargas de trabalho foram atualizadas com êxito.

    No workloads installed for this feature band. To update workloads installed with earlier SDK versions, include the --from-previous-sdk option.
    Updated advertising manifest microsoft.net.sdk.ios.
    Updated advertising manifest microsoft.net.workload.mono.toolchain.net6.
    Updated advertising manifest microsoft.net.sdk.android.
    Updated advertising manifest microsoft.net.workload.emscripten.net7.
    Updated advertising manifest microsoft.net.workload.emscripten.net6.
    Updated advertising manifest microsoft.net.sdk.macos.
    Updated advertising manifest microsoft.net.workload.emscripten.current.
    Updated advertising manifest microsoft.net.workload.mono.toolchain.current.
    Updated advertising manifest microsoft.net.sdk.maui.
    Updated advertising manifest microsoft.net.workload.mono.toolchain.net7.
    Updated advertising manifest microsoft.net.sdk.maccatalyst.
    Updated advertising manifest microsoft.net.sdk.tvos.
    Updated advertising manifest microsoft.net.sdk.aspire.
    No workloads installed for this feature band. To update workloads installed with earlier SDK versions, include the --from-previous-sdk option.
    
    Successfully updated workload(s): .
    
  3. Instale a carga de trabalho do .NET Aspire com este comando:

    dotnet workload install aspire
    

    Deverá ver uma mensagem a informar que a carga de trabalho do Aspire foi instalada com êxito.

    Installing Aspire.Hosting.Sdk.Msi.x64 ...... Done
    Installing Aspire.ProjectTemplates.Msi.x64 ..... Done
    Installing Aspire.Hosting.Orchestration.win-x64.Msi.x64 ............. Done
    Installing Aspire.Hosting.Msi.x64 ..... Done
    Installing Aspire.Dashboard.Sdk.win-x64.Msi.x64 ....... Done
    
    Successfully installed workload(s) aspire.
    
  4. Verifique se a carga de trabalho do .NET Aspire está instalada com este comando:

    dotnet workload list
    

    Você deve ver os detalhes da carga de trabalho do .NET Aspire .

     Installed Workload Id      Manifest Version      Installation Source
    ---------------------------------------------------------------------------------------------
    aspire                     8.0.0/8.0.100         SDK 8.0.300-preview.24203, VS 17.10.34902.84
    
    Use `dotnet workload search` to find additional workloads to install.
    

Clonar a aplicação de exemplo

Vamos usar git para obter um aplicativo de exemplo. Como o aplicativo inclui o .NET Aspire, o OpenTelemetry está incluído no registro em log padrão, nas métricas e no rastreamento distribuído:

  1. Na linha de comando, navegue até uma pasta de sua escolha onde você pode trabalhar com código.

  2. Execute o seguinte comando para clonar o aplicativo de exemplo Northern Mountains eShop :

    git clone -b aspire-telemetry https://github.com/MicrosoftDocs/mslearn-aspire-starter
    

Registrar uma mensagem usando a geração de fonte de tempo de compilação

Podemos usar a geração de fonte em tempo de compilação para criar código de registro de desempenho automaticamente. Vamos implementar essa técnica para obter marcas de produtos:

  1. Abra o Visual Studio e selecione Abrir um projeto ou solução.

  2. Navegue até a pasta onde você clonou o projeto inicial. Abra a pasta Iniciar , selecione eShop.aspiretelemetry.sln e, em seguida, selecione Abrir.

  3. No Gerenciador de Soluções, expanda Serviços WebApp > e clique duas vezes em CatalogService.cs.

  4. Localize a seguinte linha de código, que declara a CatalogService classe:

    public class CatalogService(HttpClient httpClient)
    
  5. Para usar a geração de fonte de tempo de compilação, temos que fazer essa classe partial e usar a injeção de dependência para obter o registrador. Modifique a linha para corresponder a este código:

    public partial class CatalogService(HttpClient httpClient, ILogger<CatalogService> logger)
    
  6. Em seguida, em qualquer lugar da classe fora de CatalogService outros métodos, crie um novo static partial método chamado LogGetBrands:

    public static partial void LogGetBrands(string uri, ILogger logger);
    
  7. Imediatamente antes dessa linha, adicione o LoggerMessageAttribute e defina o nível de log e a mensagem:

    [LoggerMessage(
    EventId = 0,
    Level = LogLevel.Information,
    Message = "Getting brands from URI: {uri}")]
    
  8. Localize o GetBrands() método e a seguinte linha de código nele:

    var uri = $"{remoteServiceBaseUrl}catalogBrands";
    
  9. Para chamar seu novo método de log, insira o seguinte código após essa linha:

    LogGetBrands(uri, logger);
    
  10. Para salvar as alterações, pressione CTRL + S ou selecione Arquivo > Salvar tudo.

Testar a instrumentação

Agora, testamos o log de geração de fonte de tempo de compilação:

  1. No Visual Studio, para iniciar o aplicativo no modo de depuração, pressione F5 ou selecione Depurar > Iniciar Depuração.

  2. Se a mensagem Iniciar área de trabalho do Docker for exibida, selecione Sim. O aplicativo é iniciado e exibe o painel do .NET Aspire em uma guia do navegador.

  3. Para fazer algumas solicitações, localize o projeto webapp na lista Recursos e selecione uma de suas entradas na coluna Pontos de extremidade:

    Captura de tela mostrando o painel do .NET Aspire e o local dos links de ponto de extremidade do webapp.

  4. Uma nova guia do navegador é exibida e exibe a página inicial de Northern Mountains. A lista de marcas está incluída no lado esquerdo. Volte para o painel do .NET Aspire e, no menu à esquerda, selecione Estruturado.

  5. Na caixa de texto Filtro , digite Obter marcas. A página exibe seu evento registrado:

    Captura de ecrã a mostrar eventos filtrados no painel do .NET Aspire .

  6. Na coluna Detalhes do seu evento, selecione Exibir. O painel abre um painel inferior para exibir os detalhes da entrada.

  7. Feche as guias do navegador e, no Visual Studio, pressione SHIFT + F5 ou selecione Depurar > parar depuração.

  8. Feche o Visual Studio.