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' benchmark — Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz 8GB RAM
Benchmark with full features enabled (v0.8) - GLib Hash Tables 83,000 lines per second
Benchmark with full features enabled (v0.8) - On-Disk B+ Tree 50,000 lines per second

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 with 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:

Here's an extensible Amazon S3 and Cloudfront log parser in Python that uses GoAccess.
(Thanks to Viktor Nagy)

Q:

How to install Tokyo Cabinet from source?

A:

This section describes how to install Tokyo Cabinet with the source package.

                          $ wget http://fallabs.com/tokyocabinet/tokyocabinet-1.4.48.tar.gz
                          $ tar -zxvf tokyocabinet-1.4.48.tar.gz
                          $ cd tokyocabinet-1.4.48
                          $ ./configure --prefix=/usr --enable-off64 --enable-fastest
                          $ make
                          # make install
                        

Q:

How to use the on-disk database instead of keeping everything in memory?

A:

If you have a large dataset that won't fit in physical memory or you want data persistence, then you want to use the B+ Tree on-disk database.

                          $ ./configure --enable-utf8 --enable-geoip --enable-tcb=btree
                          $ make 
                          # make install
                        

Note that you need to have Tokyo Cabinet installed prior to configure GoAccess. You can install Tokyo Cabinet from your package management tool (see dependencies table), or from source (see question above). You may also choose to disable compression, see configuration options for more details.

Q:

What features are you planning to add?

A:

Here are some of the top features to add:

  • Ability to filter dataset by fields or regex. e.g. filter by fields such as host, request, etc.
  • Have the data sliced based on virtual hosts.
  • Report the remote user portion %u.
  • Add command-line options.
  • Add more reports to it.
  • Reduce memory footprint.
  • Increase performance when parsing the log file.

Please see GitHub for more details.

Q:

How to build GoAccess in OpenBSD?

A:

Thanks to Chris Orgill, GoAccess has been successfully built under OpenBSD.

                           (ksh)
                           # pkg_add GeoIP
                           # pkg_add glib2
                           # export LDFLAGS=-L/usr/local/lib
                           # ./configure --enable-geoip --enable-utf8
                           # make
                           # make install
                        

Runs to completion. Make sure your terminal supports UTF8, e.g., uxterm.

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 :)