Початок роботи з трейсами — ASP.NET Core

Дізнайтеся, як використовувати трейсинг OpenTelemetry у застосунку ASP.NET Core

Цей посібник покаже вам, як почати роботу з трейсами OpenTelemetry .NET у застосунку ASP.NET Core.

Передумови

  • .NET SDK встановлений на вашому компʼютері

Створення застосунку ASP.NET Core

Створіть новий веб-застосунок ASP.NET Core:

dotnet new web -o aspnetcoreapp
cd aspnetcoreapp

Додавання трейсів OpenTelemetry

Встановіть необхідні пакунки OpenTelemetry:

dotnet add package OpenTelemetry.Exporter.Console
dotnet add package OpenTelemetry.Extensions.Hosting
dotnet add package OpenTelemetry.Instrumentation.AspNetCore

Оновіть файл Program.cs наступним кодом:

using System.Diagnostics;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;

var builder = WebApplication.CreateBuilder(args);

// Налаштування OpenTelemetry з трасуванням та автозапуском.
builder.Services.AddOpenTelemetry()
    .ConfigureResource(resource => resource
        .AddService(serviceName: builder.Environment.ApplicationName))
    .WithTracing(tracing => tracing
        .AddAspNetCoreInstrumentation()
        .AddConsoleExporter());

var app = builder.Build();

app.MapGet("/", () => $"Hello World! OpenTelemetry Trace: {Activity.Current?.Id}");

app.Run();

Запуск застосунку

Запустіть застосунок:

dotnet run

Перейдіть за URL-адресою, показаною в консолі (наприклад, http://localhost:5000).

Ви повинні побачити вихідні дані трасування в консолі, подібні до:

Activity.TraceId:            c28f7b480d5c7dfc30cfbd80ad29028d
Activity.SpanId:             27e478bbf9fdec10
Activity.TraceFlags:         Recorded
Activity.ActivitySourceName: Microsoft.AspNetCore
Activity.DisplayName:        GET /
Activity.Kind:               Server
Activity.StartTime:          2024-07-04T13:03:37.3318740Z
Activity.Duration:           00:00:00.3693734
Activity.Tags:
    server.address: localhost
    server.port: 5154
    http.request.method: GET
    url.scheme: https
    url.path: /
    network.protocol.version: 2
    user_agent.original: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
    http.route: /
    http.response.status_code: 200
Resource associated with Activity:
    service.name: getting-started-aspnetcore
    service.instance.id: a388466b-4969-4bb0-ad96-8f39527fa66b
    telemetry.sdk.name: opentelemetry
    telemetry.sdk.language: dotnet
    telemetry.sdk.version: 1.9.0

Вітаємо! Тепер ви збираєте трейси за допомогою OpenTelemetry у вашій програмі ASP.NET Core.

Як це працює

Реєстрація OpenTelemetry

Застосунок реєструє служби OpenTelemetry, використовуючи контейнер інʼєкції залежностей, наданий ASP.NET Core:

builder.Services.AddOpenTelemetry()
    .ConfigureResource(resource => resource
        .AddService(serviceName: builder.Environment.ApplicationName))
    .WithTracing(tracing => tracing
        .AddAspNetCoreInstrumentation()
        .AddConsoleExporter());

Цей код:

  1. Додає OpenTelemetry до колекції служб за допомогою AddOpenTelemetry()
  2. Налаштовує ресурс з інформацією про службу за допомогою ConfigureResource()
  3. Налаштовує збір трейсів за допомогою WithTracing()
  4. Додає автоматичну інструментацію для ASP.NET Core за допомогою AddAspNetCoreInstrumentation()
  5. Налаштовує експортер консолі для виводу трейсів до консолі

Інструментація ASP.NET Core

Метод AddAspNetCoreInstrumentation() автоматично створює трейси для HTTP-запитів, включаючи:

  • Тривалість запиту
  • HTTP-метод, маршрут і код статусу
  • Інформацію про мережу
  • User agent

Ці трейси збираються без необхідності додаткового коду у ваших контролерах або проміжному ПЗ.

Доступ до поточної активності

У OpenTelemetry .NET клас Activity представляє “Span” специфікації OpenTelemetry. У нашому прикладі ми отримуємо доступ до поточної активності, щоб включити її ID у відповідь:

app.MapGet("/", () => $"Hello World! OpenTelemetry Trace: {Activity.Current?.Id}");

Це дозволяє побачити ідентифікатор трасування в оглядачі та співвіднести його з трасуваннями у вашій системі моніторингу.

Дізнайтесь більше


Востаннє змінено December 26, 2024: [uk] Ukrainian documentation for OpenTelemetry (2a3c5648)