GoAccess è un analizzatore di log leggero open source in grado di leggere e analizzare file di log di più formati, inclusi Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, Caddy, ecc. È scritto in linguaggio C e utilizza la libreria ncurses per la sua interfaccia dashboard, a cui è possibile accedere dalla riga di comando.
Può generare report in formato HTML, JSON e CSV, che possono essere condivisi con altri. Puoi persino generare rapporti HTML in tempo reale che possono essere visualizzati tramite un collegamento pubblico.
In questo tutorial imparerai a installare GoAccess Analyzer su un server Rocky basato su Linux e a configurarlo per leggere i log Nginx e fornire report in tempo reale.
Prerequisiti
-
Un server che esegue Rocky Linux 8.
-
Un utente non root con privilegi sudo.
-
Nginx in esecuzione sul server per accedere ai log.
-
Assicurati che tutto sia aggiornato.
$ sudo dnf update
Passaggio 1:installazione delle dipendenze per GoAccess
L'ultima versione di GoAccess v1.5.2 non è disponibile nel repository predefinito. Per installare l'ultima versione di GoAccess, la costruiremo dal sorgente. Il primo passaggio consiste nel scaricare le dipendenze necessarie per la creazione del pacchetto GoAccess.
$ sudo dnf install ncurses-devel libmaxminddb-devel openssl-devel $ sudo dnf groupinstall 'Development Tools'
Fase 2:scarica e installa GoAccess
Scarica l'ultima versione dell'archivio GoAccess. Puoi trovare l'ultima versione di GoAccess dalla pagina di download ufficiale.
$ wget https://tar.goaccess.io/goaccess-1.5.2.tar.gz
Estrarre i file dall'archivio.
$ tar -xzvf goaccess-1.5.2.tar.gz
Configura e installa il pacchetto.
$ cd goaccess-1.5.2 $ autoreconf -fi $ sudo ./configure --enable-utf8 --enable-geoip=mmdb --with-openssl $ sudo make $ sudo make install
Verifica che GoAccess sia in esecuzione.
$ goaccess --version GoAccess - 1.5.2. For more details visit: https://goaccess.io/ Copyright (C) 2009-2020 by Gerardo Orellana Build configure arguments: --enable-utf8 --enable-geoip=mmdb --with-openssl
Fase 3:scarica il database GeoIP
Puoi scaricare il database GeoIP da DB-IP o Maxmind. Se stai per scaricare da Maxmind, dovrai creare un account e generare una chiave di licenza gratuita. Il download da DB-IP può essere eseguito direttamente.
Scarica il file zip del paese da una delle fonti sopra. Una volta scaricati, estraili e carica il .mmdb
file sul server in una cartella personalizzata come /home/<user>/geoip
.
Fase 4 - Configura GoAccess
GoAccess memorizza il suo file di configurazione in /usr/local/etc/goaccess/goaccess.conf
. Puoi controllare la posizione del file sul tuo sistema usando il seguente comando.
$ goaccess --dcf /usr/local/etc/goaccess/goaccess.conf
Apri il file per la modifica.
$ sudo nano /usr/local/etc/goaccess/goaccess.conf
La maggior parte delle opzioni sono commentate. Puoi utilizzare queste opzioni tramite la riga di comando o impostarle nel file qui. Per abilitare un'opzione, rimuovi il #
carattere davanti ad esso.
Per prima cosa, abilitiamo il time-format
opzione. Analizzeremo i file Nginx nel nostro tutorial, quindi abilita l'opzione pensata per i log di Apache/Nginx.
# The following time format works with any of the # Apache/NGINX's log formats below. # time-format %H:%M:%S
Quindi, abilita il date-format
di Nginx opzione.
# The following date format works with any of the # Apache/NGINX's log formats below. # date-format %d/%b/%Y
Quindi, abilita il log-format
opzione. Nel nostro tutorial useremo il combined
log, che è ciò che Nginx utilizza comunemente.
log-format COMBINED
Se i tuoi file di registro contengono il campo Host virtuale, abilita invece la seguente opzione.
log-format VCOMBINED
Supponiamo di volere un maggiore controllo sul formato del registro. In tal caso, puoi invece abilitare la riga seguente (a seconda del log a cui stai accedendo) e aggiungere o rimuovere parametri in base alle tue esigenze.
log-format %v:%^ %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
Per abilitare il modulo GeoIP, abilita la seguente opzione inserendo il percorso del database GeoIP.
# For GeoIP2 Country database: # Download the GeoLite2-Country.mmdb.gz # gunzip GeoLite2-Country.mmdb.gz # geoip-database /home/geoip/dbip-country-lite-2021-10.mmdb
Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.
Passaggio 5:esegui GoAccess
Normalmente, se vuoi eseguire GoAccess, dovrai usare il seguente comando.
$ sudo /usr/local/bin/goaccess /var/log/nginx/access.log
Dobbiamo usare sudo perché gli utenti normali non possono aprire i file di registro. Inoltre, dovrai utilizzare il percorso completo per l'eseguibile con il comando sudo perché il comando sudo non riconosce le applicazioni nel /usr/local/bin
directory. Tuttavia, puoi aggirare la limitazione creando un collegamento simbolico.
Per farlo, esegui il seguente comando.
$ sudo ln -s /usr/local/bin/goaccess /usr/bin/goaccess
Ora puoi eseguire direttamente GoAccess.
$ sudo goaccess /var/log/nginx/access.log
I file di registro Nginx conservano un registro di tutto il traffico HTTP in entrata. Se il tuo server è in esecuzione da molto tempo, vedrai più log di accesso con i log più vecchi in formato compresso .gz
formato. I file di registro meno recenti vengono generati come risultato della rotazione del registro.
Una volta eseguito il comando, verrai accolto con la seguente dashboard.
GoAccess ti fornisce diverse scorciatoie da tastiera per navigare nella dashboard.
TAB
per andare avanti attraverso i moduli disponibili eSHIFT+TAB
per tornare indietro.F5
per aggiornare la dashboard.g
per passare alla parte superiore della schermata del dashboard eG
per spostarsi in basso.o
oENTER
per espandere il modulo selezionato.j
ek
per scorrere verso il basso e verso l'alto all'interno del modulo attivo.s
per visualizzare le opzioni di ordinamento per il modulo attivo./
per cercare in tutti i moduli en
per passare alla partita successiva.0-9
eSHIFT+0
per attivare velocemente il rispettivo modulo numerato.?
per visualizzare la finestra di dialogo della guida rapida.q
per uscire dal programma.
Esaminiamo brevemente tutti i pannelli.
-
Visitatori unici al giorno - Questo pannello è autoesplicativo. Elenca visitatori unici, hit e larghezza di banda cumulativa per ogni data. Per impostazione predefinita, include anche web crawler e spider.
-
File richiesti (URL) - Questo pannello fornisce le statistiche relative ai file non statici più richiesti sul tuo server.
-
Richieste statiche - È simile al pannello sopra, tranne per il fatto che gestisce file statici come immagini, CSS, JavaScript, ecc.
-
URL non trovati (404) - Questo pannello registra tutte le richieste a file e percorsi non trovati sul tuo server.
-
Nomi host e IP dei visitatori - Questo pannello fornisce maggiori informazioni sui visitatori del tuo sito. Puoi premere
o
per espandere il pannello per ottenere informazioni dettagliate come paese di origine, città e DNS inverso. -
Sistemi operativi - Questo pannello mostra diversi sistemi operativi utilizzati dai visitatori.
-
Browser - Questo pannello mostra i vari browser utilizzati dai visitatori.
-
Distribuzione del tempo - Questo pannello fornirà un rapporto orario per il numero di visite, i visitatori unici e la larghezza di banda consumata.
-
Host virtuali - Questo pannello mostra gli host virtuali analizzati dal file di registro. Apparirà solo se usi
VCOMBINED
log format nel file di configurazione sopra o se%v
fa parte della configurazione del formato log. -
URL di riferimento - Questo elenca gli URL che rimandano i visitatori al tuo server. Questo pannello è disabilitato per impostazione predefinita. Per abilitarlo, commenta la riga seguente nel file di configurazione aggiungendo
#
davanti.#ignore-panel REFERRERS
-
Siti di riferimento - Questo pannello mostra gli indirizzi IP degli host di riferimento.
-
Frasi chiave - Questo pannello mostra le parole chiave utilizzate su Ricerca Google, cache di Google o Google Translate che portano al tuo sito. Anche questo pannello è disabilitato per impostazione predefinita. Abilitalo commentando la riga seguente nel file di configurazione.
#ignore-panel KEYPHRASES
-
Codici di stato HTTP - Questo pannello mostra le statistiche per i codici di stato HTTP restituiti dal tuo server quando risponde a una richiesta.
-
Utente remoto (autenticazione HTTP) - Questo pannello mostra l'ID utente della persona che accede a un documento sul tuo server, protetto da autenticazione HTTP. Questo pannello funziona solo se
%e
fa parte della configurazione del formato log. -
Stato della cache - Questo pannello determina se una richiesta viene memorizzata nella cache e servita da essa. Questo pannello funziona solo se
%c
fa parte della configurazione del formato log. -
Posizione geografica - Questo pannello fornisce un elenco di posizioni geografiche dei visitatori che accedono al tuo sito. Verrà visualizzato solo se hai scaricato e aggiunto la sua posizione nel file di configurazione.
Passaggio 6:esegui GoAccess come non privilegiato
Come buona pratica di sicurezza, minore è il codice che funziona come root, meglio è. Per eseguire GoAccess senza root, sono necessarie le autorizzazioni per leggere i file di registro.
I file di registro del server di solito fanno parte di adm
gruppo. Puoi verificarlo usando il seguente comando.
$ ls -l /var/log/nginx total 68 -rw-r----- 1 nginx adm 30547 Oct 10 12:47 access.log -rw-r----- 1 nginx adm 35063 Oct 10 12:47 error.log
Come puoi vedere, non è necessario essere un utente root per aprire i file di registro. Qualsiasi utente appartenente a adm
gruppo può aprire i file.
Il modo più semplice per eseguire GoAccess senza root è aggiungere l'utente attualmente connesso a adm
gruppo. In questo modo, puoi eseguire GoAccess con quell'utente senza sudo.
Esegui il comando seguente per aggiungere l'utente corrente a adm
gruppo.
$ sudo usermod -aG adm $USER
Ora, esci e accedi nuovamente per applicare la modifica. Oppure puoi eseguire il comando seguente senza dover effettuare il logout per implementare la modifica.
$ su $USER
Dovresti essere in grado di eseguire GoAccess direttamente senza bisogno di sudo.
$ goaccess /var/log/nginx/access.log
Passaggio 7 - Genera rapporti HTML
GoAccess può essere utilizzato per generare report HTML che puoi servire online. Utilizzare il comando seguente per generare un report HTML.
$ goaccess /var/log/nginx/access.log -o stats.html
Puoi scaricare il file sul tuo PC locale per te stesso o nella cartella del tuo sito Web per pubblicarlo.
Puoi persino generare un rapporto HTML in tempo reale utilizzando GoAccess. Ma prima devi aprire la porta 7890 per l'esecuzione di GoAccess Websocket. Apri la porta usando il seguente comando.
$ sudo firewall-cmd --permanent --add-port=7890/tcp
Ricarica il firewall per applicare la modifica.
$ sudo firewall-cmd --reload
Ora, esegui il comando seguente per generare un rapporto HTML in tempo reale.
$ goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html
Ciò genererebbe un rapporto in tempo reale nella posizione specificata. Il comando precedente manterrà GoAccess in esecuzione in primo piano come WebSocket in attesa di connessioni.
C'è un piccolo avvertimento con l'esecuzione del comando precedente. Il comando precedente funzionerà quando GoAccess dispone delle autorizzazioni utente su /usr/share/nginx/html
directory. Poiché stiamo eseguendo GoAccess con l'utente attualmente connesso, devi concedere a quell'utente le autorizzazioni su /usr/share/html
directory. Se non puoi aspettare per qualche motivo, dovrai eseguire GoAccess utilizzando sudo.
$ sudo goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html
Se desideri eseguire GoAccess in background, puoi eseguirlo come demone utilizzando il comando seguente.
$ goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html --daemonize Daemonized GoAccess: 78315
Per interrompere il demone GoAccess, termina il processo con il comando seguente.
$ sudo kill -9 78315
Qui stiamo usando l'ID del processo che abbiamo ottenuto nel nostro comando precedente. Se non ricordi l'ID del processo, puoi anche utilizzare il seguente comando per terminare il processo.
$ sudo kill -9 `pidof goaccess`
Nota che stiamo usando il backquote (`) nel nostro comando. L'uso di virgolette regolari fallirà il comando.
Conclusione
Questo conclude il nostro tutorial sull'installazione e l'esecuzione di GoAccess Log Analyzer sul server Rocky Linux 8. Se hai domande, pubblicale nei commenti qui sotto.