Compartilhar via


integração .NET AspireSeq

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

Seq é uma server de pesquisa e análise auto-hospedada que lida com logs de aplicativos estruturados e arquivos de rastreamento. Ele inclui um repositório de eventos JSON e uma linguagem de consulta simples que facilitam o uso. Você pode usar a integração .NET AspireSeq para enviar dados do Protocolo OpenTelemetry (OTLP) para Seq. A integração dá suporte a logs e rastreamentos persistentes durante reinicializações do aplicativo.

Durante o desenvolvimento, .NET.NET Aspire é executado e se conecta à imagem de contêiner datalust/seq.

Integração de hospedagem

O modelo de integração de hospedagem Seq configura o server como o tipo SeqResource. Para acessar esse tipo e a API, adicione o 📦Aspire.Hosting.Seq pacote NuGet no projeto do host do aplicativo .

dotnet add package Aspire.Hosting.Seq

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

Adicionar um recurso de Seq

No projeto de host do aplicativo, chame AddSeq para adicionar e retornar um construtor 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

O contêiner de pode ser lento para começar, portanto, é melhor usar um tempo de vida persistente de para evitar reinicializações desnecessárias. Para obter mais informações, consulte Tempo de Vida do Recurso Contêiner.

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

Você deve aceitar o EULASeq para Seq iniciar. 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 que você configure um Seqserver seguro fora de .NET Aspire para o seu ambiente de produção.

Logs e rastreamentos persistentes

Registre Seq em um diretório de dados no projeto host do seu aplicativo para manter os dados e a configuração de Seqentre as 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 armazenar os dados de Seq independentemente do ciclo de vida do 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 vez de montagens de vínculo, consulte Docker documentação: Volumes.

Adicionar Seq recurso com a montagem de associação de dados

Para adicionar uma montagem de associaçã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

As montagens de dados associadas têm funcionalidade limitada quando comparadas aos volumes , que oferecem melhor desempenho, portabilidade e segurança, tornando-os mais adequados para ambientes de produção. No entanto, as bind mounts permitem acesso direto e modificação de arquivos no sistema host, o que é ideal para desenvolvimento e testes em que se necessita de alterações em tempo real.

As montagens de associação de dados dependem do sistema de arquivos do computador host para persistir os dados Seq entre reinicializações de contêiner. A montagem da associação de dados é montada no caminho C:\Data no Windows (ou /Data no Unix) no computador host no contêiner Seq. Para obter mais informações sobre montagens de dados com associação, consulte Docker documentação: Montagens associadas.

integração Client

Para começar a usar a integração .NET AspireSeqclient, instale o 📦Aspire.Seq pacote NuGet no projeto que consome client, ou seja, o projeto do aplicativo que usa o Seqclient.

dotnet add package Aspire.Seq

Adicionar um Seqclient

No arquivo Program.cs do seu projeto que consome client, chame o método de extensão AddSeqEndpoint para registrar exportadores do Protocolo OpenTelemetry para enviar logs e traces para Seq e o Painel .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 mais informações, consulte Adicionar 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 dá suporte a Microsoft.Extensions.Configuration. Ele carrega o SeqSettings da configuração utilizando a chave Aspire:Seq. O snippet 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 JSON de integração Seqclient completo, consulte Aspire.Seq/ConfigurationSchema.json.

Usar delegados embutidos

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

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

Verificações de saúde

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 de integrações.

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

  • Adiciona a verificação de integridade quando SeqSettings.DisableHealthChecks estiver em false, que tenta se conectar ao endpoint /health do Seqserver.
  • Integra-se ao endpoint HTTP /health, que especifica que todas as verificações de integridade registradas devem ser aprovadas para que o aplicativo seja considerado pronto para aceitar tráfego.

Observabilidade e telemetria

.NET .NET Aspire integrações configuram automaticamente configurações de Log, Rastreamento e Métricas, que às vezes são conhecidas como os pilares da observabilidade. Para obter mais informações sobre a observabilidade e a telemetria de integração, consulte .NET.NET Aspire visão geral das integrações. Dependendo do serviço de backup, algumas integrações só podem dar suporte a alguns desses recursos. Por exemplo, algumas integrações dão suporte a registro em log e rastreamento, mas não a métricas. Os recursos de telemetria também podem ser desabilitados usando as técnicas apresentadas na seção Configuration.

Registro

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.

Consulte também