DEV Community

Monitoramento de Recursos do Sistema com HealthChecks .NET

Em aplicações modernas, especialmente em ambientes distribuídos e baseados em microsserviços, é essencial garantir que os serviços estejam funcionando corretamente. Os Health Checks (verificações de saúde) são uma das práticas mais importantes para observar o estado interno da aplicação — e o pacote AspNetCore.HealthChecks.System nos ajuda a monitorar diretamente os recursos do sistema operacional, como CPU, memória, disco e tempo de atividade (uptime).

Neste artigo, vamos explorar como adicionar este pacote à sua aplicação ASP.NET Core e configurá-lo de maneira eficaz.


📦 O Que é AspNetCore.HealthChecks.System?

O AspNetCore.HealthChecks.System é um pacote da biblioteca AspNetCore.Diagnostics.HealthChecks que permite monitorar:

  • Uso de CPU
  • Uso de memória
  • Espaço em disco
  • Tempo de atividade do sistema

Esses dados são cruciais para identificar problemas de performance e aplicar políticas de autoescalonamento ou alertas proativos.


🛠️ Como Adicionar à Sua Aplicação ASP.NET Core

1. Instale o pacote NuGet:

dotnet add package AspNetCore.HealthChecks.System
Enter fullscreen mode Exit fullscreen mode

2. Configure o HealthCheck no Program.cs (ou Startup.cs, dependendo da versão do ASP.NET Core):

builder.Services.AddHealthChecks()
    .AddSystemHealthCheck(options =>
    {
        options.AddCpuHealthCheck("cpu", 0.90); // 90% de uso da CPU
        options.AddMemoryHealthCheck("memory", 0.85); // 85% de uso da memória
        options.AddDiskStorageHealthCheck("disk", "C:\\", 0.90); // 90% de uso do disco
        options.AddProcessAllocatedMemoryHealthCheck("allocated_memory", 512 * 1024 * 1024); // 512MB
        options.AddSystemUptimeHealthCheck("uptime", TimeSpan.FromMinutes(10)); // mínimo de 10 minutos de uptime
    });
Enter fullscreen mode Exit fullscreen mode

Os valores podem ser ajustados conforme a criticidade do serviço.

3. Adicione o endpoint de HealthCheck:

app.MapHealthChecks("/health");
Enter fullscreen mode Exit fullscreen mode

🔍 Exemplo de Resposta

Ao acessar https://localhost:5001/health, você verá algo como:

{
  "status": "Healthy",
  "entries": {
    "cpu": {
      "status": "Healthy",
      "description": "CPU usage is under 90%"
    },
    "memory": {
      "status": "Healthy",
      "description": "Memory usage is under 85%"
    },
    "disk": {
      "status": "Healthy",
      "description": "Disk usage is under 90% on drive C:\\"
    },
    "uptime": {
      "status": "Healthy",
      "description": "System uptime is above 10 minutes"
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Esse formato é compatível com ferramentas de orquestração como Kubernetes, Prometheus, Azure Application Insights, entre outros.


⚙️ Dicas e Boas Práticas

  • Ambiente de produção: configure alertas com base nos thresholds definidos (ex: integração com Prometheus + Grafana).
  • Política de fallback: use o resultado do health check para aplicar escalonamento automático ou reinício de pods/containers.
  • Customização: combine com health checks de dependências externas (banco de dados, cache, etc).

📈 Benefícios de Usar HealthChecks

  • Visibilidade em tempo real do estado do sistema
  • Integração com pipelines de CI/CD
  • Monitoramento proativo de falhas
  • Redução do tempo médio de detecção de incidentes (MTTD)

📚 Recursos Complementares


🤝 Conecte-se Comigo

Top comments (0)