Episode ini membahas observability NATS: endpoint monitoring /varz, /connz, /jsz, dan /subsz, metrik Prometheus lewat nats_exporter, dashboard Grafana, metrik consumer latency, event akun $SYS untuk audit, dan log rotation.

Messaging system yang tidak terlihat adalah bom waktu. Episode 18 ini menyalakan lampu di atas NATS: kalian akan belajar memantau server, client, stream, dan consumer lewat endpoint monitoring bawaan, metrik Prometheus, dashboard Grafana, serta event akun $SYS untuk audit dan alerting.
Tanpa observability yang baik, semua kehebatan performa di episode 16 tidak bisa dipertahankan di produksi.
Port monitoring (default 8222) menyediakan endpoint JSON:
/varz — status umum server, versi, jumlah pesan./connz — daftar dan detail semua koneksi client./jsz — status JetStream: stream, consumer, storage./subsz — semua subscription beserta statistiknya.curl -s http://localhost:8222/varz | python3 -m json.tool | head -n 30curl -s http://localhost:8222/varz mengembalikan JSON lengkap status server. Untuk produksi, pastikan port monitoring hanya bisa diakses dari jaringan internal.
Endpoint /jsz adalah jendela ke JetStream:
curl -s http://localhost:8222/jszOutput /jsz menampilkan jumlah stream, consumer, total pesan, dan penggunaan storage. Data inilah yang dipakai nats_exporter untuk metrik Prometheus.
nats_exporter menjembatani endpoint NATS ke format Prometheus:
prometheus:
jobs:
- name: nats
static_configs:
- targets: ["nats-exporter:7777"]Konfigurasi targets: ["nats-exporter:7777"] membuat Prometheus memindai nats_exporter di port 7777. Exporter membaca endpoint /varz, /connz, /jsz, dan /subsz, lalu mengekspos metrik berawalan nats_.
Beberapa metrik paling penting:
nats_server_in_msgs dan nats_server_out_msgs — volume pesan.nats_jetstream_stream_messages — jumlah pesan per stream.nats_consumer_ack_pending — pesan menunggu ack.nats_core_subs dan nats_core_connections — skala koneksi.Dashboard Grafana resmi untuk NATS menyediakan panel siap pakai:
pesan per detik | pending per consumer
storage per stream | koneksi aktif
latensi request-reply | redelivery countPanel pending per consumer adalah radar pertama masalah: naik terus berarti consumer tidak mampu mengejar. Dashboard ini mempercepat diagnosis — satu layar untuk seluruh kesehatan messaging.
Latency consumer menunjukkan seberapa cepat pesan sampai ke aplikasi setelah dipublish:
nats consumer report ORDERSnats consumer report ORDERS menampilkan statistik per consumer termasuk delivery latency dan pending. Latensi yang membengkak sering kali menandakan consumer lambat atau storage disk penuh — dua hal yang akan kita bahas di episode 19.
Account khusus $SYS menerima event sistem: koneksi naik, server bergabung cluster, error autentikasi, dan banyak lagi.
nats sub '$SYS.>'nats sub '$SYS.>' mendengarkan semua event sistem. Alerting bisa dibangun di atasnya: kirim notifikasi saat $SYS.ACCOUNT.NEW, server down, atau percobaan autentikasi gagal berulang. Event $SYS adalah tulang punggung postur observability proaktif.
Log server NATS bisa membesar seiring waktu:
logging:
debug: false
trace: false
file: "/var/log/nats.log"Blok logging mengarahkan log ke file. Atur log rotation di sisi sistem — misalnya logrotate — agar file tidak memenuhi disk. Untuk environment K8s, log ke stdout dan biarkan container runtime menangani rotation.
Tip
Aktifkan log debug hanya saat troubleshooting. Log debug penuh di produksi akan menurunkan performa dan menghabiskan disk. Naikkan level log saat investigasi, turunkan setelah selesai.
Episode 18 menjadikan NATS transparan: endpoint /varz, /connz, /jsz, dan /subsz untuk inspeksi langsung, nats_exporter untuk metrik Prometheus, dashboard Grafana untuk visualisasi, metrik consumer latency untuk menjaga respons, event $SYS untuk audit dan alerting, serta log rotation agar log tidak memenuhi disk.
Inti yang harus dibawa pulang:
$SYS menjadi sumber audit dan alerting proaktif.Di episode 19 selanjutnya kita akan membahas troubleshooting — slow consumer dan backpressure, redelivery tak berujung, storage penuh karena max_bytes, kehilangan quorum, subject collision, serta perangkat diagnostik nats server check, nats stream report, nats consumer report, dan log debug. Siap-siap memadamkan api.