Использование дашборда из Aspire в бэкенде на .NET
Введение
.NET Aspire — это новый продукт Microsoft, который призван упростить оркестрацию контейнеров с приложениями на локальных машинах разработчиков. Кроме инструментов запуска сервисов туда ещё входит дашборд, отображающий логи и метрики приложения в реальном времени. Он использует протокол OpenTelemetry.
В недавно вышедшем Preview 4 в числе прочего добавили возможность запустить дашборд отдельно от Aspire. В этой статье я добавлю дашборд к своему .NET-бэкенду не мигрируя весь проект на Aspire.
Запуск Docker-контейнера
Дашборд доступен в формате отдельного docker-контейнера. Он занимает два порта: на одном запускается веб-интерфейс, а на другом поднимается слушатель OpenTelemetry.
Если запустить эту команду, на порту 18888 откроется веб-интерфейс, а на порт 4317 можно будет присылать данные о работе приложения в формате OpenTelemetry по протоколу gRPC
Настройка Nginx
Добавим доступ к веб-интерфейсу снаружи через SSL:
После перезапуска Nginx логи будут доступны на роуте /structuredlogs.
Поддержка OTLP в Serilog
Для Serilog написан синк, который позволяет писать логи в OpenTelemetry, установим его в проект:
Добавим этот синк к нашей конфигурации Serilog:
Теперь помимо консоли, приложение будет писать все логи в OpenTelemetry по указанному адресу. Выглядит это вот так:
Заключение
В этой статье мы настроили дашборд из .NET Aspire для сбора логов по протоколу OpenTelemetry