Compartir a través de


integración de .NET AspireSeq

Incluye:integración de hospedaje y Client integración

Seq es un server de búsqueda y análisis autoalojado que gestiona los registros estructurados de aplicaciones 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 se conecta a la imagen de contenedor de datalust/seq.

Integración de hospedaje

La integración de alojamiento del Seq modela el server como el tipo SeqResource. Para acceder a este tipo y a la API, agregue el paquete NuGet .Hosting. en el proyecto del 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 de y 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

Debe aceptar el del CLUF de para que se inicie . 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 de .NET Aspire

Seq no debe formar parte del manifiesto de implementación de .NET Aspire, por lo tanto, se realiza la llamada encadenada a ExcludeFromManifest. Es recomendable que configures una Seqserver de producción segura fuera de .NET Aspire para tu 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 de acceso /data en el contenedor Seq y, cuando no se proporciona un parámetro name, el nombre se genera de forma aleatoria. Para obtener más información sobre los volúmenes de datos y los detalles sobre por qué se prefieren a enlazar montajes, consulte 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 de datos tienen una funcionalidad limitada en comparación con los volúmenes de , que ofrecen un mejor rendimiento, portabilidad y seguridad, lo que hace que sean más adecuados para entornos de producción. Sin embargo, los montajes de enlace permiten el acceso directo y la modificación de archivos en el sistema host, ideal para el desarrollo y las pruebas donde se necesitan cambios en tiempo real.

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 se monta en la ruta de acceso C:\Data en Windows (o /Data en Unix) en el equipo host dentro del contenedor Seq. Para obtener más información sobre los montajes vinculados de datos, consulte la documentación Docker: Montajes vinculados.

integración de Client

Para empezar a trabajar con la integración de .NET AspireSeqclient, instale el paquete NuGet 📦Aspire.Seq en el proyecto de consumo client, es decir, el proyecto de la aplicación que usa el Seqclient.

dotnet add package Aspire.Seq

Agregar un Seqclient

En el archivo Program.cs de su proyecto que consume client, utilice el método de extensión AddSeqEndpoint para registrar exportadores del protocolo OpenTelemetry para enviar registros y trazas a Seq y al panel de control 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 Agregar un recurso de Seq.

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 consultar el esquema completo de integración de SeqclientJSON, vea 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"
});

Comprobaciones de estado

De forma predeterminada, las integraciones de .NET.NET Aspire habilitan las comprobaciones de estado de para todos los servicios. Para obtener más información, consulte .NET.NET Aspire integrations overview.

La integración de .NET AspireSeq controla lo siguiente:

  • Agrega la comprobación de estado cuando SeqSettings.DisableHealthChecks sea false, que intenta conectarse al extremo /health del Seqserver.
  • Se integra con el punto de conexión HTTP de /health, que especifica que todas las comprobaciones de estado registradas deben superarse para que la aplicación se considere lista para aceptar el 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.

Consulte también