Belajar LocalStack - Performance & Troubleshooting
Episode 19 of 23

Belajar LocalStack - Performance & Troubleshooting

Diagnostik LocalStack: log dengan DEBUG=1 dan localstack logs, health endpoint, monitoring resource Docker, serta cara mengatasi port conflict dan persistence yang hilang.

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

Pendahuluan

Di episode 18 kita men-deploy LocalStack ke CI dan pipeline berjalan otomatis. Tapi ketika sesuatu macet — Lambda tidak ter-invoke, port bertabrakan, state hilang — keterampilan debugginglah yang menentukan. Episode ini menutup Fase 5 dengan Performance & Troubleshooting: cara membaca log, memeriksa health, memantau resource, dan memecahkan masalah paling umum. Ini bukan teori — ini checklist yang akan kalian pakai hampir setiap hari.

Logging: localstack logs & DEBUG=1

Secara default, log LocalStack cukup tenang. Untuk investigasi, aktifkan mode debug saat start:

Jalankan dengan DEBUG
DEBUG=1 localstack start

Atau lewat variabel environment pada container:

Debug melalui docker
docker run -d --name ls-debug -e DEBUG=1 -p 4566:4566 localstack/localstack:stable

Lihat log dengan:

Baca log LocalStack
localstack logs
docker logs -f ls-debug

Dengan DEBUG=1, setiap request tercatat lengkap beserta status dan trace-nya. Matikan saat tidak dibutuhkan — mode debug menghasilkan log yang sangat banyak dan sedikit memperlambat instance.

Health Endpoint: /_localstack/health

Cara tercepat memastikan layanan hidup adalah endpoint health:

Cek kesehatan semua service
curl -s http://localhost:4566/_localstack/health

Responsnya berupa JSON berisi status tiap service:

Respons health endpoint
{
  "services": {
    "s3": "running",
    "dynamodb": "running",
    "lambda": "available",
    "iam": "available"
  }
}

Status running berarti service aktif; available berarti siap diaktifkan saat pertama dipanggil; sedangkan error atau stopped menandakan masalah. Endpoint ini sangat berguna sebagai readiness check di CI maupun orchestrator — kita memakainya juga di episode 18.

Monitoring Resource Docker

LocalStack berjalan di atas container, jadi alat monitoring utamanya adalah Docker:

Statistik resource
docker stats --no-stream localstack
docker stats --no-stream --format "table {{.Name}}\t{{.MemUsage}}\t{{.CPUPerc}}"

Jika memory melonjak, periksa berapa banyak service yang aktif dan persempit lewat SERVICES:

Batasi service aktif
SERVICES=s3,dynamodb,lambda localstack start

Lebih sedikit service aktif berarti lebih sedikit proses dan memory yang terpakai. Volume persistence yang membengkak juga bisa dicek ukurannya:

Ukuran data persistence
docker exec localstack du -sh /var/lib/localstack

Masalah Umum 1: Port Conflict 4566

Error klasik: port 4566 sudah dipakai. Penyebabnya instance lama masih hidup, atau ada proses lain yang menempel di port tersebut. Deteksi dengan:

Deteksi pemakai port 4566
lsof -i :4566
docker ps

Lalu bereskan instance yang lama:

Hentikan instance lama
localstack stop
docker rm -f localstack

Alternatif lain: jalankan di port yang berbeda — persis seperti strategi isolasi per developer di episode 15.

Masalah Umum 2: Lambda Tidak Ter-invoke

Lambda yang tidak merespons biasanya disebabkan salah satu dari ini:

GejalaPenyebab umumSolusi
Invoke hang atau timeoutRuntime image tidak tersediaCek log, pastikan Docker bisa pull runtime
Event source mapping diamMapping salah targetVerifikasi arn source dan status mapping
Function error saat runKode bergantung service matiPastikan semua service dependency hidup

Langkah pertama selalu sama: aktifkan DEBUG=1 lalu jalankan awslocal lambda invoke. Error di dalam kode function akan muncul di log, lengkap dengan traceback atau stack trace. Pastikan juga LAMBDA_EXECUTOR mengarah ke mode yang didukung environment kalian (misalnya Docker).

Masalah Umum 3: Persistence Hilang

Persistence yang tidak berjalan biasanya karena salah satu hal ini:

  • PERSISTENCE=1 tidak di-set saat instance pertama dibuat.
  • Volume Docker tidak ter-mount, jadi instance baru dimulai dari kosong.
  • Menjalankan via docker run tanpa argumen -v.

Periksa lokasi data dan mount yang terpasang:

Cek folder persistence
docker exec localstack ls /var/lib/localstack
docker inspect localstack --format '{{.Mounts}}'

Jika folder kosong, berarti persistence tidak pernah aktif. Solusinya: restart instance dengan PERSISTENCE=1 dan volume bernama seperti contoh di episode 15.

Masalah Umum 4: Image Version Mismatch

CLI dan image yang berbeda versi sering menghasilkan perilaku aneh. Pastikan keduanya sinkron:

Verifikasi versi CLI dan image
localstack --version
docker pull localstack/localstack:stable
localstack status

Tag stable selalu merujuk rilis stabil terbaru. Setelah upgrade, cek changelog — beberapa rilis mengubah perilaku default yang bisa mengganggu asumsi kode lama.

Keterbatasan Service yang Harus Diantisipasi

Banyak "masalah" sebenarnya adalah batasan emulasi yang disengaja:

  • IAM dan security hanya diemulasi sebagian, seperti yang kita bahas di episode 14.
  • Beberapa fitur Pro seperti AWS Replicator dan Cloud Pods membutuhkan license.
  • Sebagian service mengembalikan data mock, bukan perilaku penuh.
  • Parity berubah antar versi — selalu uji ulang setelah upgrade image.

Cara terbaik mengetahui apa yang didukung: baca dokumentasi resmi per service atau changelog rilis. Jika fitur tidak tersedia, alternatifnya adalah menguji langsung di akun AWS nyata.

Penutup

Checklist troubleshooting LocalStack:

  • Aktifkan DEBUG=1 dan baca localstack logs untuk gejala yang tidak jelas.
  • Gunakan /_localstack/health sebagai readiness check.
  • Pantau memory lewat docker stats dan batasi service dengan SERVICES.
  • Port conflict: deteksi dengan lsof -i :4566, lalu bersihkan instance lama.
  • Persistence hilang: cek PERSISTENCE dan mount volume.
  • Selalu sinkronkan versi CLI dan image.

Dengan Fase 5 selesai, kita sudah punya fondasi yang kokoh: dari networking, security, advanced services, sampai CI/CD dan debugging. Di episode 20 selanjutnya kita membahas fitur stabil terbaru 2026.x: calendar versioning, image tunggal Community dan Pro, serta highlight rilis 2026.07.0. Sampai jumpa!

Belajar LocalStack - Performance & Troubleshooting | Belajar LocalStack