Обучение
Модуль
Использование телеметрии в проекте .NET Aspire - Training
В этом модуле вы узнаете об использовании телеметрии для записи поведения облачного приложения и о том, как стек .NET Aspire упрощает хранение данных и его просмотр позже.
Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
включает в себя: интеграцию хостинга и
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.
В проекте узла приложения вызовите 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 может быть медленным при запуске, поэтому лучше использовать постоянный жизненный цикл, чтобы избежать ненужных перезапусков. Дополнительные сведения см. в разделе Срок службы ресурса контейнера.
Чтобы начать Seq, необходимо принять . Чтобы принять соглашение в коде, передайте переменную среды ACCEPT_EULA
в контейнер Seq и задайте для нее значение Y
. Приведенный выше код передает эту переменную в цепочке вызова WithEnvironment.
Зарегистрируйте Seq в каталоге данных в проекте узла приложения, чтобы сохранить данные и конфигурацию Seqмежду перезапусками приложения.
var seq = builder.AddSeq("seq", seqDataDirectory: "./seqdata")
.ExcludeFromManifest()
.WithLifetime(ContainerLifetime.Persistent);
Указанный каталог уже должен существовать.
Чтобы добавить том данных в ресурс 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, вызовите метод 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: монтирование привязок.
Чтобы приступить к работе с интеграцией клиента .NET AspireSeq, установите 📦Aspire.Seq пакет NuGet в проекте, использующем клиент, то есть в проекте приложения, использующего клиент Seq.
dotnet add package Aspire.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 обрабатывает следующее:
false
, которая пытается подключиться к конечной точке Seq на сервере /health
./health
, которая указывает, что все зарегистрированные проверки работоспособности должны пройти, чтобы приложение считалось готовым принимать трафик.
.NET
.NET Aspire интеграции автоматически настраивают конфигурации журналирования, трассировки и метрик, которые иногда называются пилонами наблюдаемости. Дополнительные сведения об наблюдаемости интеграции и телеметрии см. в .NET.NET Aspire обзоре интеграции. В зависимости от резервной службы некоторые интеграции могут поддерживать только некоторые из этих функций. Например, некоторые интеграции поддерживают ведение журнала и трассировку, но не метрики. Функции телеметрии также можно отключить с помощью методов, представленных в разделе конфигурации
Интеграция .NET AspireSeq использует следующие категории журналов:
Seq
Интеграция .NET AspireSeq не генерирует трассировочные действия и/или метрики, поскольку это приемник телеметрии, а не источник телеметрии.
Отзыв о .NET Aspire
.NET Aspire — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Обучение
Модуль
Использование телеметрии в проекте .NET Aspire - Training
В этом модуле вы узнаете об использовании телеметрии для записи поведения облачного приложения и о том, как стек .NET Aspire упрощает хранение данных и его просмотр позже.
Документация
.NET Aspire NATS интеграция - .NET Aspire
Узнайте, как использовать интеграцию .NET AspireNATS для отправки журналов и трассировок в NATSServer.
интеграция .NET AspireElasticsearch (предварительная версия) - .NET Aspire
Узнайте, как использовать интеграцию .NET AspireElasticsearch, которая включает как хостинг, так и интеграцию с клиентами.
интеграция EventStore с Community Toolkit .NET.NET Aspire - .NET Aspire
Узнайте, как использовать размещение .NET Aspire EventStore и интеграцию client для того, чтобы запустить контейнер EventStore и получить доступ к нему через EventStore client.