Exercício – Use a telemetria em um projeto .NET Aspire
Neste exercício, use as APIs do OpenTelemetry para adicionar dados personalizados aos logs. Você também examina os logs para encontrar seus eventos personalizados.
Instalar pré-requisitos
Os pré-requisitos para esse exercício são:
- .NET 8
- Visualização do Visual Studio 2022
- Docker Desktop
- Carga de trabalho do .NET Aspire no Visual Studio
Se esses pacotes já estiverem instalados, você poderá pular para o início do trabalho com o log do OpenTelemetry.
Instalar o .NET 8
Siga esse link do .NET 8 e selecione o instalador correto para o seu sistema operacional. Por exemplo, se você estiver usando o Windows 11 e um processador moderno, selecione x64 .NET 8 SDK para Windows.
Após a conclusão do download, execute o instalador e siga as instruções. Em uma janela de terminal, execute o seguinte comando para verificar se a instalação foi bem-sucedida:
dotnet --version
Você deverá ver o número da versão do SDK do .NET instalado. Por exemplo:
8.0.300-preview.24203.14
Instale a versão prévia do Visual Studio 2022
Siga esse link Visual Studio 2022 Preview e selecione Baixar versão prévia. Após a conclusão do download, execute o instalador e siga as instruções.
Instalar o Docker Desktop
Siga esse link Docker Desktop e selecione o instalador correto para o seu sistema operacional. Após a conclusão do download, execute o instalador e siga as instruções. Para o melhor desempenho e compatibilidade, use o back-end WSL 2.
Abra o aplicativo Docker Desktop e aceite o contrato de serviço.
Instale a carga de trabalho do .NET Aspire no Visual Studio
Instale a carga de trabalho do .NET Aspire usando a CLI do .NET:
Abra um terminal.
Atualize as cargas de trabalho do .NET com esse comando:
dotnet workload update
Você deverá ver uma mensagem informando que as cargas de trabalho foram atualizadas com sucesso.
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): .
Instale a carga de trabalho do .NET Aspire com esse comando:
dotnet workload install aspire
Você deve ver uma mensagem informando que a carga de trabalho do Aspire foi instalada com sucesso.
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.
Verifique se a carga de trabalho do .NET Aspire está instalada com esse comando:
dotnet workload list
Você deverá 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 o aplicativo de exemplo
Vamos usar git
para obter um aplicativo de exemplo. Como o aplicativo inclui o .NET Aspire, OpenTelemetry está incluído no registro em log, nas métricas e no rastreamento distribuído padrão:
Na linha de comando, navegue até uma pasta de sua escolha onde você possa trabalhar com o código.
Execute o seguinte comando para clonar o aplicativo de amostra Northern Mountains eShop:
git clone -b aspire-telemetry https://github.com/MicrosoftDocs/mslearn-aspire-starter
Registrar uma mensagem usando a geração de origem em 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:
Abra o Visual Studio e selecione Abrir um projeto ou solução.
Navegue até a pasta em que você clonou o projeto inicial. Abra a pasta iniciar, selecione eShop.aspiretelemetry.sln e, em seguida, selecione Abrir.
No Gerenciador de Soluções, expanda WebApp > Services e clique duas vezes em CatalogService.cs.
Localize a seguinte linha de código, que declara a classe
CatalogService
:public class CatalogService(HttpClient httpClient)
Para usar a geração de fonte em tempo de compilação, temos que fazer essa classe
partial
e usar injeção de dependência para obter o logger. Modifique a linha para corresponder a esse código:public partial class CatalogService(HttpClient httpClient, ILogger<CatalogService> logger)
A seguir, em qualquer lugar da classe
CatalogService
fora de outros métodos, crie um novo métodostatic partial
chamado LogGetBrands:public static partial void LogGetBrands(string uri, ILogger logger);
Imediatamente antes dessa linha, adicione
LoggerMessageAttribute
e defina o nível de registro e a mensagem:[LoggerMessage( EventId = 0, Level = LogLevel.Information, Message = "Getting brands from URI: {uri}")]
Localize o método
GetBrands()
e a seguinte linha de código nele:var uri = $"{remoteServiceBaseUrl}catalogBrands";
Para chamar seu novo método de registro, insira o seguinte código após essa linha:
LogGetBrands(uri, logger);
Para salvar suas alterações pressione CTRL + S ou selecione Arquivo > Salvar tudo.
Teste a instrumentação
Agora, testamos o log de eventos de geração de código em tempo de compilação:
No Visual Studio, para iniciar o aplicativo no modo de depuração, pressione F5 ou selecione Depurar > Iniciar Depuração.
Se a mensagem Iniciar Docker Desktop aparecer, selecione Sim. O aplicativo é iniciado e exibe o painel do .NET Aspire em uma guia do navegador.
Para fazer algumas solicitações, localize o projeto webapp na lista Recursos e selecione uma de suas entradas na coluna Ponto de extremidade:
Uma nova guia do navegador aparece e exibe a página inicial das Montanhas do Norte. A lista de marcas está incluída no lado esquerdo. Alterne de volta para o painel do .NET Aspire e, no menu à esquerda, selecione Estruturado.
Na caixa de texto Filtrar, digite Obter marcas. A página exibe seu evento registrado:
Na coluna Detalhes do seu evento, selecione Exibir. O painel abre um painel inferior para exibir os detalhes da entrada.
Feche as guias do navegador e no Visual Studio pressione SHIFT + F5 ou selecione Depurar> Parar Depuração.
Feche o Visual Studio.