Nginx Log Analysis: Tools, Command Line & Format

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:

  1. Instal GoAccess melalui manajer paket resmi: sudo apt install goaccess
  2. Jalankan analisis interaktif langsung di terminal dengan format log default: goaccess /var/log/nginx/access.log -c
  3. Pilih format log (pilih Common Log Format atau Combined Log Format) sesuai konfigurasi Nginx Anda.
  4. 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-data atau nginx).
  • Periksa konfigurasi blok server untuk memastikan direktif access_log tidak dinonaktifkan dengan nilai off.
  • Uji integritas konfigurasi Nginx menggunakan perintah sudo nginx -t sebelum melakukan pemuatan ulang (reload) dengan sudo systemctl reload nginx.