Modern mode
Notes
Home | Portfolio
- Loading notes...
- Loading note content...
Modern mode
Home | Portfolio
October 14, 2026
#Membaca Log (PM2, Docker, Nginx) & Troubleshooting Jaringan
Pernahkah Anda mengalami situasi di mana aplikasi tiba-tiba down, layar pengguna hanya menampilkan loading panjang, atau muncul pesan error 502 Bad Gateway? Saat kepanikan melanda, langkah pertama dan paling krusial yang harus dilakukan seorang Developer atau SysAdmin adalah: Membaca Log dan Mengecek Jaringan.
Log adalah "kotak hitam" pesawat dari server Anda. Tanpanya, Anda hanya menebak-nebak dalam gelap. Dalam panduan komprehensif ini, kita akan membedah cara mencari akar masalah (debugging) menggunakan log pada PM2, Docker, dan Nginx, serta dilanjutkan dengan trik melacak masalah jaringan jika log Anda ternyata bersih dari error.
PM2 adalah Process Manager favorit untuk aplikasi Node.js. Kelebihan PM2 adalah kemampuannya menangkap semua output dari terminal aplikasi Anda secara otomatis dan menyimpannya sebagai file teks biasa di server.
Secara bawaan, PM2 memisahkan log menjadi dua: Out log (untuk log normal/info) dan Error log (untuk error/crash). Untuk menemukan lokasinya, ketikkan:
pm2 info nama_aplikasi_anda
Perhatikan baris "error log path". Biasanya lokasinya berada tersembunyi di direktori ~/.pm2/logs/nama_aplikasi_anda-error.log.
Membuka file log berukuran raksasa menggunakan nano atau vim bisa membuat server Anda hang. Gunakan utilitas bawaan Linux berikut:
pm2 logs nama_aplikasi_anda
grep dengan flag -i agar pencarian tidak sensitif terhadap huruf besar/kecil.
grep -i "database" ~/.pm2/logs/nama_aplikasi_anda-error.log
grep "2026-10-14T13:" ~/.pm2/logs/nama_aplikasi_anda-error.log
|) untuk menyaring hasil pencarian waktu dengan kata kunci error spesifik.
grep "2026-10-14T13:" ~/.pm2/logs/nama_aplikasi_anda-error.log | grep -i "timeout"
💡 Tips Penting: Selalu instal
pm2-logrotate(pm2 install pm2-logrotate) agar file log PM2 Anda secara otomatis dipecah dan dihapus jika sudah terlalu lama. Jika tidak, disk server Anda bisa penuh (100%) hanya karena file log!
Berbeda dengan PM2, Docker mengisolasi log di dalam mesin internalnya. Anda tidak disarankan mencari file fisiknya, melainkan harus menggunakan antarmuka baris perintah (CLI) bawaan Docker yang sangat canggih.
docker logs -f nama_container_anda
docker logs --tail 100 nama_container_anda
Ini adalah fitur terbaik Docker jika Anda harus melacak error yang terjadi beberapa jam lalu.
docker logs --since 60m nama_container_anda
docker logs --since "2026-10-14T13:00:00" --until "2026-10-14T14:30:00" nama_container_anda
Sama seperti PM2, Anda bisa menggabungkan CLI Docker dengan grep:
docker logs --since 60m nama_container_anda 2>&1 | grep -i "connection refused"
⚠️ Peringatan Docker: Docker secara bawaan TIDAK membatasi ukuran log. Selalu tambahkan konfigurasi
logging: max-size: "10m"di filedocker-compose.ymlAnda agar disk server aman.
Nginx sering diletakkan di barisan paling depan untuk menerima traffic masuk sebelum diteruskan ke PM2 atau Docker. Jika pengguna melihat error 502 Bad Gateway atau 504 Gateway Timeout, Nginx adalah tempat pertama yang harus dicek.
Log Nginx terbagi dua:
/var/log/nginx/access.log): Mencatat siapa yang datang, jam berapa, dan mengakses halaman apa./var/log/nginx/error.log): Mencatat kegagalan Nginx terhubung ke aplikasi backend Anda.Format log Nginx biasanya mencatat waktu seperti ini: [14/Oct/2026:13:45:00 +0700].
grep " 502 " /var/log/nginx/access.log
grep "192.168.1.50" /var/log/nginx/access.log
grep "14/Oct/2026:13:" /var/log/nginx/access.log | grep " 502 "
Bagaimana jika log Nginx, PM2, dan Docker Anda sangat bersih (tidak ada error), tetapi pengguna tetap protes bahwa aplikasi tidak bisa dibuka? 90% kemungkinannya adalah Masalah Jaringan.
Ikuti 5 langkah investigasi jaringan ini:
Verifikasi apakah server hidup dan merespons internet.
ping domainanda.com
Jika "Request Timeout", bisa jadi server down, internet Anda putus, atau Firewall server memblokir paket ICMP (ping).
Jika ping sangat lambat atau gagal, gunakan traceroute (Linux/Mac) atau tracert (Windows) untuk melihat di titik/router mana koneksi Anda terputus sebelum sampai ke server.
traceroute domainanda.com
Cara Membaca Output Traceroute:
1 192.168.1.1 (Router Rumah Anda) 2.1 ms 1.8 ms 1.9 ms
2 10.10.10.1 (ISP Lokal Anda) 15.1 ms 14.8 ms 15.9 ms
3 123.45.67.89 (Router Backbone Internet) 20.1 ms * 21.9 ms
4 * * *
5 * * *
* * *): Paket data tidak mendapat balasan (Timeout).
Server mungkin hidup, tapi port aplikasi (misal port 443 untuk HTTPS atau 3000 untuk Node.js) diblokir oleh Firewall (UFW/AWS Security Group).
nc -vz domainanda.com 443
# atau
telnet domainanda.com 443
Pastikan domain Anda mengarah ke IP publik server yang benar. Terkadang salah konfigurasi di Cloudflare/GoDaddy adalah biang keladinya.
nslookup domainanda.com
Jika Backend Docker tidak bisa terhubung ke Database Docker, pastikan keduanya berada di jaringan (network) yang sama.
docker network ls
# Masuk ke container backend dan coba ping container database
docker exec -it nama_container_backend sh
ping nama_container_database
Proses debugging server adalah seni mengeliminasi kemungkinan. Mulailah dari memeriksa "Kesehatan Jaringan" (Ping, Port, DNS), kemudian perlahan masuk ke pintu depan aplikasi (Nginx), hingga membedah "Otak Aplikasi" (Docker/PM2). Dengan menguasai perintah-perintah Linux dan Docker di atas, Anda siap menghadapi insiden server apa pun!