Health Checks در ASP.NET Core چیست؟
Endpointی استاندارد که وضعیت سلامت یک برنامه و وابستگیهایش (دیتابیس، سرویس بیرونی) را گزارش میدهد — پایه مانیتورینگ و Auto-Healing در محیط Production.
چرا مهم است؟
در محیطهای ابری/Kubernetes، Load Balancer یا Orchestrator باید بداند یک Instance سالم است یا نه تا ترافیک را به آن بفرستد یا آن را ریاستارت کند؛ Health Check دقیقاً همین سیگنال را میدهد.
تعریف
AddHealthChecks() یک Endpoint (معمولاً /health) اضافه میکند که وضعیت برنامه و وابستگیهای ثبتشده (دیتابیس، Redis، سرویس بیرونی) را با یک Status ساده (Healthy/Degraded/Unhealthy) برمیگرداند.
مثال
builder.Services.AddHealthChecks()
.AddSqlServer(connectionString, name: "database")
.AddRedis(redisConnectionString, name: "cache");
app.MapHealthChecks("/health");
کاربرد در زیرساخت
- Kubernetes Liveness/Readiness Probe: اگر Health Check شکست بخورد، Kubernetes Pod را ریاستارت یا از چرخه Load Balancer خارج میکند.
- مانیتورینگ: ابزارهایی مثل Grafana/Prometheus میتوانند این Endpoint را دورهای Poll کنند.
اشتباه رایج
❌ Health Checkای که فقط return Healthy ثابت برمیگرداند بدون بررسی واقعی وابستگیها — چنین Health Checkی هیچ سیگنال واقعی نمیدهد؛ حتماً اتصال به دیتابیس/سرویسهای حیاتی را واقعاً تست کنید.
منبع و مطالعه بیشتر
خلاصه
Health Checks یک Endpoint استاندارد برای گزارش سلامت برنامه و وابستگیهایش میسازد که Kubernetes/Load Balancer از آن برای تصمیمگیری استفاده میکند. Health Check باید واقعاً وابستگیها را تست کند، نه ثابت Healthy برگرداند. مرجع کامل: مستندات Health Checks، Microsoft Learn.
