Ricerca nel sito web

Come installare GoAccess Web Log Analyzer su Rocky Linux 8


Su questa pagina

  1. Prerequisiti
  2. Passaggio 1 - Installa le dipendenze per GoAccess
  3. Passaggio 2: scarica e installa GoAccess
  4. Passaggio 3: scarica il database GeoIP
  5. Passaggio 4 - Configura GoAccess
  6. Passaggio 5 - Esegui GoAccess
  7. Passaggio 6 - Esegui GoAccess come senza privilegi
  8. Passaggio 7 - Genera rapporti HTML
  9. Conclusione

GoAccess è un analizzatore di log leggero open source in grado di leggere e analizzare file di log di più formati, tra cui 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 report HTML in tempo reale che possono essere visualizzati tramite un collegamento pubblico.

In questo tutorial imparerai a installare GoAccess Analyzer su un server basato su Rocky Linux e a configurarlo per leggere i log Nginx e fornire report in tempo reale.

Prerequisiti

  1. A server running Rocky Linux 8.

  2. A non-root user having sudo privileges.

  3. Nginx running on the server to access logs.

  4. Make sure everything is updated.

    $ sudo dnf update
    

Passaggio 1: installare le dipendenze per GoAccess

L'ultima versione di GoAccess v1.5.2 non è disponibile nel repository predefinito. Per installare l'ultima versione di GoAccess, la creeremo dalla fonte. Il primo passo è scaricare le dipendenze necessarie per creare il pacchetto GoAccess.

$ sudo dnf install ncurses-devel libmaxminddb-devel openssl-devel 
$ sudo dnf groupinstall 'Development Tools'

Passaggio 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

Configurare e installare 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

Passaggio 3: scarica il database GeoIP

Puoi scaricare il database GeoIP da 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 di cui sopra. Una volta scaricati, estraili e carica il file .mmdb sul server in una cartella personalizzata come /home//geoip.

Passaggio 4: configurare GoAccess

GoAccess salva 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 essa.

Per prima cosa, abilitiamo l'opzione formato orario. Analizzeremo i file Nginx nel nostro tutorial, quindi abilita l'opzione destinata ai log Apache/Nginx.

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

Successivamente, abilita l'opzione date-format di Nginx.

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

Successivamente, abilita l'opzione log-format. Nel nostro tutorial, utilizzeremo il formato di registro combinato, che è quello 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 seguente riga (a seconda del registro 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, abilitare 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: eseguire GoAccess

Normalmente, se si desidera eseguire GoAccess, sarà necessario utilizzare 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 nella directory /usr/local/bin. Puoi, tuttavia, aggirare la limitazione creando un collegamento simbolico.

Per fare ciò, esegui il seguente comando.

$ sudo ln -s /usr/local/bin/goaccess /usr/bin/goaccess

Ora puoi eseguire GoAccess direttamente.

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

I file di registro di Nginx tengono traccia 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 .gz compresso. I file di registro meno recenti vengono generati come risultato della rotazione dei registri.

Una volta eseguito il comando, verrai accolto con la seguente dashboard.

GoAccess ti offre diverse scorciatoie da tastiera per navigare nella dashboard.

  • TAB per andare avanti tra i moduli disponibili e MAIUSC+TAB per tornare indietro.
  • F5 per aggiornare la dashboard.
  • g per spostarti nella parte superiore della schermata del dashboard e G per spostarti in basso.
  • o o ENTER per espandere il modulo selezionato.
  • j e k 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 e n per passare alla corrispondenza successiva.
  • 0-9 e MAIUSC+0 per attivare rapidamente il rispettivo modulo numerato.
  • ? per visualizzare la finestra di dialogo della guida rapida.
  • q per uscire dal programma.

Esaminiamo brevemente tutti i pannelli.

  1. Unique visitors per day - This panel is self-explanatory. It lists unique visitors, hits and cumulative bandwidth for each date. It also includes web crawlers and spiders by default.

  2. Requested Files (URLs) - This panel provides the statistics concerning the most requested non-static files on your server.

  3. Static Requests - It is similar to the above panel except that it handles static files like images, CSS, JavaScript, etc.

  4. Not Found URLs (404s) - This panel logs all the requests to files and paths not found on your server.

  5. Visitor Hostnames and IPs - This panel gives more info about the visitors to your site. You can press o to expand the panel to get detailed information such as country of origin, city, and reverse DNS.

  6. Operating Systems - This panel displays different Operating systems used by the visitors.

  7. Browsers - This panel shows the various browsers used by the visitors.

  8. Time Distribution - This panel will give an hourly report for the number of hits, unique visitors, and bandwidth consumed.

  9. Virtual Hosts - This panel displays the virtual hosts parsed from the log file. It will only show up if you use the VCOMBINED log format in the configuration file above or if %v is part of the log-format configuration.

  10. Referrer URLs - This lists the URLs that refer visitors to your server. This panel is disabled by default. To enable it, comment out the following line in the configuration file by adding # in front of it.

    #ignore-panel REFERRERS
    
  11. Referring Sites - This panel displays the IP addresses of the referring hosts.

  12. Keyphrases - This panel displays the keywords used on Google Search, Google cache or Google Translate that lead to your site. This panel is also disabled by default. Enable it by commenting out the following line in the configuration file.

    #ignore-panel KEYPHRASES
    
  13. HTTP Status Codes - This panel shows the statistics for HTTP status codes returned by your server when it responds to a request.

  14. Remote User (HTTP Authentication) - This panel shows the user ID of the person accessing a document on your server, protected by HTTP authentication. This panel only works if %e is part of the log-format configuration.

  15. Cache status - This panel determines if a request is being cached and served from it. This panel only works if %c is part of the log-format configuration.

  16. Geo Location - This panel provides a list of geographical locations of the visitors accessing your site. It will show up only if you have downloaded and added its location in the configuration file.

Passaggio 6: eseguire GoAccess come senza privilegi

Come buona pratica di sicurezza, meno codice funziona come root, meglio è. Per eseguire GoAccess senza root, sono necessarie le autorizzazioni per leggere i file di registro.

I file di log del server sono solitamente parte del gruppo adm. 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 al gruppo adm può aprire i file.

Il modo più semplice per eseguire GoAccess senza root è aggiungere l'utente attualmente connesso al gruppo adm. In questo modo, puoi eseguire GoAccess con quell'utente senza sudo.

Eseguire il seguente comando per aggiungere l'utente corrente al gruppo adm.

$ sudo usermod -aG adm $USER 

Ora, disconnettiti e riconnettiti per applicare la modifica. Oppure puoi eseguire il seguente comando senza dover disconnettersi 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: generazione di report HTML

GoAccess può essere utilizzato per generare report HTML che puoi servire online. Utilizzare il seguente comando 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 per la 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 seguente comando per generare un report 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 ascolto delle connessioni.

C'è un piccolo avvertimento con l'esecuzione del comando precedente. Il comando precedente funzionerà quando GoAccess dispone delle autorizzazioni utente sulla directory /usr/share/nginx/html. Poiché stiamo eseguendo GoAccess con l'utente attualmente connesso, devi concedere a quell'utente le autorizzazioni sulla directory /usr/share/html. Se non puoi aspettare per qualche motivo, dovrai eseguire GoAccess usando 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 seguente comando.

$ goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html --daemonize
Daemonized GoAccess: 78315

Per arrestare il demone GoAccess, interrompi il processo con il seguente comando.

$ sudo kill -9 78315

Qui stiamo usando l'ID 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`

Si noti 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.