.NET Aspire Seq integração
Inclui: integração de alojamento e
Client integração
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 traces persistentes durante reinicializações de aplicações.
Durante o desenvolvimento, .NET.NET Aspire é executado e conecta-se à imagem de container 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 anfitrião da aplicação .
- .NET CLI
- PackageReference
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 a Seq EULA para Seq 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 .NET Aspiremanifesto de implantação, daí 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.
Registos 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 vinculada 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
As montagens de ligação de dados têm funcionalidade limitada em comparação com os 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 ligação de dados é instalada no caminho C:\Data
no Windows (ou /Data
no Unix) na máquina anfitriã no contentor 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.
- .NET CLI
- PackageReference
dotnet add package Aspire.Seq
Adicionar um cliente Seq
No arquivo Program.cs do seu projeto que consome o cliente, chame o método de extensão AddSeqEndpoint para registar os exportadores de protocolo OpenTelemetry para enviar logs e traços para Seq e para o Dashboard .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 a partir da configuração usando a chave 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, pode passar o delegado Action<SeqSettings> configureSettings
para configurar algumas ou todas as opções embutidas, por exemplo, para desativar as verificações de integridade a partir do código:
builder.AddSeqEndpoint("seq", static settings =>
{
settings.DisableHealthChecks = true;
settings.ServerUrl = "http://localhost:5341"
});
Client verificações de saúde de integração
Por padrão, .NET.NET Aspireintegrações de cliente têm verificações de integridade habilitadas para todos os serviços. Da mesma forma, muitas integrações de hospedagem .NET.NET Aspire também habilitam pontos finais de verificação de integridade. Para mais informações, consulte:
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 Seq do servidor/health
. - 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.