Delen via


integratie van .NET AspireSeq

omvat:hostingintegratie en Client integratie

Seq is een zelf-hostende zoek- en analyse-server die gestructureerde toepassingslogboeken en traceringsbestanden verwerkt. Het bevat een JSON gebeurtenisarchief en een eenvoudige querytaal waarmee u deze eenvoudig kunt gebruiken. U kunt de .NET AspireSeq-integratie gebruiken om OpenTelemetry Protocol-gegevens (OTLP) naar Seqte verzenden. De integratie ondersteunt permanente logboeken en traceringen voor het opnieuw opstarten van toepassingen.

Tijdens de ontwikkeling draait .NET.NET Aspire en maakt verbinding met de datalust/seq containerimage.

Hostingintegratie

Seq host de integratie en modelleert server als het SeqResource-type. Als u toegang wilt krijgen tot dit type en de API, voegt u het 📦Aspire.Hosting.Seq NuGet-pakket toe aan het app-hostproject.

dotnet add package Aspire.Hosting.Seq

Zie dotnet pakket toevoegen of Pakketafhankelijkheden beheren in .NET toepassingenvoor meer informatie.

Een Seq-resource toevoegen

Roep in uw app-hostproject AddSeq aan om een Seq resourcebouwer toe te voegen en te retourneren.

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...

Notitie

De Seq-container kan traag starten, dus kunt u het beste een permanente levenscyclus gebruiken om onnodige herstarts te voorkomen. Zie Levensduur van containerresourcesvoor meer informatie.

Accepteer de Seq gebruiksrechtovereenkomst (EULA)

U moet de Seq eula- accepteren om Seq te starten. Als u de overeenkomst in code wilt accepteren, geeft u de omgevingsvariabele ACCEPT_EULA door aan de Seq-container en stelt u de waarde ervan in op Y. De bovenstaande code geeft deze variabele door in de gekoppelde aanroep naar WithEnvironment.

Seq in het .NET Aspire-manifest

Seq mag geen deel uitmaken van het .NET Aspiredeploymentmanifest, vandaar de seriële aanroep naar ExcludeFromManifest. Het is raadzaam om een veilige productie-Seqserver buiten .NET Aspire in te stellen voor uw productieomgeving.

Permanente logboeken en traceringen

Registreer Seq bij een gegevensmap in uw app-hostproject om de gegevens en configuratie van Seqbij het opnieuw opstarten van de toepassing te behouden:

var seq = builder.AddSeq("seq", seqDataDirectory: "./seqdata")
                 .ExcludeFromManifest()
                 .WithLifetime(ContainerLifetime.Persistent);

De opgegeven map moet al bestaan.

Een Seq-resource toevoegen met een gegevensvolume

Als u een gegevensvolume wilt toevoegen aan de Seq-resource, roept u de methode WithDataVolume aan voor de Seq resource:

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);

Het gegevensvolume wordt gebruikt om de Seq gegevens buiten de levenscyclus van de container te behouden. Het gegevensvolume wordt gekoppeld aan het /data pad in de Seq container en wanneer er geen name parameter wordt opgegeven, wordt de naam willekeurig gegenereerd. Voor meer informatie over gegevensvolumes en details over waarom ze de voorkeur hebben boven bind mounts, zie Docker docs: Volumes.

Seq resource toevoegen met koppeling voor gegevensbinding

Als u een koppeling voor gegevensbinding wilt toevoegen aan de Seq-resource, roept u de WithDataBindMount methode aan:

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);

Belangrijk

Data koppelpunten hebben een beperkte functionaliteit vergeleken met volumes, die betere prestaties, draagbaarheid en beveiliging bieden, waardoor ze geschikter zijn voor productieomgevingen. Bind-mounts bieden echter directe toegang tot en de mogelijkheid om bestanden op het hostsysteem te wijzigen, wat ideaal is voor ontwikkeling en testen waar realtime wijzigingen nodig zijn.

Gegevensbindingen zijn afhankelijk van het bestandssysteem van de hostcomputer om de Seq gegevens te bewaren bij het herstarten van de container. De koppeling voor gegevensbinding wordt gekoppeld aan de C:\Data in Windows (of /Data op Unix) op de hostcomputer in de Seq container. Zie Docker docs: Bindingskoppelingenvoor meer informatie over koppelingskoppelingen voor gegevens.

integratie van Client

Installeer de 📦Aspireom aan de slag te gaan met de .NET AspireSeqclient-integratie.Seq NuGet-pakket in het client-verbruikende project, dat wil gezegd het project voor de toepassing die gebruikmaakt van de Seqclient.

dotnet add package Aspire.Seq

Een Seqclient toevoegen

Roep in het Program.cs-bestand van uw client-consumerende project de AddSeqEndpoint-extensiemethode aan om OpenTelemetry-protocolexporteurs te registreren voor het verzenden van logbestanden en traces naar Seq en het .NET Aspire-dashboard. De methode gebruikt een verbindingsnaamparameter.

builder.AddSeqEndpoint(connectionName: "seq");

Tip

De parameter connectionName moet overeenkomen met de naam die wordt gebruikt bij het toevoegen van de Seq resource in het app-hostproject. Met andere woorden, wanneer u AddSeq aanroept en een naam opgeeft van seq diezelfde naam moet worden gebruikt bij het aanroepen van AddSeqEndpoint. Zie Een Seq-resource toevoegenvoor meer informatie.

Configuratie

De .NET AspireSeq-integratie biedt meerdere opties voor het configureren van de verbinding met Seq op basis van de vereisten en conventies van uw project.

Configuratieproviders gebruiken

De .NET AspireSeq-integratie ondersteunt Microsoft.Extensions.Configuration. Het laadt de SeqSettings vanuit de configuratie met behulp van de Aspire:Seq-sleutel. Het volgende codefragment is een voorbeeld van een appsettings.json-bestand waarmee een aantal van de opties wordt geconfigureerd:

{
  "Aspire": {
    "Seq": {
      "DisableHealthChecks": true,
      "ServerUrl": "http://localhost:5341"
    }
  }
}

Voor het volledige schema van Seqclient-integratie JSON, zie Aspire.Seq/ConfigurationSchema.json.

Gebruik inline delegates

U kunt ook de Action<SeqSettings> configureSettings delegate doorgeven om enkele of alle opties inline in te stellen, bijvoorbeeld om gezondheidscontroles vanuit de code uit te schakelen.

builder.AddSeqEndpoint("seq", static settings => 
{
    settings.DisableHealthChecks  = true;
    settings.ServerUrl = "http://localhost:5341"
});

Gezondheidscontroles

Standaard zijn .NET.NET Aspire integraties met gezondheidscontroles voor alle diensten ingeschakeld. Zie .NET.NET Aspire overzicht van integratiesvoor meer informatie.

De .NET AspireSeq-integratie verwerkt het volgende:

  • Hiermee wordt de statuscontrole toegevoegd wanneer SeqSettings.DisableHealthChecks is false, waarmee verbinding wordt gemaakt met het /health-eindpunt van de Seqserver.
  • Kan worden geïntegreerd met het /health HTTP-eindpunt, waarmee alle geregistreerde statuscontroles moeten worden doorgegeven zodat de app als gereed wordt beschouwd voor het accepteren van verkeer.

Waarneembaarheid en telemetrie

.NET .NET Aspire integraties stellen automatisch configuraties in voor logging, tracing, en metrics, die ook wel bekend staan als de pijlers van observability. Zie .NET.NET Aspire overzicht van integratieintegratiesvoor meer informatie over de waarneembaarheid en telemetrie van integraties. Afhankelijk van de back-upservice ondersteunen sommige integraties mogelijk slechts enkele van deze functies. Sommige integraties ondersteunen bijvoorbeeld logboekregistratie en tracering, maar geen metrische gegevens. Telemetriefuncties kunnen ook worden uitgeschakeld met behulp van de technieken die worden weergegeven in de sectie Configuratie.

Loggen

De .NET AspireSeq-integratie maakt gebruik van de volgende logboekcategorieën:

  • Seq

Tracering en metrische gegevens

De integratie van .NET AspireSeq verzendt geen traceringsactiviteiten en/of metrische gegevens omdat het een telemetrie-ontvanger is en geen telemetriebron.

Zie ook