Health check — эндпоинт, который сообщает, жив ли сервис. Обычно это GET /health или GET /healthz, который возвращает 200 OK если всё хорошо, 503 если сервис не может работать.
http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
if err := db.PingContext(r.Context()); err != nil {
w.WriteHeader(http.StatusServiceUnavailable)
json.NewEncoder(w).Encode(map[string]string{"status": "unhealthy", "error": err.Error()})
return
}
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(map[string]string{"status": "healthy"})
})
Health check используется балансировщиками (nginx, HAProxy), оркестраторами (Kubernetes) и мониторингом для определения, можно ли слать трафик на инстанс. Проверяй критичные зависимости: БД, кеш, очередь. Не проверяй внешние сервисы — если они лежат, это не значит, что твой сервис мёртв.