Freigeben über


.NET Aspire Seq-Integration

umfasst:Hosting-Integration und Client-Integration

Seq ist ein selbst gehostetes Such- und Analyse-server, das strukturierte Anwendungsprotokolle und Tracedateien verarbeitet. Sie enthält einen JSON Ereignisspeicher und eine einfache Abfragesprache, die die Verwendung erleichtert. Sie können die .NET AspireSeq-Integration verwenden, um OpenTelemetry-Protokolldaten (OTLP) an Seqzu senden. Die Integration unterstützt persistente Protokolle und Ablaufverfolgungen auch bei einem Neustart der Anwendung.

Während der Entwicklung wird .NET.NET Aspire ausgeführt und verbindet sich mit dem datalust/seq Container-Image.

Hosting-Integration

Das Seq Hostintegrationsmodell modelliert server als SeqResource Typ. Um auf diesen Typ und die API zuzugreifen, fügen Sie das NuGet-Paket 📦Aspire.Hosting.Seq im Projekt App-Host hinzu.

dotnet add package Aspire.Hosting.Seq

Weitere Informationen finden Sie unter dotnet add package oder Verwalten von Paketabhängigkeiten in .NET Anwendungen.

Hinzufügen einer Seq-Ressource

Rufen Sie in Ihrem App-Hostprojekt AddSeq auf, um einen Seq Ressourcen-Generator hinzuzufügen und zurückzugeben.

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

Anmerkung

Der Seq Container kann langsam starten, daher ist es am besten, eine persistente Lebensdauer zu verwenden, um unnötige Neustarts zu vermeiden. Weitere Informationen finden Sie unter Lebensdauer von Containerressourcen.

Akzeptieren sie den Seq Endbenutzer-Lizenzvertrag (EULA)

Sie müssen die Seq EULA- akzeptieren, damit Seq beginnen kann. Um die Vereinbarung im Code zu akzeptieren, übergeben Sie die Umgebungsvariable ACCEPT_EULA an den container Seq, und legen Sie den Wert auf Yfest. Der obige Code übergibt diese Variable im verketteten Aufruf an WithEnvironment.

Seq im .NET Aspire Manifest

Seq sollte nicht Teil des .NET AspireBereitstellungsmanifestssein, daher der verkettete Aufruf von ExcludeFromManifest. Es wird empfohlen, eine sichere Produktions-Seqserver außerhalb von .NET Aspire für Ihre Produktionsumgebung einzurichten.

Persistente Protokolle und Ablaufverfolgungen

Registrieren Sie Seq mit einem Datenverzeichnis in Ihrem Anwendungs-Hostprojekt, um die Daten und die Konfiguration von Seqüber Anwendungsneustarts hinweg beizubehalten.

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

Das angegebene Verzeichnis muss bereits vorhanden sein.

Hinzufügen einer Seq-Ressource mit einem Datenvolumen

Rufen Sie die WithDataVolume-Methode für die Seq-Ressource auf, um der Seq-Ressource ein Datenvolume hinzuzufügen:

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

Das Datenvolumen wird verwendet, um die Seq-Daten außerhalb des Lebenszyklus des Containers zu speichern. Das Datenvolume wird am /data Pfad im Container Seq eingehängt, und wenn kein name-Parameter angegeben wird, wird der Name zufällig generiert. Weitere Informationen zu Datenvolumes und Details dazu, warum sie gegenüber bind-Mountsbevorzugt werden, finden Sie in der Docker-Dokumentation: Volumes.

Hinzufügen Seq Ressource mit Datenbindungs-Bereitstellung

Um der Seq-Ressource ein Daten-Bind-Mount hinzuzufügen, rufen Sie die WithDataBindMount-Methode auf:

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

Wichtig

Data Bind-Mounts haben im Vergleich zu Volumeseine eingeschränkte Funktionalität, da sie eine bessere Leistung, Portabilität und Sicherheit bieten, was sie für Produktionsumgebungen besser geeignet macht. Bind-Mounts ermöglichen jedoch den direkten Zugriff und die Bearbeitung von Dateien auf dem Hostsystem und sind ideal für die Entwicklung und das Testen, wenn Echtzeitänderungen erforderlich sind.

Datenbindungs-Bereitstellungen basieren auf dem Dateisystem des Hostcomputers, um die Seq Daten über Containerneustarts hinweg beizubehalten. Die Datenbindemontage wird unter Windows auf dem C:\Data-Pfad (oder auf dem /Data unter Unix) auf dem Hostcomputer im Container Seq eingebunden. Weitere Informationen zu Daten-Bind-Mounts finden Sie unter Docker: Bind-Mount-Dokumentation.

Client Integration

Um mit der .NET AspireSeqclient-Integration zu beginnen, installieren Sie das 📦Aspire-Seq NuGet-Paket im Projekt client, das heißt, in dem Projekt für die Anwendung, die die Seqclientverwendet.

dotnet add package Aspire.Seq

Füge Seqclient hinzu

Rufen Sie in der Program.cs-Datei Ihres client-verbrauchenden Projekts die AddSeqEndpoint-Erweiterungsmethode auf, um OpenTelemetry-Protokollexportierer zu registrieren, damit Protokolle und Ablaufverfolgungen an Seq und das .NET Aspire-Dashboard gesendet werden. Die Methode verwendet einen Verbindungsnamenparameter.

builder.AddSeqEndpoint(connectionName: "seq");

Tipp

Der parameter connectionName muss mit dem Namen übereinstimmen, der beim Hinzufügen der Seq-Ressource im App-Hostprojekt verwendet wird. Anders ausgedrückt: Wenn Sie AddSeq aufrufen und einen Namen von seq angeben, soll derselbe Name beim Aufrufen von AddSeqEndpointverwendet werden. Weitere Informationen finden Sie unter Hinzufügen einer Seq Ressource.

Konfiguration

Die .NET AspireSeq-Integration bietet mehrere Optionen zum Konfigurieren der Verbindung mit Seq basierend auf den Anforderungen und Konventionen Ihres Projekts.

Konfigurationsanbieter verwenden

Die .NET AspireSeq-Integration unterstützt Microsoft.Extensions.Configuration. Sie lädt die SeqSettings mithilfe des Aspire:Seq Schlüssels aus der Konfiguration. Der folgende Codeausschnitt ist ein Beispiel für eine appsettings.json Datei, die einige der Optionen konfiguriert:

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

Die vollständige Seqclient-Integration des JSON-Schemas finden Sie unter Aspire.Seq/ConfigurationSchema.json.

Verwenden Sie Inline-Delegaten

Sie können auch den Action<SeqSettings> configureSettings Delegat übergeben, um einige oder alle Optionen inline einzurichten, z. B. um Integritätsprüfungen aus Code zu deaktivieren:

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

Gesundheitsprüfungen

Standardmäßig aktivieren .NET.NET Aspire Integrationen Integritätsprüfungen für alle Dienste. Weitere Informationen finden Sie unter .NET.NET Aspire Integrationsübersicht.

Die .NET AspireSeq Integration behandelt Folgendes:

  • Fügt die Integritätsprüfung hinzu, wenn SeqSettings.DisableHealthChecksfalseist, wodurch versucht wird, eine Verbindung mit dem /health-Endpunkt des Seqserverherzustellen.
  • Integriert in den /health HTTP-Endpunkt, der angibt, dass alle registrierten Gesundheitsprüfungen bestehen müssen, damit die App als zum Annehmen von Datenverkehr bereit gilt.

Beobachtbarkeit und Telemetrie

.NET .NET Aspire Integrationen richten automatisch Protokollierungs-, Ablaufverfolgungs- und Metrikkonfigurationen ein, die manchmal als die Säulen der Beobachtbarkeitbezeichnet werden. Weitere Informationen zur Integrationsbeobachtbarkeit und Telemetrie finden Sie unter .NET.NET Aspire Übersicht über Integrationen. Abhängig vom unterstützenden Dienst können einige Integrationen nur bestimmte dieser Funktionen unterstützen. Beispielsweise unterstützen einige Integrationen Protokollierung und Ablaufverfolgung, aber keine Metriken. Telemetriefeatures können auch mithilfe der techniken deaktiviert werden, die im Abschnitt Configuration dargestellt werden.

Protokollierung

Die .NET AspireSeq-Integration verwendet die folgenden Protokollkategorien:

  • Seq

Ablaufverfolgung und Metriken

Die .NET AspireSeq-Integration gibt keine Ablaufverfolgungsaktivitäten und Metriken aus, da sie eine Telemetriesenke und keine Telemetriequelle ist.

Siehe auch