Integração: Seq¶
Visão Geral¶
Seq é a plataforma de centralização de logs utilizada pelo CIBA. Integra nativamente com Serilog e oferece query poderosa, filtros e UI amigável.
Responsabilidades: - Centralização de logs da aplicação - Busca e filtro por propriedades estruturadas - Visualização em tempo real - Queries salvas (Signals)
Acesso¶
| Ambiente | Dashboard | Ingestion |
|---|---|---|
| Desenvolvimento | http://localhost:8082 | http://localhost:5341 |
| Produção | Via SSH tunnel (porta 8082) | http://ciba-seq:5341 (interno) |
Configuração¶
Docker Compose¶
Desenvolvimento (docker-compose.dev.yaml):
seq:
image: datalust/seq:latest
container_name: ciba-seq
restart: unless-stopped
mem_limit: 512m
cpus: 0.5
environment:
- ACCEPT_EULA=Y
- SEQ_FIRSTRUN_NOAUTHENTICATION=true
ports:
- "5341:5341" # Ingestion API
- "8082:80" # Web UI
volumes:
- seq_data:/data
Produção (deploy/docker-compose.services.yml):
ciba-seq:
image: datalust/seq:latest
container_name: ciba-seq
restart: unless-stopped
mem_limit: 512m
cpus: 0.5
environment:
- ACCEPT_EULA=Y
- SEQ_FIRSTRUN_NOAUTHENTICATION=true
volumes:
- ciba_seq_data:/data
networks:
- proxy-net
ports:
- "127.0.0.1:8082:80" # Só localhost - use SSH tunnel para acesso remoto
Serilog¶
Desenvolvimento (appsettings.Development.json):
{
"Serilog": {
"WriteTo": [
{
"Name": "Seq",
"Args": {
"serverUrl": "http://localhost:5341"
}
}
]
}
}
Produção (appsettings.json):
{
"Serilog": {
"WriteTo": [
{
"Name": "Seq",
"Args": {
"serverUrl": "http://ciba-seq:5341"
}
}
]
}
}
Pacote NuGet¶
Propriedades Disponíveis¶
O CIBA envia logs estruturados com as seguintes propriedades:
| Propriedade | Descrição | Exemplo |
|---|---|---|
Application |
Nome da aplicação | Ciba |
RequestMethod |
Método HTTP | POST |
RequestPath |
Caminho da requisição | /api/messages |
StatusCode |
Código de resposta | 200 |
Elapsed |
Tempo de execução (ms) | 45.32 |
RequestName |
Nome do comando MediatR | SendMessageCommand |
ElapsedMs |
Tempo do handler (ms) | 120 |
SourceContext |
Classe de origem do log | Ciba.Api.Handlers.MessageHandler |
TraceId |
ID de rastreamento | abc123def456 |
Queries Úteis¶
Erros e Exceções¶
Requisições Lentas (> 500ms)¶
Logs de um Handler Específico¶
Filtrar por Nível¶
Buscar por Texto¶
Combinações¶
Fluxo de Logs¶
Aplicação (.NET)
↓
Serilog
↓
Sink Seq (HTTP POST para localhost:5341)
↓
Seq Server
↓
Dashboard (localhost:8082)
Boas Práticas¶
Logs Estruturados¶
Correto:
_logger.LogInformation("Mensagem processada {@Context}", new {
TenantId = tenant.Id,
ConversationId = conversation.Id,
ProcessingTime = elapsed.TotalMilliseconds
});
Evitar:
_logger.LogInformation($"Mensagem do tenant {tenant.Id} processada em {elapsed.TotalMilliseconds}ms");
Níveis de Log¶
| Nível | Uso |
|---|---|
Debug |
Informações detalhadas para debugging |
Information |
Eventos normais da aplicação |
Warning |
Situações inesperadas mas não críticas |
Error |
Erros que impactam funcionalidade |
Fatal |
Erros que impedem a aplicação de funcionar |
Troubleshooting¶
Logs não aparecem no Seq¶
-
Verificar se o container está rodando:
-
Verificar se a porta está acessível:
-
Verificar configuração do Serilog em
appsettings.Development.json
Container não inicia¶
Verificar se a porta 8082 ou 5341 está em uso:
Acesso em Produção¶
O dashboard do Seq em produção está acessível apenas via localhost (127.0.0.1). Para acessar remotamente:
Via SSH Tunnel:
Considerações de Produção¶
| Item | Status | Recomendação |
|---|---|---|
| Autenticação | Não configurada | Considerar habilitar para ambientes com múltiplos usuários |
| Retenção | Padrão Seq | Configurar política de retenção conforme necessidade |
| Backup | Volume Docker | Incluir ciba_seq_data no backup de volumes |