Вопрос или проблема
Коллеги,
Использование otel в Api приложении работает, и настройка проста.
Но я хотел бы использовать otel в консольном приложении и получать метрики из приложения, такие как использование ЦП, память, куча и т.д.
Есть ли какой-то способ использовать это таким образом?
Ответ или решение
Использование OpenTelemetry в консольном приложении .NET 8 для сбора метрик
Введение
OpenTelemetry (Otel) — это мощный инструмент для мониторинга и телеметрии, который предоставляет возможности сбора данных о производительности и состоянии вашего приложения. В отличие от приложений API, интеграция Otel в консольные или фоновые рабочие приложения может показаться более сложной задачей, но она вполне осуществима. В данной статье мы рассмотрим, как настроить OpenTelemetry в консольном .NET 8 приложении для получения метрик, таких как использование ЦП, память и кучи.
Шаги по интеграции OpenTelemetry
-
Создание нового проекта .NET Console/Worker
Для начала создайте новый проект консольного приложения:
dotnet new console -n MyConsoleApp cd MyConsoleApp
-
Установка необходимых пакетов
Установите NuGet-пакеты для OpenTelemetry и сборки метрик:
dotnet add package OpenTelemetry dotnet add package OpenTelemetry.Extensions.Hosting dotnet add package OpenTelemetry.Instrumentation.Runtime
-
Настройка 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); }
-
Сбор и вывод метрик
После завершения и настройки вы увидите метрики с помощью выбранного вами экспорта. В приведенном примере используем
AddConsoleExporter
, который будет выводить собранные метрики в консоль. Вы также можете настроить экспорт в сторонние системы мониторинга, такие как Prometheus или Grafana, в зависимости от ваших потребностей. -
Запуск приложения и проверка метрик
Запустите ваше приложение с помощью команды:
dotnet run
После этого вы должны начать видеть метрики CPU, памяти и кучи, которые выводятся в консоль или экспортируются в настроенный вами сервис.
Заключение
Интеграция OpenTelemetry в консольное или фоновое приложение .NET 8 — это вполне простой процесс, который разбивается на несколько ключевых шагов. С правильной настройкой вы сможете мониторить производительность своего приложения и получать важные метрики, которые помогут в оптимизации и отладке.
Не забывайте также о возможности расширить функциональность, добавляя кастомные метрики и использования различных экспортеров для удовлетворения специфических требований вашего проекта.