Episode ini membahas observability dan production support: metrik JVM dan pengumpulan metrik dengan Micrometer, log management dan structured logging, distributed tracing dengan OpenTelemetry dan Grafana, health check dan readiness probe, serta incident response dan SLO.

Aplikasi di produksi butuh mata yang melihat ke dalam. Episode 22 membahas monitoring, observability, dan production support: metrik JVM dengan Micrometer, log management dan structured logging, distributed tracing dengan OpenTelemetry, serta health check, readiness probe, incident response, dan SLO.
Observability menjawab tiga pertanyaan: apa yang terjadi, mengapa terjadi, dan bagaimana memperbaikinya. Kalian akan membangun sistem yang membuat aplikasi bisa diamati dan dikelola dengan baik di produksi.
Metrik adalah angka terukur tentang perilaku aplikasi: CPU, memori, heap, jumlah thread, dan GC pause. Metrik memberi gambaran kesehatan aplikasi dari waktu ke waktu.
Micrometer menyediakan API metrik terpadu yang bisa diekspor ke berbagai backend (Prometheus, Datadog, Grafana Cloud). Tambahkan dependency:
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId>
<version>1.13.3</version>
</dependency>Buat counter dan timer sederhana:
import io.micrometer.core.instrument.*;
public class MetrikApp {
private final Counter requestCounter;
public MetrikApp(MeterRegistry registry) {
this.requestCounter = Counter.builder("app.request.total")
.description("Total request masuk")
.register(registry);
}
public void handleRequest() {
requestCounter.increment();
}
}Counter.builder("app.request.total") mendaftarkan metrik yang bertambah setiap request.
Structured logging menulis log dalam format terstruktur (JSON) sehingga mudah dicari dan dianalisis. Dengan SLF4J dan Logback, output JSON memuat field seperti timestamp, level, dan message:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Layanan {
private static final Logger log = LoggerFactory.getLogger(Layanan.class);
public void proses(String id) {
log.info("Memproses pesanan dengan id {}", id);
}
}log.info("Memproses pesanan dengan id {}", id) memakai parameterized logging — hindari concatenation string.
Kumpulkan log dari banyak layanan ke satu tempat: ELK Stack (Elasticsearch, Logstash, Kibana) atau Loki + Grafana. Konsolidasi log membuat troubleshooting lintas layanan menjadi mungkin.
Di microservices, satu request melintasi banyak layanan. Distributed tracing melacak perjalanan request itu dengan traceId dan spanId, sehingga kalian bisa melihat di mana waktu dihabiskan.
OpenTelemetry adalah standar observability open source. Tambahkan agent tanpa mengubah kode aplikasi:
java -javaagent:opentelemetry-javaagent.jar \
-Dotel.service.name=aplikasi-demo \
-jar aplikasi.jar-javaagent:opentelemetry-javaagent.jar menginstrumentasi aplikasi secara otomatis, mengirim trace ke backend seperti Grafana Tempo atau Jaeger.
Health check memberi tahu orkestrator apakah aplikasi sehat. Dengan Spring Boot Actuator:
curl http://localhost:8080/actuator/healthcurl http://localhost:8080/actuator/health mengembalikan status UP atau DOWN.
Di Kubernetes, dua probe berbeda:
readinessProbe:
httpGet:
path: /actuator/health/readiness
port: 8080
livenessProbe:
httpGet:
path: /actuator/health/liveness
port: 8080Incident response adalah proses terstruktur saat terjadi masalah: deteksi, triase, mitigasi (rollback), komunikasi, dan post-mortem. Runbook yang terdokumentasi mempercepat pemulihan dan mengurangi kepanikan.
SLO (Service Level Objective) menetapkan target kesehatan, misalnya ketersediaan 99,9%. Alert yang baik memberi tahu tim sebelum SLO terancam, bukan setelah. Metrik Micrometer dan alert rule Prometheus menjadi dasar ini:
error rate < 0.1% -> alert saat mendekati ambangEpisode 22 membahas observability dan production support: metrik JVM dengan Micrometer, log management dan structured logging, distributed tracing dengan OpenTelemetry dan Grafana, health check, readiness probe, incident response, dan SLO.
Inti yang harus dibawa pulang:
Di episode 23 selanjutnya, episode terakhir series ini, kita akan membahas future-proof Java dan ecosystem trends — fitur modern stabil di Java 21, Project Loom dan virtual threads, Project Amber dan pattern matching, Project Panama dan foreign function interface, serta strategi agar skill Java kalian tetap relevan. Sampai jumpa di episode terakhir!