Introduction to GoAccess
GoAccess is an open-source, real-time command-line web log analyzer. It can quickly parse access logs from servers like Nginx and Apache, presenting the analysis results in an interactive terminal view or as a static HTML report. This helps developers and system administrators gain a clear understanding of key metrics such as website traffic, visitors, and requests.
Installing GoAccess
The following installation steps are based on a newer version of GoAccess (e.g., 1.x) and apply to common Linux distributions (like CentOS/RHEL, Ubuntu/Debian). Older versions (like 0.5 mentioned in some sources) are outdated; it is recommended to install the latest stable release.
1. Install Dependencies
On CentOS/RHEL systems:
sudo yum install -y ncurses-devel geoip-devel libmaxminddb-devel tokyocabinet-devel
On Ubuntu/Debian systems:
sudo apt-get install -y libncursesw5-dev libgeoip-dev libmaxminddb-dev libtokyocabinet-dev
2. Download, Compile, and Install GoAccess
Get the latest source code from the official repository and install it:
wget https://tar.goaccess.io/goaccess-1.8.tar.gz
tar -xzvf goaccess-1.8.tar.gz
cd goaccess-1.8
./configure --enable-utf8 --enable-geoip=mmdb --with-getline
make
sudo make install
make clean
Note: The --enable-geoip=mmdb flag enables support for GeoIP2 (MaxMind DB format), which is the more common format today.
3. Verify Installation
After installation, run the following command to check if it was successful:
goaccess --version
If a version number is displayed (e.g., GoAccess - 1.8), the installation was successful.
Basic Usage of GoAccess
1. Interactive Command-Line Analysis
Navigate to the directory containing your Nginx log file and run:
goaccess access.log -c -a
Parameter explanation:
-f access.log: Specifies the log file.-c: Displays the log/date format configuration window on startup.-a: Enables listing User-Agents by host (may slightly slow down parsing).
On the first run, a log format selection interface will appear. For standard Nginx access logs, typically select NCSA Combined Log Format.
2. Generating an HTML Report
GoAccess supports generating static HTML reports for easy sharing or archiving.
Analyze a single log file:
goaccess access.log -a > report.html
Analyze multiple compressed or uncompressed log files (e.g., date-rotated logs):
zcat -f /var/log/nginx/access.log* | goaccess -a > report.html
The generated report.html file can be opened in a browser, containing an interactive dashboard with charts and data.
Advanced Configuration and Usage Tips
For more accurate analysis, it is recommended to create a GoAccess configuration file (typically located at ~/.goaccessrc or /etc/goaccess/goaccess.conf). Predefine settings like log format, time format, and date format in this file to avoid manual selection each time you run the tool.
For production environments, you can combine GoAccess with a cron job to periodically generate HTML reports and push them to a specified location (e.g., a web directory), enabling a near real-time log monitoring dashboard.