DEV Community

Cover image for 📝 Mapeando Logs do .NET com Zabbix
Danilo O. Pinheiro, dopme.io
Danilo O. Pinheiro, dopme.io

Posted on

📝 Mapeando Logs do .NET com Zabbix

No ecossistema moderno de observabilidade, os logs são elementos fundamentais para rastrear o comportamento de aplicações, identificar falhas e monitorar performance. Embora o .NET forneça mecanismos nativos de logging via ILogger, muitas empresas utilizam Zabbix como plataforma de monitoramento, integrando logs e métricas em um ambiente centralizado.

Este artigo explora como mapear logs de aplicações .NET utilizando o ILogger e integrá-los ao Zabbix, trazendo detalhes técnicos e arquiteturais para implementação.


⚙️ Arquitetura da Solução

A arquitetura de integração entre .NET e Zabbix segue este fluxo:

  1. Aplicação .NET gera logs usando ILogger.
  2. Os logs podem ser processados e enviados por um Zabbix Sender.
  3. O Zabbix Server recebe os eventos.
  4. Os logs ficam disponíveis em dashboards do Zabbix para análise.

🏗️ Configuração no .NET

1. Criando o Projeto

dotnet new webapi -n DotNetZabbixDemo cd DotNetZabbixDemo 
Enter fullscreen mode Exit fullscreen mode

2. Configurando o Logging com ILogger

No arquivo Program.cs:

var builder = WebApplication.CreateBuilder(args); // Configuração de logging padrão builder.Logging.ClearProviders(); builder.Logging.AddConsole(); var app = builder.Build(); app.MapGet("/health", (ILogger<Program> logger) => { logger.LogInformation("Health check chamado em {time}", DateTime.UtcNow); return Results.Ok("API está saudável"); }); app.Run(); 
Enter fullscreen mode Exit fullscreen mode

📡 Enviando Logs para o Zabbix

O Zabbix não possui conector nativo para ILogger, mas podemos usar o Zabbix Sender.

1. Instalar o Zabbix Sender

No servidor de aplicação:

sudo apt-get install zabbix-sender 
Enter fullscreen mode Exit fullscreen mode

2. Enviar Logs

No .NET, podemos invocar o zabbix_sender via Process.Start:

using System.Diagnostics; public static class ZabbixLogger { public static void SendToZabbix(string host, string key, string value) { var process = new Process { StartInfo = new ProcessStartInfo { FileName = "zabbix_sender", Arguments = $"-z zabbix.server.com -s {host} -k {key} -o \"{value}\"", RedirectStandardOutput = true, RedirectStandardError = true, UseShellExecute = false, CreateNoWindow = true } }; process.Start(); process.WaitForExit(); } } 
Enter fullscreen mode Exit fullscreen mode

Uso dentro de um endpoint:

app.MapGet("/order/{id}", (int id, ILogger<Program> logger) => { logger.LogInformation("Consulta de pedido {id}", id); ZabbixLogger.SendToZabbix("dotnet-api", "order.request", $"Pedido consultado: {id}"); return Results.Ok(new { Id = id, Status = "Processado" }); }); 
Enter fullscreen mode Exit fullscreen mode

📊 Configuração no Zabbix

  1. Criar Host no Zabbix com o nome do servidor da aplicação.
  2. Criar Item para chave order.request.
  3. Visualizar logs recebidos em Latest Data.
  4. Criar Dashboard/Zabbix Screens para exibir métricas e logs recebidos.

🔍 Boas Práticas

✔️ Estruturar logs com ILogger para facilitar parsing.
✔️ Criar chaves específicas no Zabbix para cada tipo de evento.
✔️ Usar níveis de log (Information, Warning, Error) para priorização.
✔️ Integrar alertas do Zabbix com canais como Slack, Teams ou e-mail.


✅ Conclusão

A integração entre .NET e Zabbix permite centralizar logs e métricas em um único ambiente de observabilidade. Embora não exista integração nativa, o uso de Zabbix Sender torna o processo simples e altamente eficaz. Essa abordagem garante maior visibilidade, ajudando equipes a reagirem rapidamente a falhas e a manterem aplicações em alta disponibilidade.


🤝 Conecte-se Comigo

Se você trabalha com .NET moderno e quer dominar arquitetura, logging, DevOps ou interoperabilidade, vamos conversar:

💼 LinkedIn
✍️ Medium
📬 contato@dopme.io


⁶ Levantai os vossos olhos para os céus, e olhai para a terra em baixo, porque os céus desaparecerão como a fumaça, e a terra se envelhecerá como roupa, e os seus moradores morrerão semelhantemente; porém a minha salvação durará para sempre, e a minha justiça não será abolida.
Isaías 51:6

Top comments (0)