Episode ini membahas observability dan troubleshooting Firecracker: membaca log dengan level dan ratelimit, mengambil metrics lewat API /metrics, tracing, debugging lewat serial console, menangani error KVM dan kegagalan restore snapshot, serta memakai firecracker --help dan gdb saat semua cara lain gagal.

Sistem yang sehat di skala ribuan microVM adalah sistem yang terlihat. Episode 20 membahas observability dan troubleshooting: bagaimana Firecracker melaporkan kondisinya, dan bagaimana kalian men-debug kegagalan — dari error boot sampai restore snapshot yang gagal.
Mengapa episode ini penting? Di dunia container, debugging punya ekosistem yang mapan. Di dunia microVM, semua itu harus dibangun di atas log, metrics, dan serial console Firecracker — dan sebagian besar incident platform serverless berakar pada debugging yang terlalu lama. Menguasai observability berarti mempersingkat waktu pemulihan dari jam menjadi menit.
Log Firecracker keluar ke stderr (atau file yang diarahkan). Level dan format bisa diatur lewat API:
curl --unix-socket /tmp/firecracker.sock -i \
-X PUT http://localhost/logger \
-H 'Accept: application/json' -H 'Content-Type: application/json' \
-d '{
"level": "Info",
"log_path": "/logs/firecracker.log"
}'Poin penting membaca log:
Error untuk hanya error, Info untuk siklus hidup normal, Debug untuk troubleshooting mendalam. Naikkan level hanya saat men-debug — Debug berisik dan mahal.log_path, level, dan interval ratelimit lewat PUT /logger.Contoh baris yang akan kalian lihat saat debug:
[2026-08-13T04:00:00.000Z] [INFO] VMM
[2026-08-13T04:00:00.100Z] [WARN] FirecrackerKebiasaan yang sehat: arahkan log semua VM ke log terpusat (via log_path ke file, lalu di-tail oleh agent), jangan meninggalkan log di host ephemeral.
Firecracker mengekspos metrik dalam format Prometheus di GET /metrics — data siklus hidup yang bisa di-scrape dan di-alert. Ambil contoh:
curl --unix-socket /tmp/firecracker.sock http://localhost/metricsMetrik yang tersedia mencakup:
fc_api_requests, vmm_* state, start_time/end_time.Pola penggunaan di produksi:
Metrics adalah data objektif yang menjawab "apakah sistem berjalan sehat" — pasangan dari log yang menjawab "mengapa tidak".
Untuk menelusuri alur request end-to-end (dari request masuk → orchestrator → restore → resume), tambahkan konteks tracing di API Firecracker:
curl --unix-socket /tmp/firecracker.sock -i \
-X PUT http://localhost/metrics/config \
-H 'Accept: application/json' -H 'Content-Type: application/json' \
-d '{ "metrics_path": "/metrics", "res_metrics": true }'Tracing di sini memberi korrelasi antara request API dan operasi internal Firecracker — berguna saat kalian ingin tahu mengapa restore melambat: apakah karena I/O disk snapshot, kompetisi CPU, atau antrian API. Gabungkan dengan tracing orchestrator untuk gambaran menyeluruh.
Tip
Mulailah observability dari tiga sumber minimum: log (apa yang terjadi), metrics (seberapa buruk), dan health check (apakah VM hidup). Tracing ditambahkan saat kalian perlu menelusuri penyebab antar komponen. Jangan bangun tracing mahal sebelum log dan metrics sudah berjalan.
Saat guest bermasalah — boot hang, kernel panic, aplikasi tidak jalan — serial console adalah jendela yang paling jujur:
Di dalam console kalian bisa melihat: log boot kernel, di mana proses berhenti, dan apa yang guest katakan saat gagal. Untuk guest yang punya getty di serial, kalian bahkan bisa login dan menyelidiki lebih dalam. Serial console tidak tergantikan untuk debugging boot — tidak ada dashboard yang bisa menggantikannya.
Error: KVM not available saat start./dev/kvm ada? kvm-ok bilang apa? grep -cE 'vmx|svm' /proc/cpuinfo bukan nol? Group kvm punya user non-root?PUT /snapshot/load error.cpu_template dan vcpu_count antara pembuat snapshot dan host tujuan. Ketidakcocokan adalah penyebab nomor satu.console=ttyS0 ada di boot args? Kernel uncompressed? Rootfs punya init?409 Conflict setelah start.firecracker --help dan gdbKetika log tidak cukup, dua alat terakhir:
firecracker --helpfirecracker --help mencetak seluruh flag proses — termasuk yang tidak ada di dokumentasi utama. Ini sumber kebenaran tentang apa yang bisa dikonfigurasi proses.
Untuk kasus crash yang paling sulit, gdb bisa di-attach ke proses Firecracker untuk melihat backtrace:
sudo gdb -p $(pgrep -f "firecracker" | head -1)Di dalam gdb, periksa thread dan backtrace untuk memahami titik crash. Ini langkah terakhir dan paling dalam — biasanya dibutuhkan saat menghadapi bug VMM yang belum dikenal.
Inti yang harus dibawa pulang:
PUT /logger: level, log_path, dan ratelimit yang bisa diatur.GET /metrics untuk alert dan trend kapasitas.firecracker --help dan gdb adalah alat terakhir saat log tidak cukup.Di episode 21 selanjutnya kita akan melihat ke belakang layar proyek: Ekosistem rust-vmm & Kolaborasi — berbagi crate seperti kvm-ioctls, vm-memory, dan virtio-devices yang dipakai Firecracker, Cloud Hypervisor, dan crosvm; perkembangan monorepo dan dukungan RISC-V; serta komunitas GitHub, Slack, roadmap, dan governance Firecracker.