𝗠𝗼𝗻𝗶𝘁𝗼𝗿𝗶𝗻𝗴 𝗶𝗻 𝗦𝗽𝗿𝗶𝗻𝗴 𝗕𝗼𝗼𝘁
Bir üretim uygulaması sadece çalışmaktan fazlasını yapmalıdır. Gözlemlenebilir olmalı ve hata verdiğinde düzeltilmesi kolay olmalıdır. Sağlık kontrollerine (health checks), metriklere, loglara ve olayları (incidents) yönetmek için net prosedürlere ihtiyacınız vardır.
Spring Boot, bu özellikleri sağlamak için Actuator kullanır. Actuator size health, metrics ve info gibi uç noktalar (endpoints) sunar. Bunları HTTP veya JMX üzerinden dışa açabilirsiniz.
İzlenmesi gereken temel alanlar:
• Erişilebilirlik: Çalışma süresini (uptime), hazır olma (readiness) ve canlılık (liveness) durumlarını kontrol edin. • Performans: Yanıt sürelerini, gecikmeyi (latency) ve işlem hacmini (throughput) takip edin. • Hatalar: HTTP 4xx/5xx hatalarını ve başarısız mesajları izleyin. • JVM: Heap, bellek, CPU ve thread'leri izleyin. • Veritabanı: Bağlantı havuzlarını (connection pools) ve yavaş sorguları takip edin. • Kafka: Tüketici gecikmesini (consumer lag) ve yeniden deneme oranlarını izleyin.
Metrik Toplama
Spring Boot, metrikleri toplamak için Micrometer kullanır. Bu metrikleri dışa açmak için Prometheus registry'sini kullanabilirsiniz. Yaygın bir kurulum şunları içerir:
Spring Boot App → Prometheus → Grafana
Bu, uygulama verilerini panellerde (dashboards) görselleştirmenize olanak tanır.
Loglama İçin En İyi Uygulamalar
Loglar, bir hata sırasında neler olduğunu anlamanıza yardımcı olur. Logların makineler tarafından okunabilir olması için üretim ortamında yapılandırılmış (structured) JSON loglama kullanın.
Yapılması gerekenler:
- orderId veya customerId gibi iş kimliklerini (business IDs) loglayın.
- Tek bir isteğe ait logları birbirine bağlamak için correlation ID'ler kullanın.
- İstisnalar (exceptions) için stack trace'leri dahil edin.
- Yapılandırılmış loglar kullanın.
Yapılmaması gerekenler:
- Şifreleri, token'ları veya kişisel verileri loglamayın.
- Döngüler içinde çok fazla veri loglamayın.
- System.out.println kullanmayın.
- Hataları boş catch bloklarıyla gizlemeyin.
Operasyonel Kararlılık
Operasyonel destek, servisi yayına aldıktan sonra kararlı tutmak anlamına gelir. Şunlara odaklanmalısınız:
- Sorunları araştırmak için olay desteği (incident support).
- Sorunları erkenden yakalamak için paneller (dashboards) ve uyarılar (alerts).
- Kurtarma adımlarına rehberlik etmek için runbook'lar.
- Başarısız sürümler için geri alma (rollback) stratejileri.
Güçlü bir Spring Boot servisi; izlemesi, hata ayıklaması (debug) ve kurtarması kolaydır.
Kaynak: https://dev.to/antonio_casado_1fe39cd90e/monitoring-in-spring-boot-1220