интеграция .NET AspireSeq
Включает:интеграция размещения и
Client интеграция
Seq — это локальный сервер поиска и анализа, который обрабатывает структурированные журналы приложений и файлы трассировки. Он включает в себя JSON хранилище событий и простой язык запросов, который упрощает использование. Интеграцию .NET AspireSeq можно использовать для отправки данных протокола OTLP OpenTelemetry в Seq. Интеграция поддерживает сохранность журналов и трассировку при перезапусках приложений.
Во время разработки .NET.NET Aspire запускается и подключается к образу контейнера datalust/seq
.
Интеграция хостинга
Интеграция хостинга Seq моделирует сервер как тип SeqResource. Чтобы получить доступ к этому типу и API, добавьте 📦Aspire. Хостинг.Seq пакет NuGet в проект хоста приложения .
dotnet add package Aspire.Hosting.Seq
Дополнительные сведения см. в статье dotnet add package или в статье Управление зависимостями пакетов в приложениях .NET.
Добавьте ресурс Seq
В проекте узла приложения вызовите AddSeq, чтобы добавить и вернуть построитель ресурсов Seq.
var builder = DistributedApplication.CreateBuilder(args);
var seq = builder.AddSeq("seq")
.ExcludeFromManifest()
.WithLifetime(ContainerLifetime.Persistent)
.WithEnvironment("ACCEPT_EULA", "Y");
var myService = builder.AddProject<Projects.ExampleProject>()
.WithReference(seq)
.WaitFor(seq);
// After adding all resources, run the app...
Заметка
Контейнер Seq может быть медленным при запуске, поэтому лучше использовать постоянный жизненный цикл, чтобы избежать ненужных перезапусков. Дополнительные сведения см. в разделе Срок службы ресурса контейнера.
Примите лицензионное соглашение пользователей (EULA) Seq
Чтобы начать Seq, необходимо принять Seq лицензионное соглашение. Чтобы принять соглашение в коде, передайте переменную среды ACCEPT_EULA
в контейнер Seq и задайте для нее значение Y
. Приведенный выше код передает эту переменную в цепочке вызова WithEnvironment.
Seq в манифесте .NET Aspire
Постоянные логи и трассировки
Зарегистрируйте Seq в каталоге данных в проекте узла приложения, чтобы сохранить данные и конфигурацию Seqмежду перезапусками приложения.
var seq = builder.AddSeq("seq", seqDataDirectory: "./seqdata")
.ExcludeFromManifest()
.WithLifetime(ContainerLifetime.Persistent);
Указанный каталог уже должен существовать.
Добавьте ресурс Seq с томом данных
Чтобы добавить том данных в ресурс Seq, вызовите метод WithDataVolume в ресурсе Seq:
var builder = DistributedApplication.CreateBuilder(args);
var seq = builder.AddSeq("seq")
.WithDataVolume()
.ExcludeFromManifest()
.WithLifetime(ContainerLifetime.Persistent);
var myService = builder.AddProject<Projects.ExampleProject>()
.WithReference(seq)
.WaitFor(seq);
Том данных используется для сохранения Seq данных за пределами жизненного цикла контейнера. Том данных монтируется по пути /data
в контейнере Seq, и если параметр name
не указан, имя создается случайным образом. Дополнительные сведения о томах данных и сведения о том, почему они предпочтительнее привязки, см. в Docker документации по томам.
Добавление ресурса Seq с подключением привязки данных
Чтобы добавить подключение привязки данных к ресурсу Seq, вызовите метод WithDataBindMount:
var builder = DistributedApplication.CreateBuilder(args);
var seq = builder.AddSeq("seq")
.WithDataBindMount(source: @"C:\Data")
.ExcludeFromManifest()
.WithLifetime(ContainerLifetime.Persistent);
var myService = builder.AddProject<Projects.ExampleProject>()
.WithReference(seq)
.WaitFor(seq);
Важный
Подключения привязки данных имеют ограниченные функциональные возможности по сравнению с томами, которые обеспечивают более высокую производительность, переносимость и безопасность, что делает их более подходящими для рабочих сред. Однако привязываемые подключения позволяют напрямую получать доступ и изменять файлы в хост-системе, идеально подходит для разработки и тестирования, в которых требуются изменения в режиме реального времени.
Подключения привязки данных зависят от файловой системы хост-компьютера для сохранения Seq данных во время перезапуска контейнера. Монтаж привязки данных выполнен в Windows на пути C:\Data
(или на пути /Data
на Unix) на хост-машине в контейнере Seq. Дополнительные сведения о монтировании привязок данных можно найти в документации по Docker: монтирование привязок.
интеграция Client
Чтобы приступить к работе с интеграцией клиента .NET AspireSeq, установите 📦Aspire.Seq пакет NuGet в проекте, использующем клиент, то есть в проекте приложения, использующего клиент Seq.
dotnet add package Aspire.Seq
Добавьте клиента Seq
В файле Program.cs проекта, используюющего клиент, вызовите метод расширения AddSeqEndpoint для регистрации экспортеров протоколов OpenTelemetry для отправки журналов и трассировок в Seq и панели мониторинга .NET Aspire. Метод принимает параметр имени подключения.
builder.AddSeqEndpoint(connectionName: "seq");
Совет
Параметр connectionName
должен соответствовать имени, используемому при добавлении ресурса Seq в проект узла приложения. Другими словами, при вызове AddSeq
и указании имени seq
то же имя следует использовать при вызове AddSeqEndpoint
. Дополнительные сведения см. в статье Добавление Seq ресурса.
Конфигурация
Интеграция .NET AspireSeq предоставляет несколько вариантов настройки подключения к Seq на основе требований и соглашений проекта.
Использование поставщиков конфигураций
Интеграция .NET AspireSeq поддерживает Microsoft.Extensions.Configuration. Он загружает SeqSettings из конфигурации, используя ключ Aspire:Seq
. Следующий фрагмент кода является примером файла appsettings.json, который настраивает некоторые параметры:
{
"Aspire": {
"Seq": {
"DisableHealthChecks": true,
"ServerUrl": "http://localhost:5341"
}
}
}
Полная схема интеграции клиента SeqJSON, смотрите в Aspire.Seq/ConfigurationSchema.json.
Использование встроенных делегатов
Кроме того, можно передать делегат Action<SeqSettings> configureSettings
, чтобы настроить некоторые или все параметры на уровне кода, например, отключить функцию проверки работоспособности напрямую из кода.
builder.AddSeqEndpoint("seq", static settings =>
{
settings.DisableHealthChecks = true;
settings.ServerUrl = "http://localhost:5341"
});
Проверки состояния
По умолчанию .NET.NET Aspire интеграции включают мониторинг для всех услуг. Дополнительные сведения см. в обзоре интеграции .NET.NET Aspire.
Интеграция .NET AspireSeq обрабатывает следующее:
- Добавляет проверку работоспособности, когда SeqSettings.DisableHealthChecks является
false
, которая пытается подключиться к конечной точке/health
на сервере Seq. - Интегрируется с конечной точкой HTTP
/health
, которая указывает, что все зарегистрированные проверки работоспособности должны пройти, чтобы приложение считалось готовым принимать трафик.
Наблюдаемость и телеметрия
.NET
.NET Aspire интеграции автоматически настраивают конфигурации журналирования, трассировки и метрик, которые иногда называются пилонами наблюдаемости. Дополнительные сведения об наблюдаемости интеграции и телеметрии см. в .NET.NET Aspire обзоре интеграции. В зависимости от резервной службы некоторые интеграции могут поддерживать только некоторые из этих функций. Например, некоторые интеграции поддерживают ведение журнала и трассировку, но не метрики. Функции телеметрии также можно отключить с помощью методов, представленных в разделе конфигурации
Лесозаготовка
Интеграция .NET AspireSeq использует следующие категории журналов:
Seq
Трассировка и метрики
Интеграция .NET AspireSeq не осуществляет трассировку или метрики, поскольку это приемник телеметрии, а не источник телеметрии.
См. также
.NET Aspire