Бөлісу құралы:


интеграция .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, необходимо принять . Чтобы принять соглашение в коде, передайте переменную среды ACCEPT_EULA в контейнер Seq и задайте для нее значение Y. Приведенный выше код передает эту переменную в цепочке вызова WithEnvironment.

Seq в манифесте .NET Aspire

не должен быть частью манифеста развертывания, поэтому используется цепной вызов . Рекомендуется настроить защищенный рабочий 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 данных во время перезапуска контейнера. Монтаж привязки данных выполнен в пути C:\Data в Windows (или /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"
});

Client контроль состояния интеграции

По умолчанию .NET.NET Aspireинтеграции клиентов имеют включенные проверки работоспособности для всех служб. Аналогичным образом, многие .NET.NET Aspireхостинговые интеграции также предоставляют конечные точки проверки работоспособности. Дополнительные сведения см. в следующем разделе:

Интеграция .NET AspireSeq обрабатывает следующее:

  • Добавляет проверку работоспособности, когда SeqSettings.DisableHealthChecks является false, которая пытается подключиться к конечной точке Seq на сервере /health.
  • Интегрируется с конечной точкой HTTP /health, которая указывает, что все зарегистрированные проверки работоспособности должны пройти, чтобы приложение считалось готовым принимать трафик.

Наблюдаемость и телеметрия

.NET .NET Aspire интеграции автоматически настраивают конфигурации журналирования, трассировки и метрик, которые иногда называются пилонами наблюдаемости. Дополнительные сведения об наблюдаемости интеграции и телеметрии см. в .NET.NET Aspire обзоре интеграции. В зависимости от резервной службы некоторые интеграции могут поддерживать только некоторые из этих функций. Например, некоторые интеграции поддерживают ведение журнала и трассировку, но не метрики. Функции телеметрии также можно отключить с помощью методов, представленных в разделе конфигурации .

Лесозаготовка

Интеграция .NET AspireSeq использует следующие категории журналов:

  • Seq

Трассировка и метрики

Интеграция .NET AspireSeq не генерирует трассировочные действия и/или метрики, поскольку это приемник телеметрии, а не источник телеметрии.

См. также