Поделиться через


интеграция .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 сервер за пределами .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 не осуществляет трассировку или метрики, поскольку это приемник телеметрии, а не источник телеметрии.

См. также