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)