integración .NET AspireSeq
incluye: integración de hospedaje de e integración de
Client
Seq es un servidor de búsqueda y análisis autohospedado que controla los registros de aplicaciones estructurados y los archivos de seguimiento. Incluye un almacén de eventos JSON y un lenguaje de consulta sencillo que facilita el uso. Puede usar la integración de .NET AspireSeq para enviar datos del Protocolo OpenTelemetry (OTLP) a Seq. La integración admite registros y seguimientos persistentes en los reinicios de la aplicación.
Durante el desarrollo, .NET.NET Aspire se ejecuta y conecta a la imagen del contenedor datalust/seq
.
Integración de hospedaje
La integración de alojamiento de Seq modela el servidor como el tipo SeqResource. Para acceder a este tipo y a la API, agregue el paquete NuGet 📦Aspire.Hosting.Seq en el proyecto host de la aplicación.
dotnet add package Aspire.Hosting.Seq
Para obtener más información, consulte dotnet add package o Gestionar las dependencias de paquetes en .NET applications.
Añade un recurso Seq
En el proyecto host de la aplicación, utilice AddSeq para agregar y devolver un constructor de recursos 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...
Nota
El contenedor de Seq puede ser lento para iniciar, por lo que es mejor utilizar una vida útil persistente para evitar reinicios innecesarios. Para obtener más información, consulte duración de vida del recurso de contenedor.
Aceptar el contrato de licencia de usuario final (CLUF) de Seq
Para comenzar, debe aceptar el Seq CLUF de Seq. Para aceptar el contrato en el código, pase la variable de entorno ACCEPT_EULA
al contenedor de Seq y establezca su valor en Y
. El código anterior pasa esta variable en la invocación encadenada a WithEnvironment.
Seq en el manifiesto .NET Aspire
Seq no debe formar parte del manifiesto de despliegue de .NET Aspire, de ahí la llamada encadenada a ExcludeFromManifest. Se recomienda configurar un servidor de Seq de producción seguro fuera de .NET Aspire para el entorno de producción.
Registros y seguimientos persistentes
Registre el Seq mediante un directorio de datos en el proyecto host de la aplicación para conservar los datos y la configuración de Seqen todos los reinicios de la aplicación.
var seq = builder.AddSeq("seq", seqDataDirectory: "./seqdata")
.ExcludeFromManifest()
.WithLifetime(ContainerLifetime.Persistent);
El directorio especificado ya debe existir.
Agregar un recurso Seq con un volumen de datos
Para agregar un volumen de datos al recurso de Seq, llame al método WithDataVolume en el recurso 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);
El volumen de datos se usa para conservar los datos de Seq fuera del ciclo de vida del contenedor. El volumen de datos se monta en la ruta /data
en el contenedor Seq y, cuando no se proporciona un parámetro name
, el nombre se genera aleatoriamente. Para obtener más información sobre los volúmenes de datos y los detalles sobre por qué se prefieren a montajes enlazados, consulte los Docker documentos: Volúmenes.
Adición del recurso Seq con montaje vinculante de datos
Para agregar un montaje de enlace para datos al recurso de Seq, llame al método 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);
Importante
Los montajes de enlace de datos tienen una funcionalidad limitada en comparación con los volúmenes, que ofrecen un mejor rendimiento, portabilidad y seguridad, lo que los hace más adecuados para entornos de producción. Sin embargo, los montajes de vinculación permiten el acceso directo y la modificación de archivos en el sistema host, lo que es ideal para el desarrollo y las pruebas donde se requieren cambios inmediatos.
Los montajes de enlace de datos dependen del sistema de archivos de la máquina anfitriona para conservar los datos de Seq durante los reinicios del contenedor. El montaje de enlace de datos está montado en la ruta de acceso C:\Data
en Windows (o /Data
en Unix) en la máquina anfitriona en el contenedor Seq. Para obtener más información sobre los montajes vinculados de datos, consulte la documentación Docker: Montajes vinculados.
integración Client
Para empezar a trabajar con la integración del cliente de .NET AspireSeq, instale el paquete NuGet 📦Aspire.Seq en el proyecto consumidor del cliente, es decir, el proyecto de la aplicación que usa el cliente de Seq.
dotnet add package Aspire.Seq
Agregar un cliente de Seq
En el archivo Program.cs del proyecto que consume el cliente, llame al método de extensión AddSeqEndpoint para registrar exportadores de protocolo OpenTelemetry para enviar registros y seguimientos a Seq y al panel de .NET Aspire. El método toma un parámetro de nombre de conexión.
builder.AddSeqEndpoint(connectionName: "seq");
Propina
El parámetro connectionName
debe coincidir con el nombre usado al agregar el recurso Seq en el proyecto host de la aplicación. Es decir, cuando se llama a AddSeq
y se proporciona un nombre de seq
ese mismo nombre se debe usar al llamar a AddSeqEndpoint
. Para obtener más información, consulte Añadir Seq un recurso.
Configuración
La integración de .NET AspireSeq proporciona varias opciones para configurar la conexión a Seq en función de los requisitos y convenciones del proyecto.
Uso de proveedores de configuración
La integración de .NET AspireSeq admite Microsoft.Extensions.Configuration. Carga el SeqSettings desde la configuración mediante la clave Aspire:Seq
. El fragmento de código siguiente es un ejemplo de un archivo appsettings.json que configura algunas de las opciones:
{
"Aspire": {
"Seq": {
"DisableHealthChecks": true,
"ServerUrl": "http://localhost:5341"
}
}
}
Para obtener el esquema de integración completo del cliente SeqJSON, consulte Aspire.Seq/ConfigurationSchema.json.
Utiliza delegados en línea
También puede pasar el delegado Action<SeqSettings> configureSettings
para configurar algunas o todas las opciones en línea, por ejemplo, para deshabilitar desde el código las comprobaciones de salud:
builder.AddSeqEndpoint("seq", static settings =>
{
settings.DisableHealthChecks = true;
settings.ServerUrl = "http://localhost:5341"
});
Client comprobaciones de salud de integración
De forma predeterminada, las integraciones de cliente .NET.NET Aspire tienen las comprobaciones de estado habilitadas para todos los servicios. Del mismo modo, muchas .NET.NET Aspireintegraciones de hosting también habilitan los endpoints de verificación de estado. Para obtener más información, consulte:
- .NET comprobaciones de estado de la aplicación en C#
- Controles de salud en ASP.NET Core
La integración de .NET AspireSeq controla lo siguiente:
- Agrega la comprobación de estado cuando SeqSettings.DisableHealthChecks es
false
, que intenta conectarse al punto de conexión de Seq del servidor de/health
. - Se integra con el punto de conexión HTTP de
/health
, que especifica que todas las verificaciones de estado registradas deben superarse para que la aplicación se considere lista para recibir tráfico.
Observabilidad y telemetría
.NET .NET Aspire integraciones configuran automáticamente las configuraciones de registro, seguimiento y métricas, que a veces se conocen como los pilares de la observabilidad. Para obtener más información sobre la observabilidad de integración y la telemetría, consulte información general sobre las integraciones de .NET.NET Aspire. En función del servicio de respaldo, algunas integraciones solo pueden admitir algunas de estas características. Por ejemplo, algunas integraciones admiten el registro y el seguimiento, pero no las métricas. Las características de telemetría también se pueden deshabilitar mediante las técnicas presentadas en la sección Configuración.
Registro
La integración de .NET AspireSeq usa las siguientes categorías de registro:
Seq
Seguimiento y métricas
La integración de .NET AspireSeq no emite actividades de seguimiento ni métricas porque actúa como receptor de telemetría, no como un origen de telemetría.