GoAccess¶
GoAccess is an open source realtime web log analyzer and viewer. It use the standard web server log file as source to build a readable graphical HTML output as web page (dashboard) or an overview in the shell.
This documentation describe the way to let create a static web page as overview, which will be updated every hour with a cron job. More details are on the man page and on GitHub available.
License¶
GoAccess is released under the MIT License
Installation¶
GoAccess is already pre-installed on uberspace. This guide describes how to use it effectively.
Configuration¶
After the installation of GoAccess, it is necessary to enable the web server logs and to configure GoAccess with the right log format.
Enable the Web Server Log¶
Please follow the instructions in the uberspace manual to enable the web server logs.
Note
Please consider, after the web server log enabling, it needs some time to have some entries in your new log files. Depends on the web traffic.
GoAccess Configuration¶
Copy the default configuration:
[isabell@stardust ~]$ cp /etc/goaccess/goaccess.conf ~/etc/goaccess.conf
Edit the configuration file and uncomment the following parameters:
# Time Format Options (required)
time-format %H:%M:%S
# Date Format Options (required)
date-format %d/%b/%Y
# NCSA Combined Log Format (is in use by Uberspace)
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
# Set HTML report page title and header.
html-report-title My Uberspace
Launch¶
First Try (or Realtime Analysis in the Shell)¶
To get first results, to check that everything is maintained, please enter:
[isabell@stardust ~]$ goaccess --agent-list --config-file ~/etc/goaccess.conf --log-file ~/logs/webserver/access_log
Scroll with your cursor keys up and down. With “q” you can quit GoAccess.
HTML Output¶
This is the graphical variant as static HTML web page. I consider a new folder inside the html location, that you have access from outside on your statistics.
[isabell@stardust ~]$ mkdir ~/html/statistics
[isabell@stardust ~]$
The command to create a static file with GoAccess is:
[isabell@stardust ~]$ goaccess --agent-list --config-file ~/etc/goaccess.conf --log-file ~/logs/webserver/access_log --output ~/html/statistics/report.html
Warning
The content of ~/html
is publicly accessible. To protect it from unintended visitors, set up HTTP basic authentication using an .htaccess
file.
To view the statistics, point your browser to your uberspace URL, e.g. https://isabell.uber.space/statistics/report.html
.
Script File¶
To create a GoAccess file with a cron job every hour as example, a script is helpful. The location and name for the script file is: ~/bin/goaccess_generate_statistics.sh
#!/bin/bash
goaccess --agent-list --config-file ~/etc/goaccess.conf --log-file ~/logs/webserver/access_log --output ~/html/statistics/report.html
Make your script file executable with:
[isabell@stardust ~]$ chmod +x ~/bin/goaccess_generate_statistics.sh
[isabell@stardust ~]$
Cron Job¶
Cron jobs are described in detail in the Uberspace manual. In this case i consider the following task:
[isabell@stardust ~]$ crontab -e
[isabell@stardust ~]$
and content:
0 * * * * $HOME/bin/goaccess_generate_statistics.sh >/dev/null 2>&1
Best Practices¶
The actual readable web log file is valid for one day. Uberspace consider a rolling aspect and create archives of the last seven days. With other words, a long term statistics is not possible, otherwise the next script level consider the archives per day too.
Tested with Uberspace 7.3.10 and GoAccess 1.3
Written by: FM <git.fm@mmw9.de>