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