Nginx log analysis adalah proses membaca, memparsing, dan menganalisis file log akses dan error pada web server Nginx untuk memantau performa, mendeteksi ancaman keamanan, serta melacak pola traffic pengunjung. File log bawaan Nginx biasanya terletak di direktori /var/log/nginx/access.log dan /var/log/nginx/error.log.
Secara default, Nginx menggunakan format log gabungan (combined log format) yang mencatat alamat IP klien, waktu akses, metode HTTP, status kode, ukuran respons, dan user-agent. Analisis dapat dilakukan dengan cepat menggunakan utilitas baris perintah Linux seperti awk, sed, dan grep, atau menggunakan perangkat lunak pihak ketiga seperti GoAccess dan ELK Stack untuk visualisasi data secara real-time.
Format Log Bawaan Nginx
Sebelum melakukan analisis, penting untuk memahami struktur log default yang dicatat oleh Nginx. Berikut adalah direktif konfigurasi standar untuk format log:
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
Tabel di bawah ini merinci komponen utama dalam baris log akses Nginx beserta fungsinya:
| Variabel Log | Deskripsi Data | Contoh Nilai |
|---|---|---|
$remote_addr |
Alamat IP klien yang mengakses server | 192.168.1.50 |
$time_local |
Waktu lokal saat permintaan diterima | 10/Oct/2023:13:55:36 +0000 |
$request |
Metode HTTP, jalur URI, dan protokol | GET /index.html HTTP/1.1 |
$status |
Kode status HTTP yang dikirimkan server | 200, 404, 500 |
$body_bytes_sent |
Jumlah byte data yang dikirim ke klien | 2326 |
$http_referer |
URL halaman sebelumnya yang merujuk klien | https://example.com/ |
$http_user_agent |
Informasi peramban dan sistem operasi klien | Mozilla/5.0 (Windows NT 10.0; Win64; x64) |
Analisis Cepat Menggunakan Command Line Linux
Bagi administrator sistem yang membutuhkan analisis instan tanpa memasang perangkat lunak tambahan, baris perintah Linux menyediakan kombinasi utilitas yang sangat efisien untuk membedah file log.
1. Menemukan 10 Alamat IP dengan Akses Terbanyak
Gunakan perintah berikut untuk menghitung frekuensi akses berdasarkan alamat IP unik:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 10
2. Melacak Permintaan dengan Kode Status HTTP 500 (Server Error)
Untuk menyaring kesalahan internal server guna keperluan debugging:
grep " 500 " /var/log/nginx/access.log
3. Menampilkan Halaman yang Paling Sering Diakses
Perintah ini mengekstrak jalur URL yang paling sering diminta oleh pengunjung:
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 10
Tools Populer untuk Nginx Log Analysis
Untuk analisis jangka panjang dan visualisasi yang lebih baik, beberapa perangkat lunak berikut menjadi standar industri:
- GoAccess: Alat analisis log berbasis terminal (TUI) dan antarmuka web yang ringan, cepat, dan mendukung pembaruan secara real-time.
- ELK Stack (Elasticsearch, Logstash, Kibana): Solusi tingkat enterprise untuk pengumpulan, pengindeksan, dan visualisasi data log skala besar.
- AWStats: Alat analisis log berbasis Perl yang menghasilkan laporan grafis lengkap melalui halaman web statis.
Langkah Instalasi dan Penggunaan GoAccess
GoAccess adalah pilihan paling populer karena efisiensi sumber dayanya. Berikut adalah langkah-langkah dasar untuk menggunakannya pada sistem Ubuntu/Debian:
- Instal GoAccess melalui manajer paket resmi:
sudo apt install goaccess - Jalankan analisis interaktif langsung di terminal dengan format log default:
goaccess /var/log/nginx/access.log -c - Pilih format log (pilih Common Log Format atau Combined Log Format) sesuai konfigurasi Nginx Anda.
- Untuk menghasilkan laporan HTML interaktif yang dapat diakses via peramban, jalankan perintah:
goaccess /var/log/nginx/access.log -o /var/www/html/report.html --real-time-html
Troubleshooting Log Tidak Tercatat
Jika Anda menemukan bahwa file log Nginx kosong atau tidak diperbarui, lakukan pemeriksaan berikut di server:
- Pastikan direktori log memiliki izin (permissions) yang benar untuk pengguna sistem Nginx (biasanya
www-dataataunginx). - Periksa konfigurasi blok server untuk memastikan direktif
access_logtidak dinonaktifkan dengan nilaioff. - Uji integritas konfigurasi Nginx menggunakan perintah
sudo nginx -tsebelum melakukan pemuatan ulang (reload) dengansudo systemctl reload nginx.