← Bütün Patternlər
🩺

Health Check

Servisin düzgün işlədiyini yoxlayan endpoint — Kubernetes liveness/readiness probes-ların əsasıdır.

🎯
Nə üçün lazımdır?

K8s bilməlidir: servis hazırdır? DB-yə qoşulub? Əgər sağlam deyilsə, trafiki göndərmə, servisi restart et.

🏥
2 növ probe

Liveness: Ölübsə restart et. Readiness: Hazır deyilsə trafik yönləndirmə. Hər ikisi fərqli URL-dən baxır.

🛠️
Spring Boot

Spring Actuator: /actuator/health/liveness/actuator/health/readiness endpointləri.

İNTERAKTİV

Vizual İzah

Mərhələ {{ currentStep + 1 }}: {{ steps[currentStep].title }}

☸️
Kubernetes
GET /actuator/health →
← { "status": "UP" }
← { "status": "DOWN" }
⚙️
User Service
🔄 RESTART!
JAVA

Kod Nümunəsi — Spring Actuator + K8s

CustomHealthIndicator.java
@Component
public class DatabaseHealthIndicator implements HealthIndicator {

    @Autowired private DataSource dataSource;

    @Override
    public Health health() {
        try (Connection conn = dataSource.getConnection()) {
            if (conn.isValid(2)) {
                return Health.up()
                    .withDetail("db", "PostgreSQL bağlantısı sağlamdır")
                    .build();
            }
        } catch (SQLException e) {
            return Health.down()
                .withDetail("error", e.getMessage())
                .build();
        }
        return Health.down().build();
    }
}
deployment.yaml (K8s Probes)
spec:
  containers:
    - name: user-service
      livenessProbe:
        httpGet:
          path: /actuator/health/liveness
          port: 8080
        initialDelaySeconds: 30
        periodSeconds: 10
      readinessProbe:
        httpGet:
          path: /actuator/health/readiness
          port: 8080
        initialDelaySeconds: 15
✅ Üstünlükləri
  • K8s avtomatik self-healing (restart, re-route)
  • Custom health check ilə DB/Redis da yoxlanır
  • Zero downtime deployment üçün vacibdir
⚠️ Riskləri
  • Yanlış health check → sağlam servisi öldürər
  • DB yavaşlığı health check-i timeout edər → restart loop
  • initialDelaySeconds düzgün seçilməlidir