NAME¶
goaccess - fast web log analyzer and interactive viewer.
SYNOPSIS¶
goaccess [-f input-file ] [-c] [-e] [-a]
DESCRIPTION¶
goaccess is a free (GPL) real-time web log analyzer and interactive
viewer that runs in a terminal in *nix systems. It provides fast and valuable
HTTP statistics for system administrators that require a visual server report
on the fly. First it will parse the web log file, then it will collect data
from the parsed file and it will display it to the console or the X terminal.
The collected information will be displayed to the user in a
visual/interactive window. The collected information includes:
- General Statistics:
- Total number of valid requests, Total number of invalid
requests, Total time to analyze the data, Total unique visitors, Total
unique requested files, Total unique static files
(css,ico,jpg,js,swf,gif,png) Total unique HTTP
referrers (URLs), Total unique 404s (not found), Size of the parsed
log file, Total bandwidth consumption.
- Unique visitors:
- HTTP requests having the same IP, same date and same agent
will be considered a unique visit. (including crawlers). {Detail
view} is available for this module
- Requested files
- The totals are based on unique requested files. This is
based on the premise that HTTP requests having the same IP, same date and
same agent will be considered a unique visit. {Detail view} is
available for this module
- Requested static files
- The totals are based on unique requested files. Includes
files such as: jpg, css, swf, js, gif, png etc. Unique requests are
based on the premise that HTTP requests having the same IP, same date and
same agent will be considered a unique visit. {Detail view} is
available for this module
- Referrers URLs
- The URL where the request came from. Totals are not based
on the above premise, but instead, based on the total number of requests.
{Detail view} is available for this module
- 404 or Not Found
- The total number is based on total requests. {Detail
view} is available for this module
- Operating Systems
- The total number is based on unique visitors. {Detail
view} is available for this module
- Browsers
- The total number is based on unique visitors. {Detail
view} is available for this module
- Hosts
- The total number is based on total requests. {Detail
view} is available for this module. {Detail view} for each IP can
display extra information for the particular host, including reverse dns,
and geolocation of the IP.
- HTTP Status Codes
- Totals are based on total requests. {Detail view} is
available for this module
- Referring Sites
- This module will display only the host but not the whole
URL. The total number is based on total requests. {Detail view} is
available for this module
- Keyphrases
- This module will report keyphrases used on Google search,
Google cache, and Google translate. The total number is based on total
requests. {Detail view} is available for this module
OPTIONS¶
- -f input-file
- Path to input log file.
- -c
- Prompt date and log format configuration window.
- -e
- Exclude an IP from being counted under the HOST
module.
- -a
- Enable a list of User-Agents for the selected host.
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.
There are two ways to configure the log format. The easiest is to run GoAccess
with
-c to prompt a configuration window. Otherwise, it can be
configured under ~/.goaccessrc.
- date_format
- The date_format variable followed by a space,
specifies the log format date containing any combination of regular
characters and special format specifiers. They all begin with a percentage
(%) sign. See http://linux.die.net/man/3/strftime
- log_format
- The log_format variable followed by a space,
specifies the log format string.
- %d
- date field matching the date_format variable.
- %h
- host (the client IP address, either IPv4 or IPv6)
- %r
- The request line from the client.
- %s
- The status code that the server sends back to the
client.
- %b
- The size of the object returned to the client.
- %R
- The "Referer" HTTP request header.
- %u
- The User-Agent HTTP request header.
- %^
- Ignore this field.
- F1
- Main help.
- F5
- Redraw main window.
- q
- Quit the program or the current {detail view}
(window).
- o
- Open a {detail view} for the current active module.
- c
- set or change scheme color.
- TAB
- Forward iteration of modules. Starts from current active
module.
- SHIFT + TAB
- Backward iteration of modules. Starts from current active
module.
- RIGHT ARROW
- Open a {detail view} for the current active module.
- 0-9
- Activate module so the user can open a {detail view} with
either ^o^ or ^RIGHT ARROW^.
- SHIFT + 0-9
- Activate module above 10.
- s
- Sort unique visitors by date. This will only work on the
Unique visitors module(1).
- S
- Sort unique visitors by hits. This will only work on the
Unique visitors module(1).
- /
- Search forward on any {detail view} window for the
occurrence of typed pattern.
- n
- Find the position of the next occurrence on any {detail
view} window.
- t
- Move to the first item or top of screen.
- b
- Move to the last item or bottom of screen.
EXAMPLES¶
The simplest and fastest usage would be:
# goaccess -f access.log
That will generate an interactive text-only output.
To generate an HTML report:
# goaccess -f access.log -a > report.html
To generate full statistics we can run GoAccess as:
# goaccess -f access.log -a
The
-a flag indicates that we want to process an agent-list for every
host parsed. The
-c flag will prompt the date and log format
configuration window. Only when curses is initialized.
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
Another useful pipe would be filtering dates out of the web log
The following will get all HTTP requests starting on 05/Dec/2010 until the end
of the file.
# sed -n '/05\/Dec\/2010/,$ p' access.log | goaccess -a
If we want to parse only a certain time-frame from DATE a to DATE b, we can do:
sed -n '/5\/Nov\/2010/,/5\/Dec\/2010/ p' access.log | goaccess -a
Note that this could take longer time to parse depending on the speed of
sed.
Also, it is worth pointing out that if we want to run GoAccess at lower
priority, we can run it as:
# nice -n 19 goaccess -f access.log -a
NOTES¶
On each {detail view} window, the total number of items is 300.
Piping a log to GoAccess will disable the real-time functionality. This is due
to the portability issue on determining the actual size of STDIN. However, a
future release *might* include this feature.
BUGS¶
If you think you have found a bug, please send me an email to
goaccess@prosoftcorp.com
AUTHOR¶
Gerardo Orellana <goaccess@prosoftcorp.com> For more details about it, or
new releases, please visit
http://goaccess.prosoftcorp.com