Udostępnij za pośrednictwem


integracja .NET AspireSeq

obejmuje:integrację hostingu oraz Client integrację

Seq to server do samodzielnego hostowania wyszukiwania i analizy, który obsługuje ustrukturyzowane dzienniki aplikacji i pliki śledzenia. Zawiera on magazyn zdarzeń JSON i prosty język zapytań, który ułatwia korzystanie z nich. Możesz użyć integracji .NET AspireSeq do wysyłania danych protokołu OpenTelemetry Protocol (OTLP) do Seq. Integracja obsługuje trwałe dzienniki i ślady po ponownym uruchomieniu aplikacji.

Podczas programowania program .NET.NET Aspire jest uruchamiany i łączy się z obrazem kontenera datalust/seq.

Integracja hostingu

Model integracji Seq hostuje server jako typ SeqResource. Aby uzyskać dostęp do tego typu i interfejsu API, dodaj pakiet NuGet 📦Aspire.Hosting.Seq w projekcie hosta aplikacji.

dotnet add package Aspire.Hosting.Seq

Aby uzyskać więcej informacji, zobacz dotnet add package lub Zarządzaj zależnościami pakietów w .NET aplikacjach.

Dodawanie zasobu Seq

W projekcie hosta aplikacji wywołaj AddSeq, aby dodać i zwrócić konstruktor zasobów 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...

Notatka

Kontener Seq może być powolny do uruchomienia, dlatego najlepiej użyć trwałego czasu życia, aby uniknąć niepotrzebnych ponownych uruchomień. Aby uzyskać więcej informacji, zobacz okres istnienia zasobu kontenera.

Zaakceptuj umowę licencyjną użytkownika oprogramowania Seq (EULA)

Aby Seq rozpocząć, musisz zaakceptować Seq EULA. Aby zaakceptować umowę w kodzie, przekaż zmienną środowiskową ACCEPT_EULA do kontenera Seq i ustaw jego wartość na Y. Powyższy kod przekazuje tę zmienną w wywołaniu łańcuchowym do WithEnvironment.

Seq w manifeście .NET Aspire

Seq nie powinien być częścią manifestu wdrożenia .NET Aspire, dlatego wykonano połączenie łańcuchowe do ExcludeFromManifest. Zaleca się skonfigurowanie bezpiecznego Seqserver produkcyjnego poza .NET Aspire dla środowiska produkcyjnego.

Trwałe dzienniki i ślady

Zarejestruj Seq przy użyciu katalogu danych w projekcie hosta aplikacji, aby zachować dane i konfigurację Seqmiędzy ponownymi uruchomieniami aplikacji:

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

Określony katalog musi już istnieć.

Dodawanie zasobu Seq z woluminem danych

Aby dodać wolumin danych do zasobu Seq, wywołaj metodę WithDataVolume w zasobie 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);

Przestrzeń danych jest używana do przechowywania danych Seq poza cyklem życia kontenera. Wolumin danych jest instalowany w ścieżce /data w kontenerze Seq, a gdy nie podano parametru name, nazwa jest generowana losowo. Aby uzyskać więcej informacji na temat danych woluminów i tego, dlaczego są preferowane w porównaniu do montowania typu wiązania, zobacz dokumentację: Volumes.

Dodaj zasób Seq z montowaniem powiązania danych

Aby dodać punkt montowania powiązania danych do zasobu Seq, wywołaj metodę 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);

Ważny

Montaże powiązane danych mają ograniczoną funkcjonalność w porównaniu z woluminami , które zapewniają lepszą wydajność, przenośność i bezpieczeństwo, co czyni je bardziej odpowiednimi do środowisk produkcyjnych. Jednak punkty montowania umożliwiają bezpośredni dostęp i modyfikację plików w systemie hosta, co jest idealne do rozwoju i testowania, gdzie potrzebne są zmiany w czasie rzeczywistym.

Montowania powiązań danych polegają na systemie plików maszyny hosta do przechowywania danych Seq podczas ponownych uruchomień kontenera. Punkt montowania powiązania danych jest montowany jako C:\Data w systemie Windows (lub /Data w Unix) na ścieżce maszyny hosta w kontenerze Seq. Aby uzyskać więcej informacji na temat montowania powiązań danych, zobacz Docker docs: Bind mounts.

Client integracja

Aby rozpocząć pracę z integracją .NET AspireSeqclient, zainstaluj 📦Aspire.Seq pakiet NuGet w projekcie korzystającym z client, czyli projektu dla aplikacji korzystającej z Seqclient.

dotnet add package Aspire.Seq

Dodaj Seqclient

W pliku Program.cs projektu wykorzystującego clientużyj metody rozszerzenia AddSeqEndpoint, aby zarejestrować eksporterów protokołu OpenTelemetry do wysyłania dzienników i śladów do Seq oraz pulpitu nawigacyjnego .NET Aspire. Metoda przyjmuje parametr nazwy połączenia.

builder.AddSeqEndpoint(connectionName: "seq");

Napiwek

Parametr connectionName musi być zgodny z nazwą używaną podczas dodawania zasobu Seq w projekcie hosta aplikacji. Innymi słowy, podczas wywoływania AddSeq i podania nazwy seq, tej samej nazwy należy użyć podczas wywoływania AddSeqEndpoint. Aby uzyskać więcej informacji, zobacz Dodaj zasób Seq.

Konfiguracja

Integracja .NET AspireSeq oferuje wiele opcji konfigurowania połączenia z Seq na podstawie wymagań i konwencji projektu.

Korzystanie z dostawców konfiguracji

Integracja .NET AspireSeq obsługuje Microsoft.Extensions.Configuration. Ładuje SeqSettings z konfiguracji przy użyciu klucza Aspire:Seq. Poniższy fragment kodu to przykład pliku appsettings.json, który konfiguruje niektóre opcje:

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

Aby uzyskać pełny schemat integracji SeqclientJSON, zobacz Aspire.Seq/ConfigurationSchema.json.

Używanie delegatów wbudowanych

Możesz również przekazać delegata Action<SeqSettings> configureSettings, aby skonfigurować niektóre lub wszystkie opcje wbudowane, na przykład w celu wyłączenia kontroli kondycji z kodu:

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

Kontrole kondycji

Domyślnie .NET.NET Aspire integracje umożliwiają sprawdzanie kondycji dla wszystkich usług. Aby uzyskać więcej informacji, zobacz omówienie integracji .NET.NET Aspire.

Integracja .NET AspireSeq obsługuje następujące elementy:

  • Dodaje kontrolę kondycji, gdy SeqSettings.DisableHealthChecks jest false, która próbuje nawiązać połączenie z punktem końcowym /healthSeqserver.
  • Integruje się z punktem końcowym HTTP /health, który określa, że wszystkie zarejestrowane kontrole kondycji muszą zostać przekazane, aby aplikacja została uznana za gotową do akceptowania ruchu.

Obserwowanie i telemetria

.NET .NET Aspire integracje automatycznie ustawiają konfiguracje rejestrowania, śledzenia i metryk, które są czasami nazywane filarami obserwowalności. Aby uzyskać więcej informacji na temat możliwości obserwacji integracji i telemetrii, zobacz omówienie integracji .NET.NET Aspire. W zależności od usługi pomocniczej niektóre integracje mogą obsługiwać tylko niektóre z tych funkcji. Na przykład niektóre integracje obsługują rejestrowanie i śledzenie, ale nie metryki. Funkcje telemetrii można również wyłączyć przy użyciu technik przedstawionych w sekcji konfiguracji .

Wyrąb

Integracja .NET AspireSeq używa następujących kategorii dzienników:

  • Seq

Śledzenie i metryki

Integracja .NET AspireSeq nie emituje działań śledzenia ani metryk, ponieważ jest to odbiornik telemetrii, a nie jej źródło.

Zobacz też