Partilhar via


.NET Aspire Seq integração

Inclui:integração de Hosting e integração Client

Seq é um servidor de pesquisa e análise auto-hospedado que lida com logs de aplicativos estruturados e arquivos de rastreamento. Ele inclui um JSON armazenamento de eventos e uma linguagem de consulta simples que o torna fácil de usar. Você pode usar a integração de .NET AspireSeq para enviar dados de protocolo OpenTelemetry (OTLP) para Seq. A integração suporta logs e rastreamentos persistentes em reinicializações de aplicativos.

Durante o desenvolvimento, .NET.NET Aspire é executado e conecta-se à imagem de contentor datalust/seq.

Integração de hospedagem

A integração de hospedagem Seq modela o servidor como o tipo SeqResource. Para aceder a este tipo e à API, adicione o pacote NuGet 📦Aspire.Hosting.Seq no projeto do host da aplicação .

dotnet add package Aspire.Hosting.Seq

Para obter mais informações, consulte dotnet add package ou Gerir dependências de pacotes em aplicações .NET.

Adicionar um recurso Seq

Em seu projeto de host de aplicativo, chame AddSeq para adicionar e retornar um Seq construtor de recursos.

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

Observação

O contêiner Seq pode demorar a iniciar, por isso é melhor usar um tempo de vida persistente para evitar reinicializações desnecessárias. Para obter mais informações, consulte Tempo de vida do recurso de contêiner.

Aceitar o Seq Contrato de Licença de Usuário Final (EULA)

Você deve aceitar o do EULA para começar. Para aceitar o contrato no código, passe a variável de ambiente ACCEPT_EULA para o contêiner Seq e defina seu valor como Y. O código acima passa essa variável na chamada encadeada para WithEnvironment.

Seq no manifesto .NET Aspire

Seq não deve fazer parte do manifesto de implantação .NET Aspire, por isso a chamada encadeada para ExcludeFromManifest. É recomendável configurar um servidor de Seq de produção seguro fora de .NET Aspire para seu ambiente de produção.

Logs e rastreios persistentes

Registre Seq com um diretório de dados em seu projeto de host de aplicativo para reter os dados e a configuração do Seqnas reinicializações do aplicativo:

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

O diretório especificado já deve existir.

Adicionar um recurso Seq com um volume de dados

Para adicionar um volume de dados ao recurso Seq, chame o método WithDataVolume no 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);

O volume de dados é usado para manter os dados Seq fora do ciclo de vida de seu contêiner. O volume de dados é montado no caminho /data no contêiner Seq e, quando um parâmetro name não é fornecido, o nome é gerado aleatoriamente. Para obter mais informações sobre volumes de dados e detalhes sobre por que eles são preferidos em relação a montagens de ligação, consulte a documentação Docker: Volumes.

Adicionar o recurso Seq com montagem de ligação de dados

Para adicionar uma montagem de ligação de dados ao recurso Seq, chame o 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

Os montagens de ligação de dados têm funcionalidade limitada em comparação com volumes , que oferecem melhor desempenho, portabilidade e segurança, tornando-os mais adequados para ambientes de produção. No entanto, as montagens bind permitem o acesso direto e a modificação de arquivos no sistema host, ideal para desenvolvimento e testes onde alterações em tempo real são necessárias.

As montagens de associação de dados dependem do sistema de arquivos da máquina host para manter os dados Seq nas reinicializações do contêiner. A montagem de associação de dados é montada no caminho C:\Data no Windows (ou /Data no Unix) na máquina host no contêiner Seq. Para obter mais informações sobre montagens de associação de dados, consulte Docker docs: Bind mounts.

Client Integração

Para começar com a integração do cliente .NET AspireSeq, instale o 📦Aspire.Seq pacote NuGet no projeto que consome o cliente, ou seja, o projeto da aplicação que utiliza o cliente Seq.

dotnet add package Aspire.Seq

Adicionar um cliente Seq

No arquivo de Program.cs do seu projeto que consome cliente, chame o método de extensão AddSeqEndpoint para registrar OpenTelemetry exportadores de protocolo para enviar logs e rastreamentos para Seq e o Painel de .NET Aspire. O método usa um parâmetro de nome de conexão.

builder.AddSeqEndpoint(connectionName: "seq");

Dica

O parâmetro connectionName deve corresponder ao nome usado ao adicionar o recurso Seq no projeto de host do aplicativo. Em outras palavras, quando você chama AddSeq e fornece um nome de seq esse mesmo nome deve ser usado ao chamar AddSeqEndpoint. Para obter mais informações, consulte Adicione um recurso Seq.

Configuração

A integração .NET AspireSeq fornece várias opções para configurar a conexão com Seq com base nos requisitos e convenções do seu projeto.

Usar provedores de configuração

A integração .NET AspireSeq suporta Microsoft.Extensions.Configuration. Ele carrega o SeqSettings da configuração usando a tecla Aspire:Seq. O trecho a seguir é um exemplo de um arquivo appsettings.json que configura algumas das opções:

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

Para obter o esquema completo de integração do cliente SeqJSON, consulte Aspire.Seq/ConfigurationSchema.json.

Usar delegados embutidos

Além disso, você pode passar o Action<SeqSettings> configureSettings delegado para configurar algumas ou todas as opções embutidas, por exemplo, para desativar as verificações de integridade do código:

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

Controlos sanitários

Por padrão, as integrações .NET.NET Aspire habilitam verificações de integridade para todos os serviços. Para obter mais informações, consulte .NET.NET Aspire visão geral das integrações.

A integração .NET AspireSeq lida com o seguinte:

  • Adiciona a verificação de integridade quando SeqSettings.DisableHealthChecks é false, que tenta ligar-se ao ponto final /health do servidor Seq.
  • Integra-se com o endpoint HTTP /health, que especifica que todas as verificações de integridade registadas devem ser aprovadas para que a aplicação seja considerada pronta para aceitar tráfego.

Observabilidade e telemetria

.NET .NET Aspire integrações configuram automaticamente Registo, Rastreamento e Métricas, que às vezes são conhecidos como os pilares da observabilidade. Para obter mais informações sobre observabilidade e telemetria de integração, consulte Visão geral de integrações .NET.NET Aspire. Dependendo do serviço de suporte, algumas integrações podem suportar apenas alguns desses recursos. Por exemplo, algumas integrações suportam registro em log e rastreamento, mas não métricas. As funcionalidades de telemetria também podem ser desativadas usando as técnicas apresentadas na seção Configuração.

Registo

A integração .NET AspireSeq usa as seguintes categorias de log:

  • Seq

Rastreamento e métricas

A integração .NET AspireSeq não emite atividades de rastreamento e/ou métricas porque é um coletor de telemetria, não uma fonte de telemetria.

Ver também