Logs estruturados com Seq e .NET no Azure

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

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:

https://github.com/hgmauri/datalust-seq-dotnet

Deixe uma resposta