FAQ

Q:

How fast is GoAccess when parsing a log file?

A:

Keep in mind that many factors can influence the parsing time, including processor, ram, log, etc. however, generally we could derive the following table:

GoAccess' benchamark — Intel Xeon CPU @ 2.40ghz 2GB ram
Benchmark with full features enabled (v0.7) 97,000 lines per second
Benchmark with full features enabled (v0.6) 95,000 lines per second
Benchmark with full features enabled (v0.5) 100,000 lines per second

- One source reported parsing 123,164,163 hits on 2912 secs (48.53 mins) 8GB ram
- 2bits reported 9,197,594 hits in 139 secs. (2.31 mins) & 19,087,802 in 622 secs (10.36 mins) 16GB, 8GB ram


Q:

How do I run GoAccess?

A:

It's fairly easy to run GoAccesss, once it has been installed (no configuration is needed), just run it against your web log file: (-a is optional)

                           # goaccess -f /var/log/apache2/access.log -a
                        

Now if we want to add more flexibility to GoAccess, we can do a series of pipes. For instance: If we would like to process all access.log.*.gz we can do:

                           # zcat -f access.log* | goaccess
                        

For more examples, please check GoAccess' man page


Q:

How do I generate an HTML report?

A:

To generate an HTML report, just run it against your web log file: (-a is optional)

                           # goaccess -f /var/log/apache2/access.log -a > report.html
                           OR
                           # zcat -f /var/log/apache2/access.log* | goaccess -a > report.html
                        
Note You can run GoAccess via cron as: cat /var/log/apache2/access.log | goaccess -a > report.html

Q:

What's the memory footprint of GoAccess?

A:

GoAccess should not leak any memory, (tested w/ Valgrind), so mostly it will depend on the log size and the initial parse. For 496,750 parsed lines is ~36.9 MiB (full features enabled).


Q:

What are the requirements to run GoAccess on my server?

A:

GoAccess has minimal requirements, it's written in C, ncurses, GLib >= 2.0.0, and GeoIP (optional) for geolocation data from MaxMind. See package details related to GoAccess


Q:

GoAccess and Amazon S3...

A:

The following is a handy script that syncs logfiles from an S3 bucket, and aggregates them. Then it creates a GoAccess report out of this log and pushes it back to an S3 bucket. Thanks to Nils De Moor.


Q:

What features are you planning to add?

A:

Here are some of the top features to add:

  • Reduce memory footprint, and include temporary files for large logs.
  • Increase performance when parsing the log file.
  • Have the ability to do a global deeper search.
  • It'd be nice to have data sliced based on virtual hosts.
  • Report the remote user portion %u.
  • Add command-line parameters.
  • Add more reports to it.

See GitHub for more details.


Q:

How to build GoAccess in OpenBSD?

A:

Thanks to Chris Orgill, GoAccess has been successfully built under OpenBSD. Here the shared steps:

                           (ksh)
                           # pkg_add GeoIP
                           # pkg_add glib2
                           # export LDFLAGS=-L/usr/local/lib
                        
Note GeoIP.h gets put into /usr/local/include, but the configure script doesn't see it. So you may need to change the path under ui.h to #include "/usr/local/include/glib.h"

Then,

                           # ./configure --enable-geoip ; make ; make install
                        

Runs to completion. Can't --enable-utf8 because only the built-in system ncurses is available, not ncursesw.


Q:

For new releases...

A:

If you would like to be notified of new releases of GoAccess then please follow the project on Twitter. Feel free to share it with others too :)