Belajar HAProxy - Logging & Basic Monitoring
Episode 7 of 23

Belajar HAProxy - Logging & Basic Monitoring

Episode ini membuat HAProxy terlihat: logging via syslog dengan format yang bisa dibaca, halaman statistik dan stats socket untuk melihat kondisi real-time, serta dasar membaca metrik seperti request rate, response time, dan status kesehatan server.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Load balancer yang bagus harus transparan. Kalian harus tahu request apa yang masuk, ke server mana diteruskan, berapa lama prosesnya, dan apakah server masih sehat. Episode 7 membangun jendela observasi itu.

Kalian akan mengaktifkan logging HTTP yang informatif, membuka halaman statistik, dan memakai stats socket untuk mengambil data tanpa GUI. Metrik yang kalian pelajari di sini adalah cikal bakal SLO yang dibahas di episode 21.

Logging via Syslog

Konfigurasi Dasar

HAProxy menulis log melalui syslog. Aktifkan logging di section global dan defaults:

Aktifkan logging HTTP
global
    log /dev/log local0
    log /dev/log local1 notice
 
defaults
    mode http
    option httplog
    log global
    option dontlognull

Direktif log /dev/log local0 mengarahkan log ke syslog lokal, dan option httplog mengaktifkan format log HTTP yang kaya informasi. option dontlognull mencegah log untuk koneksi kosong yang tidak menghasilkan request.

Format Log HTTP

Satu baris log HTTP terlihat seperti ini:

Contoh baris log HTTP
127.0.0.1:52314 [10/Aug/2026:08:15:30.001] web_front/2: web_back/web1 0/0/0/12/12 200 567 - - ---- 1/1/1/1/0 0/0

Informasi penting di dalamnya:

  • IP dan port klien: 127.0.0.1:52314.
  • Timestamp dan nama frontend.
  • Backend dan server yang menangani: web_back/web1.
  • Durasi request dalam milidetik: 12 milidetik total.
  • Kode status HTTP: 200.
  • Ukuran respons: 567 byte.

Halaman Statistics

Mengaktifkan Stats Page

Cara termudah melihat kondisi HAProxy adalah halaman statistik:

Halaman statistik di port terpisah
listen stats
    bind *:8404
    mode http
    stats enable
    stats uri /stats
    stats refresh 10s
    stats auth admin:s3cret
 
frontend web_front
    bind *:80
    mode http
    default_backend web_back
 
backend web_back
    balance roundrobin
    server web1 127.0.0.1:8080 check
    server web2 127.0.0.1:8081 check

Direktif stats enable menyalakan halaman, stats uri /stats menentukan path-nya, dan stats auth admin:s3cret melindunginya dengan login. Buka http://localhost:8404/stats di browser untuk melihat tabel frontend dan backend secara real-time.

Metrik yang Wajib Dikenali

Di halaman tersebut, perhatikan kolom-kolom ini:

  • Cur: jumlah koneksi aktif saat ini.
  • Req: jumlah request yang diproses.
  • Sessions: total sesi yang ditangani.
  • Status: UP, DOWN, atau MAINT untuk setiap server.
  • LastChk: hasil health check terakhir.

Stats Socket

Mengaktifkan dan Memakai Unix Socket

Stats socket memberi akses command-line ke runtime HAProxy, dasar dari runtime API di episode 9:

Aktifkan stats socket
global
    stats socket /run/haproxy.sock mode 660 level admin
    stats timeout 30s

Setelah reload, socket bisa dipakai dengan socat:

Query stats lewat socket
echo "show stat" | socat stdio /run/haproxy.sock
echo "show info" | socat stdio /run/haproxy.sock

Perintah echo "show stat" | socat stdio /run/haproxy.sock mengembalikan tabel statistik dalam format CSV, dan echo "show info" | socat stdio /run/haproxy.sock menampilkan informasi proses.

Format CSV dan Filtering

Output show stat berbentuk CSV dengan baris pertama sebagai nama kolom. Untuk melihat status server saja, filter dengan awk atau cut:

Filter status server dari CSV
echo "show stat" | socat stdio /run/haproxy.sock \
  | awk -F, '/web_back/{print $1, $2, $18}'

Baris tersebut menampilkan nama backend, nama server, dan kolom status. Membiasakan membaca CSV ini sangat membantu untuk otomasi di episode 18.

Dasar Membaca Metrik

Request Rate dan Response Time

Dua angka yang paling sering dikepo:

  • Request rate: jumlah request per detik. Bisa dilihat dari delta counter Req antar dua pengambilan sample.
  • Response time: waktu yang dihabiskan server backend untuk menjawab, terlihat dari angka durasi di log HTTP.

Keduanya memberi gambaran cepat apakah sistem sehat atau sedang di bawah tekanan.

Status Kesehatan Server

Health check menghasilkan status per server. Pola yang harus diwaspadai:

  • Satu server DOWN: trafik dibagi ke yang tersisa, perhatikan kapasitas.
  • Server naik-turun (flapping): periksa interval dan toleransi fall dan rise.
  • Semua server DOWN: layanan mati total, segera jalankan runbook.
Cek status semua server
echo "show servers state web_back" | socat stdio /run/haproxy.sock

echo "show servers state web_back" | socat stdio /run/haproxy.sock menampilkan state server dalam format yang bisa diprogram.

Penutup

Episode 7 membuat HAProxy bisa diintai: log yang informatif, halaman statistik yang intuitif, dan socket yang bisa diprogram. Ini fondasi observability yang akan diperdalam di episode 18.

Inti yang harus dibawa pulang:

  • option httplog memberi log HTTP yang kaya informasi.
  • Halaman stats di port terpisah adalah tampilan visual tercepat.
  • Stats socket memungkinkan query dan otomasi via socat.
  • Waspadai server DOWN, flapping, dan semua server mati.
  • Request rate dan response time adalah dua metrik paling mendasar.

Di episode 8 selanjutnya kita akan membahas SSL/TLS & security — TLS termination dan re-encryption, dukungan HTTP/2, tuning cipher suite dan HSTS, serta manajemen sertifikat yang benar.

Belajar HAProxy - Logging & Basic Monitoring | Belajar HAProxy