2021-10-18T21:07:51Z
Since I have the pleasure to host the OpenBSD Webzine, the main author (Solène, that's you ;)) asked for some data about number of visits.
First, I dont want matomo : MariaDB, PHP, user tracking... Hum, not for me.
Then, I thought about webalizer, a log analyzer to generate charts. I like it, but as Solène notices, charts are image and not so easy to read.
Finally, I gave goaccess a new try and set it to generate html reports periodically for the webzine and my own website.
This is how I set up webalizer for multiple domains.
I like my logs to combined format. In server configuration "/etc/httpd.conf" :
server "athome.tld" { root "/htdocs/athome.tld" log style combined log access "athome.tld.log" ...
As you can see, logs are stored in "/var/www/logs/athome.tld.log"
First, let's install goaccess. Easy
# pkg_add goaccess
Then, edit "/etc/goaccess/goaccess.conf" for global configuration.
# httpd logs combined date-format %d/%b/%Y time-format %T %z log-format %v %h %^ %^ [%d:%t] "%r" %s %b "%R" "%u" # keep visitors identity safe anonymize-ip true # keep old stats persist true restore true
Other options will be set at command line.
I find more convenient to use a script for each server and store goaccess history in a dedicated directory. We will assume the server files belongs to user "foo".
# mkdir -p /var/db/goaccess/athome.tld # chown foo /var/db/goaccess/athome.tld
Now, create a script to call goaccess with approriation flags.
#!/bin/sh # generate goaccess stats out=/var/www/htdocs/athome.tld/stats.html db=/var/db/goaccess/athome.tld log=/var/www/logs/athome.tld.log title="My website stats" u=foo /usr/local/bin/goaccess $log \ -o $out \ --db-path=$db \ --user-name=$u \ --html-report-title="$title"
Notice the use of "--user-name".
Set up a crontab to start above script
6,10,19,21 * * * * /usr/local/bin/goaccess-athome.tld.sh > /dev/null 2>&1
Here, stats are generated at 6am, 10am, 7pm and 9pm. You might use "@hourly" as well.
Edit /etc/newsyslog.conf to call goacces before logs archiving :
/var/www/logs/athome.tld.log 644 7 250 $W0 Z "/usr/local/bin/goaccess-athome.tld.sh && pkill -USR1 -u root -U root -x httpd"
Yeah, goaccess can listen to a port for automatic updates (with real-time and daemonize flags). It requires to load ssl certificates, but those keys belongs to root only on OpenBSD. You can copy and change permissions on them, or start goaccess realtime as root. I think it's a bad idea to start a process as root.
=> OpenBSD Webzine | Solène | webalizer | goaccess
=> Send your comment by mail. This content has been proxied by September (3851b).Proxy Information
text/plain