GoAccess adalah penganalisis log ringan sumber terbuka yang dapat membaca dan menganalisis file log dari berbagai format, termasuk Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, Caddy, dll. Ini ditulis dalam bahasa C dan menggunakan pustaka ncurses untuk antarmuka dasbornya, yang dapat diakses dari baris perintah.
Itu dapat menghasilkan laporan dalam format HTML, JSON, dan CSV, yang dapat dibagikan dengan orang lain. Anda bahkan dapat membuat laporan HTML waktu nyata yang dapat ditampilkan melalui tautan publik.
Dalam tutorial ini, Anda akan belajar menginstal GoAccess Analyzer di server berbasis Rocky Linux dan mengonfigurasinya untuk membaca log Nginx dan menyajikan laporan waktu nyata.
Prasyarat
-
Server yang menjalankan Rocky Linux 8.
-
Pengguna non-root yang memiliki hak istimewa sudo.
-
Nginx berjalan di server untuk mengakses log.
-
Pastikan semuanya diperbarui.
$ sudo dnf update
Langkah 1 - Instal Dependensi untuk GoAccess
Versi terbaru GoAccess v1.5.2 tidak tersedia di repositori default. Untuk menginstal versi terbaru GoAccess, kami akan membangunnya dari sumbernya. Langkah pertama adalah mengunduh dependensi yang diperlukan untuk membangun paket GoAccess.
$ sudo dnf install ncurses-devel libmaxminddb-devel openssl-devel $ sudo dnf groupinstall 'Alat Pengembangan'
Langkah 2 - Unduh dan Instal GoAccess
Unduh versi terbaru arsip GoAccess. Anda dapat menemukan versi terbaru GoAccess dari halaman unduhan resmi.
$ wget https://tar.goaccess.io/goaccess-1.5.2.tar.gz
Ekstrak file dari arsip.
$ tar -xzvf goaccess-1.5.2.tar.gz
Konfigurasi dan Instal paket.
$ cd goaccess-1.5.2$ autoreconf -fi$ sudo ./configure --enable-utf8 --enable-geoip=mmdb --with-openssl$ sudo make$ sudo make install
Verifikasi bahwa GoAccess sedang berjalan.
$ goaccess --versionGoAccess - 1.5.2.Untuk lebih jelasnya kunjungi:https://goaccess.io/Copyright (C) 2009-2020 oleh Gerardo OrellanaBuild konfigurasi argumen:--enable-utf8 --enable-geoip=mmdb --with-openssl
Langkah 3 - Unduh Basis Data GeoIP
Anda dapat mengunduh Database GeoIP baik dari DB-IP atau Maxmind. Jika Anda akan mengunduh dari Maxmind, Anda harus membuat akun dan membuat kunci lisensi gratis. Download dari DB-IP dapat dilakukan secara langsung.
Unduh file zip negara dari salah satu sumber di atas. Setelah diunduh, ekstrak dan unggah .mmdb
file di server ke folder khusus seperti /home/<user>/geoip
.
Langkah 4 - Konfigurasi GoAccess
GoAccess menyimpan file konfigurasinya di /usr/local/etc/goaccess/goaccess.conf
. Anda dapat memeriksa lokasi file di sistem Anda menggunakan perintah berikut.
$ goaccess --dcf/usr/local/etc/goaccess/goaccess.conf
Buka file untuk diedit.
$ sudo nano /usr/local/etc/goaccess/goaccess.conf
Sebagian besar opsi dikomentari. Anda dapat menggunakan opsi ini melalui baris perintah atau mengaturnya dalam file di sini. Untuk mengaktifkan opsi, hapus #
karakter di depannya.
Pertama, mari kita aktifkan time-format
pilihan. Kami akan mengurai file Nginx dalam tutorial kami, jadi aktifkan opsi yang dimaksudkan untuk log Apache/Nginx.
# Format waktu berikut berfungsi dengan salah satu# format log Apache/NGINX di bawah ini.#format waktu %H:%M:%S
Selanjutnya, aktifkan Nginx date-format
pilihan.
# Format tanggal berikut berfungsi dengan salah satu# format log Apache/NGINX di bawah ini.#format-tanggal %d/%b/%Y
Selanjutnya, aktifkan log-format
pilihan. Dalam tutorial kami, kami akan menggunakan combined
format log, yang biasa digunakan Nginx.
format log DIGABUNGKAN
Jika file log Anda berisi bidang Host Virtual, aktifkan opsi berikut sebagai gantinya.
format log VCOMBINED
Misalkan Anda ingin lebih mengontrol format log. Dalam hal ini, Anda dapat mengaktifkan baris berikut sebagai gantinya (bergantung pada log yang Anda akses) dan menambah atau menghapus parameter sesuai kebutuhan Anda.
format log %v:%^ %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
Untuk mengaktifkan modul GeoIP, aktifkan opsi berikut dengan memasukkan jalur ke database GeoIP.
# Untuk database GeoIP2 Country:# Download GeoLite2-Country.mmdb.gz# gunzip GeoLite2-Country.mmdb.gz#geoip-database /home/geoip/dbip-country-lite-2021-10.mmdbSimpan file dengan menekan Ctrl + X dan memasukkan Y ketika diminta setelah selesai.
Langkah 5 - Jalankan GoAccess
Biasanya, jika Anda ingin menjalankan GoAccess, Anda harus menggunakan perintah berikut.
$ sudo /usr/local/bin/goaccess /var/log/nginx/access.logKita perlu menggunakan sudo karena pengguna biasa tidak dapat membuka file log. Juga, Anda harus menggunakan path lengkap untuk eksekusi dengan perintah sudo karena perintah sudo tidak mengenali aplikasi di
/usr/local/bin
direktori. Namun, Anda dapat mengatasi batasan tersebut dengan membuat symlink.Untuk melakukannya, jalankan perintah berikut.
$ sudo ln -s /usr/local/bin/goaccess /usr/bin/goaccessSekarang, Anda dapat menjalankan GoAccess secara langsung.
$ sudo goaccess /var/log/nginx/access.logFile log Nginx menyimpan catatan semua lalu lintas HTTP yang masuk. Jika server Anda telah berjalan untuk waktu yang lama, Anda akan melihat beberapa log akses dengan log lama di
.gz
terkompresi format. File log yang lebih lama dihasilkan sebagai hasil dari rotasi log.Setelah Anda menjalankan perintah, Anda akan disambut dengan dasbor berikut.
GoAccess memberi Anda beberapa pintasan keyboard untuk menavigasi dasbor.
TAB
untuk bergerak maju melalui modul yang tersedia danSHIFT+TAB
untuk mundur.F5
untuk menyegarkan dasbor.g
untuk pindah ke bagian atas layar dasbor danG
untuk pindah ke bawah.o
atauENTER
untuk memperluas modul yang dipilih.j
dank
untuk menggulir ke bawah dan ke atas dalam modul aktif.s
untuk menampilkan opsi pengurutan untuk modul aktif./
untuk menelusuri semua modul dann
untuk pindah ke pertandingan berikutnya.0-9
danSHIFT+0
untuk mengaktifkan modul bernomor masing-masing dengan cepat.?
untuk melihat dialog bantuan cepat.q
untuk keluar dari program.
Mari kita bahas semua panel secara singkat.
-
Pengunjung unik per hari - Panel ini cukup jelas. Ini mencantumkan pengunjung unik, hit, dan bandwidth kumulatif untuk setiap tanggal. Ini juga termasuk perayap web dan laba-laba secara default.
-
File yang Diminta (URL) - Panel ini memberikan statistik mengenai file non-statis yang paling banyak diminta di server Anda.
-
Permintaan Statis - Ini mirip dengan panel di atas kecuali menangani file statis seperti gambar, CSS, JavaScript, dll.
-
URL Tidak Ditemukan (404) - Panel ini mencatat semua permintaan ke file dan jalur yang tidak ditemukan di server Anda.
-
Nama Inang dan IP Pengunjung - Panel ini memberikan lebih banyak info tentang pengunjung situs Anda. Anda dapat menekan
o
untuk memperluas panel guna mendapatkan informasi mendetail seperti negara asal, kota, dan DNS balik. -
Sistem Operasi - Panel ini menampilkan sistem Operasi yang berbeda yang digunakan oleh pengunjung.
-
Browser - Panel ini menampilkan berbagai browser yang digunakan oleh pengunjung.
-
Distribusi Waktu - Panel ini akan memberikan laporan per jam untuk jumlah klik, pengunjung unik, dan bandwidth yang digunakan.
-
Host Virtual - Panel ini menampilkan host virtual yang diurai dari file log. Itu hanya akan muncul jika Anda menggunakan
VCOMBINED
format log dalam file konfigurasi di atas atau jika%v
adalah bagian dari konfigurasi format log. -
URL Perujuk - Ini mencantumkan URL yang merujuk pengunjung ke server Anda. Panel ini dinonaktifkan secara default. Untuk mengaktifkannya, beri komentar pada baris berikut di file konfigurasi dengan menambahkan
#
di depannya.#ignore-panel REFERRERS
-
Situs Perujuk - Panel ini menampilkan alamat IP dari host yang merujuk.
-
Frasa Kunci - Panel ini menampilkan kata kunci yang digunakan di Google Penelusuran, cache Google, atau Google Terjemahan yang mengarah ke situs Anda. Panel ini juga dinonaktifkan secara default. Aktifkan dengan mengomentari baris berikut di file konfigurasi.
#ignore-panel KEYPHRASES
-
Kode Status HTTP - Panel ini menunjukkan statistik untuk kode status HTTP yang dikembalikan oleh server Anda saat server menanggapi permintaan.
-
Pengguna Jarak Jauh (Otentikasi HTTP) - Panel ini menunjukkan ID pengguna dari orang yang mengakses dokumen di server Anda, dilindungi oleh otentikasi HTTP. Panel ini hanya berfungsi jika
%e
adalah bagian dari konfigurasi format log. -
Status tembolok - Panel ini menentukan apakah permintaan sedang di-cache dan dilayani darinya. Panel ini hanya berfungsi jika
%c
adalah bagian dari konfigurasi format log. -
Lokasi Geografis - Panel ini menyediakan daftar lokasi geografis pengunjung yang mengakses situs Anda. Ini akan muncul hanya jika Anda telah mengunduh dan menambahkan lokasinya di file konfigurasi.
Langkah 6 - Jalankan GoAccess sebagai unprivileged
Sebagai praktik keamanan yang baik, semakin sedikit kode yang berfungsi sebagai root, semakin baik. Untuk menjalankan GoAccess tanpa root, diperlukan izin untuk membaca file log.
File log server biasanya merupakan bagian dari adm
kelompok. Anda dapat memverifikasinya menggunakan perintah berikut.
$ ls -l /var/log/nginxtotal 68-rw-r----- 1 nginx adm 30547 10 Okt 12:47 access.log-rw-r----- 1 nginx adm 35063 10 Okt 12:47 error.log
Seperti yang Anda lihat, Anda tidak perlu menjadi pengguna root untuk membuka file log. Setiap pengguna yang tergabung dalam adm
grup dapat membuka file.
Cara termudah untuk menjalankan GoAccess tanpa root adalah dengan menambahkan pengguna yang sedang login ke adm
kelompok. Dengan begitu, Anda dapat menjalankan GoAccess di bawah pengguna tersebut tanpa sudo.
Jalankan perintah berikut untuk menambahkan pengguna saat ini ke adm
grup.
$ sudo usermod -aG adm $USER
Sekarang, keluar dan masuk kembali untuk menerapkan perubahan. Atau Anda dapat menjalankan perintah berikut tanpa perlu keluar untuk menerapkan perubahan.
$ su $USER
Anda seharusnya dapat menjalankan GoAccess secara langsung tanpa perlu sudo.
$ goaccess /var/log/nginx/access.log
Langkah 7 - Buat Laporan HTML
GoAccess dapat digunakan untuk menghasilkan laporan HTML yang dapat Anda sajikan secara online. Gunakan perintah berikut untuk membuat laporan HTML.
$ goaccess /var/log/nginx/access.log -o stats.html
Anda dapat mengunduh file di PC lokal untuk Anda sendiri atau folder situs web Anda untuk ditayangkan secara publik.
Anda bahkan dapat membuat laporan HTML waktu nyata menggunakan GoAccess. Tetapi pertama-tama, Anda perlu membuka port 7890 agar GoAccess Websocket dapat berjalan. Buka port menggunakan perintah berikut.
$ sudo firewall-cmd --permanent --add-port=7890/tcp
Muat ulang firewall untuk menerapkan perubahan.
$ sudo firewall-cmd --reload
Sekarang, jalankan perintah berikut untuk menghasilkan laporan HTML waktu nyata.
$ goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html
Ini akan menghasilkan laporan waktu nyata di lokasi yang ditentukan. Perintah di atas akan membuat GoAccess tetap berjalan di latar depan sebagai WebSocket yang mendengarkan koneksi.
Ada peringatan kecil dengan menjalankan perintah di atas. Perintah di atas akan bekerja ketika GoAccess memiliki izin pengguna pada /usr/share/nginx/html
direktori. Karena kami menjalankan GoAccess di bawah pengguna yang saat ini masuk, Anda harus memberikan izin kepada pengguna tersebut di /usr/share/html
direktori. Jika Anda tidak bisa menunggu karena suatu alasan, Anda harus menjalankan GoAccess menggunakan sudo.
$ sudo goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html
Jika Anda ingin menjalankan GoAccess di latar belakang, Anda dapat menjalankannya sebagai daemon dengan menggunakan perintah berikut.
$ goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html --daemonizeDaemonized GoAccess:78315
Untuk menghentikan GoAccess Daemon, matikan proses dengan perintah berikut.
$ sudo kill -9 78315
Di sini, kami menggunakan ID proses yang kami dapatkan di perintah kami sebelumnya. Jika Anda tidak ingat ID proses, Anda juga dapat menggunakan perintah berikut untuk menghentikan proses.
$ sudo kill -9 `pidof goaccess`
Perhatikan bahwa kita menggunakan backquote (`) dalam perintah kita. Menggunakan tanda kutip biasa akan menggagalkan perintah.
Kesimpulan
Ini menyimpulkan tutorial kami tentang menginstal dan menjalankan GoAccess Log Analyzer di server Rocky Linux 8. Jika Anda memiliki pertanyaan, kirimkan di komentar di bawah.