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

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

Цей посібник покаже вам, як почати роботу з OpenTelemetry .NET Metrics в 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 OpenTelemetry.Metrics;
using OpenTelemetry.Resources;

var builder = WebApplication.CreateBuilder(args);

// Налаштуйте OpenTelemetry з метриками та автоматичним запуском.
builder.Services.AddOpenTelemetry()
    .ConfigureResource(resource => resource
        .AddService(serviceName: builder.Environment.ApplicationName))
    .WithMetrics(metrics => metrics
        .AddAspNetCoreInstrumentation()
        .AddConsoleExporter((exporterOptions, metricReaderOptions) =>
        {
            metricReaderOptions.PeriodicExportingMetricReaderOptions.ExportIntervalMilliseconds = 1000;
        }));

var app = builder.Build();

app.MapGet("/", () => $"Hello from OpenTelemetry Metrics!");

app.Run();

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

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

dotnet run

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

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

Export http.server.duration, Measures the duration of inbound HTTP requests., Unit: ms, Meter: OpenTelemetry.Instrumentation.AspNetCore/1.0.0.0
(2023-04-11T21:49:43.6915232Z, 2023-04-11T21:50:50.6564690Z) http.flavor: 1.1 http.method: GET http.route: / http.scheme: http http.status_code: 200 net.host.name: localhost net.host.port: 5000 Histogram
Value: Sum: 3.5967 Count: 11 Min: 0.073 Max: 2.5539
(-Infinity,0]:0
(0,5]:11
(5,10]:0
(10,25]:0
(25,50]:0
(50,75]:0
(75,100]:0
(100,250]:0
(250,500]:0
(500,750]:0
(750,1000]:0
(1000,2500]:0
(2500,5000]:0
(5000,7500]:0
(7500,10000]:0
(10000,+Infinity]:0

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

Як це працює

Реєстрація OpenTelemetry

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

builder.Services.AddOpenTelemetry()
    .ConfigureResource(resource => resource
        .AddService(serviceName: builder.Environment.ApplicationName))
    .WithMetrics(metrics => metrics
        .AddAspNetCoreInstrumentation()
        .AddConsoleExporter((exporterOptions, metricReaderOptions) =>
        {
            metricReaderOptions.PeriodicExportingMetricReaderOptions.ExportIntervalMilliseconds = 1000;
        }));

Цей код:

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

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

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

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

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

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


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