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
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
});
Os valores podem ser ajustados conforme a criticidade do serviço.
3. Adicione o endpoint de HealthCheck:
app.MapHealthChecks("/health");
🔍 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"
}
}
}
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)
Top comments (0)