Sendo direto ao ponto, o Seq coloca todos os seus logs das aplicações .NET em um sistema de pesquisa rápida que permite rastrear facilmente por informações, alertas e bugs da sua aplicação, além de contar com uma interface simples e prática de utilizar.
Em alguns projetos hospedados no Azure em que eu estava trabalhando, precisava de uma maneira e simples de exibir mensagens de log e o Seq foi ideal pra isso, além de facilitar a criação de painéis de métricas e dashboard.
A execução do Seq localmente ficou muito simples com a imagem do docker. Utilizando a mesma imagem, é possível executar o Seq no Azure de forma simples e de baixo custo em apenas algumas etapas.
Pré-requisitos
- Visual Studio 2022 (.NET 6.0)
- Uma conta no portal Azure
- Nuget package Serilog.AspNetCore, Serilog.Sinks.Seq
Criando a aplicação no Azure
No portal Azure, crie um novo App Service seguindo as informações abaixo:
Certifique-se de escolher:
- Publish =>
Docker Container
- Operating System =>
Linux
.
Você pode definir o Sku and size
para uma versão básica de baixo custo.
Clique no item de menu Docker e configure conforme a imagem abaixo:
Certifique-se de escolher:
- Image Source =>
Docker Hub
- Image and Tag =>
datalust/seq:latest
Clique em Review + create
para instalação do Seq no Azure.
Com a aplicação criada, clique em Configuration e adicione os seguintes parâmetros:
ACCEPT_EULA
=>Y
WEBSITES_PORT
=>80:5341
Em seguida, clique em Path mappings para configurar a persistência dos logs adicionando um novo Azure Storage Mount conforme a imagem abaixo:
- Name => Nome do mapeamento
- Storage accounts => Selecione o Storage Account
- Storage type => Selecione Azure Files (É necessário criar uma nova pasta no item File Shares do Storage Account)
- Storage container => Selecione a pasta criada em File Share
- Mount path => Insira a pasta /data
Com as alterações realizadas, reinicie a aplicação e acesse o endereço do Seq:
Por segurança, acesse o menu de configurações e clique em Account para habilitar a autenticação criando um usuário e senha:
Em seguida, no mesmo menu, clique em API Keys para criar uma chave de configuração do Seq nas aplicações.
Ao criar uma API Key é retornado um token de autorização que será utilizado na configuração da API.
API
O primeiro passo é configurar a classe Program.cs:
A extensão AddSerilog é responsável por configurar o Serilog na aplicação e o acesso ao Seq através do método WriteTo.Seq(url, apiKey, controlLevelSwitch)
. Veja neste artigo como configurar o Serilog em suas aplicações .NET.
Testando
Para realizar os testes, execute os endpoints no Swagger para a geração de telemetria e verifique o resultado da coleta de logs no Seq:
Acessando o item de menu Dashboards, é possível analisar os gráficos padrões e criar novos com filtros e consultas personalizadas:
Finalizando
Ter uma boa infraestrutura de logs é, com total certeza, um item obrigatório para todos os projetos que devem ser monitorados. A união do Seq como coletor, Serilog como biblioteca de logging e o Azure é muito poderosa e de baixo custo. Com ele é possível também criar diagramas para rastrear a ocorrência geral de logs de um nível específico ou com uma propriedade específica.
Lembrando que o Seq é gratuito para um usuário.
Os detalhes completos deste exemplo você encontra no meu GitHub: