Использование Otel в .Net 8 Console/Worker Application

Вопрос или проблема

Коллеги,
Использование otel в Api приложении работает, и настройка проста.

Но я хотел бы использовать otel в консольном приложении и получать метрики из приложения, такие как использование ЦП, память, куча и т.д.

Есть ли какой-то способ использовать это таким образом?

Ответ или решение

Использование OpenTelemetry в консольном приложении .NET 8 для сбора метрик

Введение

OpenTelemetry (Otel) — это мощный инструмент для мониторинга и телеметрии, который предоставляет возможности сбора данных о производительности и состоянии вашего приложения. В отличие от приложений API, интеграция Otel в консольные или фоновые рабочие приложения может показаться более сложной задачей, но она вполне осуществима. В данной статье мы рассмотрим, как настроить OpenTelemetry в консольном .NET 8 приложении для получения метрик, таких как использование ЦП, память и кучи.

Шаги по интеграции OpenTelemetry

  1. Создание нового проекта .NET Console/Worker

    Для начала создайте новый проект консольного приложения:

    dotnet new console -n MyConsoleApp
    cd MyConsoleApp
  2. Установка необходимых пакетов

    Установите NuGet-пакеты для OpenTelemetry и сборки метрик:

    dotnet add package OpenTelemetry
    dotnet add package OpenTelemetry.Extensions.Hosting
    dotnet add package OpenTelemetry.Instrumentation.Runtime
  3. Настройка OpenTelemetry

    В вашем Program.cs добавьте код для инициализации OpenTelemetry. Для сбора основных метрик, таких как использование ЦП и память, вам потребуется настроить MeterProvider.

    using OpenTelemetry;
    using OpenTelemetry.Metrics;
    using System.Diagnostics;
    
    var meterProvider = Sdk.CreateMeterProviderBuilder()
       .AddRuntimeMetrics() // Добавление метрик выполнения
       .AddProcessMetrics() // Добавление метрик процесса
       .AddConsoleExporter() // Экспорт в консоль (можно заменить на нужный вам экспортёр)
       .Build();
    
    // Основной код вашего приложения
    Console.WriteLine("Запуск консольного приложения с OpenTelemetry...");
    
    // Ваши операции
    while (true)
    {
       // Здесь может быть ваша логика
       await Task.Delay(1000);
    }
  4. Сбор и вывод метрик

    После завершения и настройки вы увидите метрики с помощью выбранного вами экспорта. В приведенном примере используем AddConsoleExporter, который будет выводить собранные метрики в консоль. Вы также можете настроить экспорт в сторонние системы мониторинга, такие как Prometheus или Grafana, в зависимости от ваших потребностей.

  5. Запуск приложения и проверка метрик

    Запустите ваше приложение с помощью команды:

    dotnet run

    После этого вы должны начать видеть метрики CPU, памяти и кучи, которые выводятся в консоль или экспортируются в настроенный вами сервис.

Заключение

Интеграция OpenTelemetry в консольное или фоновое приложение .NET 8 — это вполне простой процесс, который разбивается на несколько ключевых шагов. С правильной настройкой вы сможете мониторить производительность своего приложения и получать важные метрики, которые помогут в оптимизации и отладке.

Не забывайте также о возможности расширить функциональность, добавляя кастомные метрики и использования различных экспортеров для удовлетворения специфических требований вашего проекта.

Оцените материал
Добавить комментарий

Капча загружается...