𝗠𝗼𝗻𝗶𝘁𝗼𝗿𝗶𝗻𝗴 𝗱𝗮𝗹𝗮𝗺 𝗦𝗽𝗿𝗶𝗻𝗴 𝗕𝗼𝗼𝘁
Aplikasi produksi harus melakukan lebih dari sekadar berjalan. Aplikasi tersebut harus dapat diobservasi dan mudah diperbaiki saat terjadi kegagalan. Anda memerlukan health checks, metrik, log, dan prosedur yang jelas untuk menangani insiden.
Spring Boot menggunakan Actuator untuk menyediakan fitur-fitur ini. Actuator memberi Anda endpoint seperti health, metrics, dan info. Anda dapat mengeksposnya melalui HTTP atau JMX.
Area utama yang perlu dimonitor:
• Ketersediaan: Periksa uptime, readiness, dan liveness. • Performa: Pantau waktu respons, latensi, dan throughput. • Error: Awasi error HTTP 4xx/5xx dan pesan yang gagal. • JVM: Monitor heap, memori, CPU, dan thread. • Database: Pantau connection pool dan query yang lambat. • Kafka: Monitor consumer lag dan tingkat retry.
Pengumpulan Metrik
Spring Boot menggunakan Micrometer untuk mengumpulkan metrik. Anda dapat menggunakan registry Prometheus untuk mengekspos metrik ini. Pengaturan umum melibatkan:
Spring Boot App → Prometheus → Grafana
Ini memungkinkan Anda untuk memvisualisasikan data aplikasi pada dashboard.
Praktik Terbaik Logging
Log membantu Anda memahami apa yang terjadi selama kegagalan. Gunakan structured JSON logging di produksi agar log dapat dibaca oleh mesin.
Lakukan:
- Log ID bisnis seperti orderId atau customerId.
- Gunakan correlation ID untuk menghubungkan log dari satu permintaan tunggal.
- Sertakan stack trace untuk exception.
- Gunakan log terstruktur.
Jangan:
- Log kata sandi, token, atau data pribadi.
- Log terlalu banyak data di dalam loop.
- Gunakan System.out.println.
- Menyembunyikan error dengan blok catch kosong.
Stabilitas Operasional
Dukungan operasional berarti menjaga layanan tetap stabil setelah Anda mendeploy-nya. Anda harus fokus pada:
- Dukungan insiden untuk menyelidiki masalah.
- Dashboard dan alert untuk mendeteksi masalah lebih dini.
- Runbook untuk memandu langkah-langkah pemulihan.
- Strategi rollback untuk rilis yang gagal.
Layanan Spring Boot yang kuat mudah dimonitor, mudah di-debug, dan mudah dipulihkan.
Sumber: https://dev.to/antonio_casado_1fe39cd90e/monitoring-in-spring-boot-1220