«./GoAccess»

Japanese English

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
Benchmark with full features enabled (v0.5) 100,000 lines per second

Benchmarks were tested on: Intel(R) Xeon(R) CPU @ 2.40GHz 2GB RAM

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

Which log format does GoAccess support?

A:

GoAccess can parse virtually any web log format. Predefined options include, Common Log Format (CLF), Combined Log Format (XLF/ELF), including virtual host and W3C format (IIS).
GoAccess allows any custom format string as well.

Formats:
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET / HTTP/1.0" 200 2326
host.com:80 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET / HTTP/1.0" 200 2326
127.0.0.1 - - [10/Oct/2000:13:55:36 -0700] "GET / HTTP/1.0" 200 236 "http://hi.com/" "Mozilla/5.0 (Win98; I)"
host.com:80 127.0.0.1 - - [27/Feb/2010:05:42:55 -0600] "GET / HTTP/1.1" 401 401 "http://hi.com/" "Mozilla/5.0"
2002-05-24 20:18:01 1.2.2.4 - 26.73.1.24 80 GET /a.htm - 200 7930 248 31 Mozilla/4.0+(MSIE+5.01;+Windows) http://www.a.com/

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 access.log.*.gz | goaccess
OR
# 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

* This feature is available from v0.5

Q:

What are the requirements to run GoAccess on my server?

A:

GoAccess is written in C, ncurses for the user interface, GLib >= 2.0.0, and GeoIP (optional) for geolocation data from MaxMind. See Packages details related to GoAccess

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 100,000 parsed lines is about ~3.4MiB.

Q:

What features are you planning to incorporate?

A:

I'm definitely planning to add up the following features:

  • Increase the performance when parsing the log file.
  • Add command-line parameters.
  • Add more reports to it.
Q:

For new releases

A:

If you would like to be notified of new releases of GoAccess then please subscribe to the Freshmeat project. Feel free to rate or add a comment to the project. Freshmeat

Q:

How to update GLib2 from source?

A:

This was fixed on version 0.4 - GLib 2.0 or later is now required instead of 2.16, as in previous versions.

There are some reports from people getting the following error under CentOS 5.5 and Redhat Enterprise:

Error: GHashTableIter undeclared (first use in this function)...

If you need to upgrade Glib2 to a more recent version, then you could do the following: (Note: I have only tested under CentOS 5.5)

Please be aware that if other packages on your system depend on older Glib2 versions, there might be a risk to break something up. However, generally speaking it shouldn't.

# wget http://ftp.acc.umu.se/pub/GNOME/sources/glib/2.16/glib-2.16.0.tar.gz
# tar zxvf glib-2.16.0.tar.gz
# cd glib-2.16.0/
# ./configure
# make
# make install
# echo "/usr/local/lib/" >> /etc/ld.so.conf.d/glib2-i386.conf
# ldconfig
# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

Q:

I don't need GeoIP, can I still install GoAccess?

A:

This was fixed on version 0.4.1

GeoIP is required on versions ≤0.4, however, I have created a PATCH that will make configure to skip the GeoIP check.

The next release will make GeoIP optional and as part of the ./configure options.

# wget http://goaccess.prosoftcorp.com/patches/goaccess-0.4.geoip.patch.1
# cd goaccess-0.4/
# patch --dry-run -p1 -i ../goaccess-0.4.geoip.patch.1
# patch -p1 -i ../goaccess-0.4.geoip.patch.1
# ./configure
OR
# ./configure --enable-geoip
# make
# make install

Q:

How to build GoAccess 0.4.2 on OpenBSD 4.8-current

A:

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

(ksh)
# pkg_add GeoIP
# pkg_add glib2
# export LDFLAGS=-L/usr/local/lib

parser.c line 613 lvalue required as left operand

- stdin = freopen("/dev/tty", "r", stdin);
+ freopen("/dev/tty", "r", stdin) ;

ui.c GeoIP.h no such file or directory

It is included in the OpenBSD GeoIP-1.4.6.tar.gz package - it gets put into /usr/local/include, but the configure script doesn't see it. So you do still need a copy in the install directory.

util.c line 132 AF_INET undeclared in reverse_ip()

+ #include <sys/socket.h>

Security warnings about uses of strcpy() instead of strlcpy() in ui.c and sprintf() instead of snprintf() in settings.c !!, 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.

Last Modified: 2013-05-02 20:29:12