GoAccess Web Log Analyzer

Pendahuluan

GoAccess adalah alat untuk memantau log server web secara real-time. Alat ini ditulis dalam bahasa C dan menggunakan pustaka ncurses yang populer untuk antarmuka dasbornya, yang dapat diakses langsung dari baris perintah.

Ini hebat karena Anda dapat terhubung ke server web apa pun yang Anda kendalikan melalui SSH dan melihat atau menganalisis statistik yang relevan dengan cepat dan aman. Selain antarmuka dasbor baris perintah, alat ini juga mampu menampilkan statistik dalam format lain seperti HTML, JSON, dan CSV, yang dapat Anda gunakan dalam konteks lain atau bagikan dengan orang lain.

GoAccess juga bisa menjadi alternatif yang bagus untuk alat analitik sisi klien, tergantung pada kebutuhan Anda. Alat ini menganalisis log server Anda secara langsung, sehingga Anda tidak perlu memuat skrip tambahan, dan data Anda sepenuhnya berada di bawah kendali Anda.

Dalam tutorial ini, Anda akan menginstal dan mengonfigurasi GoAccess untuk Apache di server web Ubuntu 20.04. Anda akan mengakses berkas log Apache dengan GoAccess sebelum meninjau modul yang tersedia dan pintasan navigasi pada antarmuka baris perintah.

Prasyarat

Untuk tutorial ini, Anda memerlukan hal-hal berikut:

  • Ubuntu 20.04

  • Apache2

Langkah 1 — Menginstal GoAccess

Pada langkah ini, Anda akan menginstal alat GoAccess dan dependensinya.

$ sudo apt update
$ sudo apt install goaccess

Langkah 2 — Mengedit Konfigurasi GoAccess

GoAccess dilengkapi dengan berkas konfigurasi yang memungkinkan Anda membuat perubahan permanen pada perilaku program. Anda akan mengedit berkas ini untuk menentukan waktu, tanggal, dan format log agar GoAccess dapat mengurai log server.

Berkas konfigurasi dapat terletak di ~/.goaccessrc atau %sysconfdir%/goaccess.conf, dengan %sysconfdir% berada di /etc/, /usr/etc/, atau /usr/local/etc/. Untuk mengetahui lokasi berkas konfigurasi di server Anda, jalankan perintah berikut:

$ goaccess --dcf
# output: /etc/goaccess/goaccess.conf
$ sudo nano /etc/goaccess/goaccess.conf

Catatan

Jika berkas ini tidak ada di server, pastikan untuk membuatnya terlebih dahulu dan mengisinya dengan konten berkas goaccess.conf di GitHub.

Banyak baris dalam berkas yang dikomentari. Untuk mengaktifkan opsi ini, hapus karakter # pertama di depannya. Mari kita aktifkan pengaturan format waktu untuk Apache terlebih dahulu. Pengaturan ini menentukan waktu dalam format log dan memungkinkan GoAccess untuk mengurai berkas log Apache teks biasa yang memenuhi kriteria pemformatan yang didukung.

# The following time format works with any of the
# Apache/NGINX's log formats below.
#
time-format %H:%M:%S

Berikutnya, Anda akan menghapus komentar pada pengaturan format tanggal Apache yang menentukan tanggal format log:

# The following date format works with any of the
# Apache/NGINX's log formats below.
#
date-format %d/%b/%Y

Terakhir, hapus komentar pada pengaturan log-format. Beberapa baris akan mengubah pengaturan ini, dan baris yang perlu dihapus komentarnya bergantung pada cara server web Anda dikonfigurasi. Jika Anda memiliki pengaturan non-virtual host, hapus komentar pada baris log-format berikut:

# NCSA Combined Log Format
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"

Jika tidak, jika Anda telah menyiapkan host virtual, hapus komentar pada baris berikut:

# NCSA Combined Log Format with Virtual Host
log-format %v:%^ %h %^[%d:%t %^] "%r" %s %b "%R" "%u"

Pada titik ini, Anda dapat menyimpan berkas dan keluar dari editor. Anda sekarang siap menjalankan program GoAccess dan menganalisis beberapa berkas log teks biasa Apache.

Langkah 3 — Mengakses Berkas Log Apache dengan GoAccess

Server Apache memberikan akses ke situs web Anda dan menyimpan log akses untuk semua lalu lintas HTTP yang masuk. Catatan ini, atau berkas log, disimpan di sistem dan dapat menjadi sumber informasi berharga tentang penggunaan dan audiens situs web Anda.

Di Ubuntu, berkas log Apache disimpan di direktori /var/log/apache2 secara default. Untuk memeriksa isi direktori ini, jalankan perintah berikut:

$ sudo ls /var/log/apache2
# output: access.log  error.log  other_vhosts_access.log

Jika server Anda sudah lama berjalan, Anda mungkin menemukan berkas .gz terkompresi di direktori ini yang berisi berkas log lama akibat rotasi log. Log terbaru ditempatkan dalam berkas access.log. Untuk server web dengan host virtual, Anda mungkin perlu melakukan cd ke sub-direktori dari dalam direktori /apache2 untuk menemukan berkas log setiap host.

Mari kita jalankan GoAccess terhadap log akses Apache untuk mendapatkan wawasan tentang jenis lalu lintas yang ditangani oleh server web. Jalankan perintah berikut untuk menganalisis berkas access.log Anda dengan GoAccess:

$ sudo goaccess /var/log/apache2/access.log

Ini akan meluncurkan dasbor baris perintah GoAccess.

../_images/goaccess-step3a.png

Catatan

Jika Anda melihat prompt Konfigurasi Format Log, artinya perubahan yang Anda buat pada berkas konfigurasi GoAccess di langkah sebelumnya tidak berlaku. Pastikan berkas konfigurasi Anda berada di tempat yang tepat dan Anda telah menghapus komentar pada pengaturan yang diperlukan.

Seperti yang telah disebutkan sebelumnya, terkadang Anda memiliki beberapa berkas log terkompresi di server web yang berjalan lama. Untuk menjalankan GoAccess pada semua berkas ini tanpa mengekstraknya terlebih dahulu, Anda dapat menyalurkan output perintah zcat ke goaccess:

$ zcat /var/log/apache2/access.log.*.gz | goaccess -a

Berikutnya Anda akan mempelajari cara menavigasi antarmuka dasbor dengan cepat menggunakan pintasan keyboard.

Langkah 4 — Menavigasi Dasbor Terminal

Di bagian atas dasbor terdapat ringkasan beberapa metrik utama. Ini mencakup total permintaan untuk periode pelaporan, pengunjung unik, ukuran log, kesalahan 404 tidak ditemukan, berkas yang diminta, ukuran berkas log yang diurai, referensi HTTP, nama sumber log, waktu yang dibutuhkan untuk memproses berkas log, dan banyak lagi.

../_images/goaccess-step4a.png

Di bawah panel atas, Anda akan menemukan semua modul yang tersedia yang memberikan detail lebih lanjut tentang metrik yang disebutkan di atas dan titik data lain yang didukung oleh GoAccess. Untuk menavigasi antarmuka, gunakan pintasan keyboard berikut:

  • TAB untuk maju melalui modul yang tersedia dan SHIFT+TAB untuk mundur.

  • F5 untuk menyegarkan dasbor.

  • g untuk pindah ke bagian atas layar dasbor dan G untuk pindah ke item terakhir di dasbor.

  • o atau ENTER untuk memperluas modul yang dipilih.

  • j dan k untuk menggulir ke bawah dan ke atas dalam modul aktif.

  • s untuk menampilkan opsi pengurutan untuk modul aktif.

  • / untuk mencari di semua modul dan n untuk pindah ke kecocokan berikutnya.

  • 0-9 dan SHIFT+0 untuk mengaktifkan modul bernomor masing-masing dengan cepat.

  • ? untuk melihat dialog bantuan cepat.

  • q untuk keluar dari program.

Selanjutnya, mari kita periksa setiap modul yang tersedia di dasbor. Masing-masing modul memiliki nomor dan judul, serta indikasi jumlah baris yang tersedia. Karakter > menunjukkan panel aktif, yang juga ditampilkan di bagian atas dasbor.

../_images/goaccess-step4b.png

Berikut penjelasan singkat untuk setiap panel. Setiap bagian di bawah ini sesuai dengan nomor dan judul panel dalam program.

1 — Pengunjung Unik per Hari

Panel ini menampilkan jumlah kunjungan, pengunjung unik, dan bandwidth kumulatif untuk setiap tanggal yang dilaporkan. Pengunjung unik dianggap sebagai pengunjung dengan alamat IP, tanggal, dan agen pengguna yang sama. Panel ini mencakup perayap web dan spider secara default.

../_images/goaccess-step4c.png

2 - Berkas yang Diminta (URL)

Panel ini menyediakan statistik mengenai berkas non-statis yang paling banyak diminta di server web Anda. Panel ini menampilkan jalur permintaan, protokol dan metode HTTP, pengunjung unik, jumlah kunjungan, dan bandwidth kumulatif.

../_images/goaccess-step4d.png

3 — Permintaan Statis

Panel ini menyediakan metrik yang sama seperti sebelumnya, tetapi untuk berkas statis seperti gambar, CSS, JavaScript, atau jenis berkas lainnya.

4 — URL Tidak Ditemukan (404)

Panel ini juga menampilkan metrik yang sama seperti yang dibahas pada poin 2 dan 3, tetapi untuk jalur yang tidak ditemukan di server (404).

5 — Nama Host dan IP Pengunjung

Panel ini menyediakan informasi detail tentang host yang terhubung ke server web Anda. Anda dapat menemukan alamat IP mereka, jumlah kunjungan, dan jumlah bandwidth yang digunakan. Ini adalah cara yang bagus untuk mengidentifikasi siapa yang menghabiskan semua bandwidth Anda dan memblokirnya jika perlu.

../_images/goaccess-step4g.png

Jika Anda memperluas panel ini dengan menekan o, Anda akan melihat info lebih lanjut tentang setiap host seperti negara asal, kota, dan hasil pencarian DNS terbalik.

../_images/goaccess-step4h.png

6 — Sistem Operasi

Panel ini melaporkan berbagai sistem operasi yang digunakan oleh host untuk terhubung ke server web Anda. Memperluas panel ini akan menampilkan versi spesifik dari setiap sistem operasi.

../_images/goaccess-step4i.png

7 — Browser

Serupa dengan panel sebelumnya, panel ini melaporkan peramban yang digunakan oleh setiap pengunjung unik ke server web Anda dan mencantumkan versi spesifik untuk setiap peramban setelah diperluas.

../_images/goaccess-step4j.png

8 — Distribusi Waktu

Di sini, Anda akan menemukan laporan per jam untuk jumlah kunjungan, pengunjung unik, dan bandwidth yang digunakan. Ini adalah cara yang bagus untuk mengetahui periode lalu lintas puncak di server Anda.

../_images/goaccess-step4k.png

9 — Virtual Host

Panel ini menampilkan host virtual yang diurai dari berkas log. Panel ini hanya aktif jika %v disertakan dalam konfigurasi format log.

10 — Referrer URLs

URL yang merujuk host yang berkunjung ke server web Anda ditampilkan di sini. Panel ini dinonaktifkan secara default dan hanya dapat diaktifkan dengan memberi komentar pada baris REFERRERS yang disorot berikut ini dalam berkas konfigurasi GoAccess:

#ignore-panel VISIT_TIMES
#ignore-panel VIRTUAL_HOSTS
#ignore-panel REFERRERS
#ignore-panel REFERRING_SITES
../_images/goaccess-step4l.png

11 — Referring Sites

Panel ini menampilkan alamat IP dari host pengarah, tetapi bukan keseluruhan URL.

12 — Keyphrases

Di sini, kata kunci yang digunakan pada Google Penelusuran, Google Cache, dan Google Terjemahan yang mengarah ke situs web Anda akan dilaporkan. Panel ini juga dinonaktifkan secara default dan harus diaktifkan di pengaturan:

#ignore-panel REFERRERS
#ignore-panel REFERRING_SITES
#ignore-panel KEYPHRASES
#ignore-panel STATUS_CODES

13 — HTTP Status Codes

Panel ini mencerminkan statistik keseluruhan untuk kode status HTTP yang dikembalikan oleh server web Anda saat merespons permintaan. Memperluas panel akan menampilkan statistik agregat untuk setiap kode status.

../_images/gaccess-step4n.png

14 — Remote User (HTTP Authentication)

Panel ini menampilkan ID pengguna orang yang meminta dokumen di server Anda sebagaimana ditentukan oleh autentikasi HTTP. Untuk dokumen yang tidak dilindungi kata sandi, bagian ini akan menjadi -. Perhatikan bahwa panel ini hanya diaktifkan jika %e merupakan bagian dari konfigurasi format log.

15 — Cache status

Panel ini memungkinkan Anda menentukan apakah suatu permintaan sedang di-cache dan dilayani dari cache. Panel ini diaktifkan jika %C merupakan bagian dari variabel log-format, dan statusnya bisa berupa MISS, BYPASS, EXPIRED, STALE, UPDATING, REVALIDATED, atau HIT.

16 — Geo Location

Panel ini menyediakan ringkasan lokasi geografis yang diperoleh dari alamat IP yang dikunjungi. Memperluas panel ini akan menampilkan statistik agregat untuk setiap negara asal.

../_images/goaccess-step4o.png

Anda telah meninjau panel yang tersedia di dasbor, sekarang Anda akan membuat laporan dalam berbagai format.

Langkah 5 — Membuat Laporan

Selain menampilkan data di terminal, GoAccess juga memungkinkan Anda membuat laporan HTML, JSON, atau CSV. Pastikan Anda berada di direktori home sebelum menjalankan perintah apa pun di bagian ini:

$ cd ~
$ sudo goaccess /var/log/apache2/access.log -o stats.html

To output the report as static HTML, specify an HTML file as the argument to the -o flag. This flag also accepts filenames that end in .json or .csv.

File stats.html akan muncul di direktori pengguna Anda.

$ ls
# Output
goaccess-1.4  goaccess-1.4.tar.gz  snap  stats.html

Anda dapat menyalin berkas ini ke direktori pengguna di komputer lokal Anda menggunakan scp. Jalankan perintah ini dari komputer lokal Anda, bukan dari server jarak jauh:

Setelah berkas disalin, Anda dapat membukanya di peramban dengan perintah open:

$ open ~/stats.html # jika menggunakan macOS
$ xdg-open ~/stats.html # jika menggunakan Linux
../_images/goaccess-step5.png

Anda telah membuat laporan HTML dan melihatnya di browser Anda.

Kesimpulan

Dalam artikel ini, kami membahas alat baris perintah GoAccess dan cara menggunakannya untuk menganalisis log server. Meskipun kami hanya membahas bagaimana GoAccess dapat digunakan dengan log Apache, alat ini juga mendukung format log lain seperti Nginx, Amazon S3, Elastic Load Balancing, dan CloudFront.

Anda dapat memeriksa dokumentasi lengkap GoAccess atau menjalankan man goaccess di terminal Anda.