🏥 Health Checks = Monitoring
Apps fail silently. Health checks monitor app health. Database, cache, services — all in one.
📝 Health Check Setup
# Install package
dotnet add package Microsoft.AspNetCore.Diagnostics.HealthChecks
# Program.cs
var builder = WebApplication.CreateBuilder(args);
// Add health checks
builder.Services.AddHealthChecks()
.AddDbContextCheck()
.AddUrlGroup(new Uri("https://api.example.com"), "External API")
.AddCheck("Custom")
.AddCheck("Memory", new MemoryHealthCheck(512));
var app = builder.Build();
// Map health check endpoint
app.MapHealthChecks("/health");
app.MapHealthChecks("/health/ready", new HealthCheckOptions
{
Predicate = _ => true
});
app.MapHealthChecks("/health/live", new HealthCheckOptions
{
Predicate = _ => false
});
// Custom health check
public class CustomHealthCheck : IHealthCheck
{
public Task CheckHealthAsync(
HealthCheckContext context,
CancellationToken cancellationToken = default)
{
var isHealthy = CheckSomething();
if (isHealthy)
{
return Task.FromResult(HealthCheckResult.Healthy("Everything is working"));
}
return Task.FromResult(HealthCheckResult.Unhealthy("Something is wrong"));
}
}
🎯 Health Check Types
// Database health
services.AddHealthChecks()
.AddSqlServer(connectionString)
.AddNpgSql(connectionString)
.AddMySql(connectionString);
// Cache health
services.AddHealthChecks()
.AddRedis(connectionString)
.AddMemoryCache();
// HTTP health
services.AddHealthChecks()
.AddUrlGroup(new Uri("https://api.example.com"))
.AddUrlGroup(new Uri("https://cdn.example.com"));
// Custom health with DI
public class DatabaseHealthCheck : IHealthCheck
{
private readonly AppDbContext _context;
public DatabaseHealthCheck(AppDbContext context)
{
_context = context;
}
public async Task CheckHealthAsync(
HealthCheckContext context,
CancellationToken cancellationToken)
{
try
{
await _context.Database.CanConnectAsync(cancellationToken);
return HealthCheckResult.Healthy("Database is healthy");
}
catch (Exception ex)
{
return HealthCheckResult.Unhealthy("Database is unhealthy", ex);
}
}
}
// Health Check Tips
- Check all critical dependencies
- Use separate endpoints (liveness/readiness)
- Monitor in Kubernetes
- Log health check results
- Set appropriate timeouts
💡 Health Check Tips
- Check all critical dependencies
- Use separate endpoints (liveness/readiness)
- Monitor in Kubernetes
- Log health check results
- Set appropriate timeouts
“Health checks monitor app health. Database, cache, services. Essential for production monitoring.”
