It seems like there are so many analytics platforms these days and I have no sense on what is worth looking at and what isn’t and I’d really like to avoid Google Analytics.
For those of you that run your own sites with traffic analysis:
Server logs and AWK.
No JS. No tracking. No software to run. Free.
Another +1 for server-side. I use a log analyzer I wrote myself.
+1 for serverside tracking.
I started using honeycomb.io for general ‘what is happening in production’ queries, but it’s also been really useful for things like ‘how many distinct browser/remote ip combinations hit the site in a day’.
Plus, tracker blockers ban most client-side analytics; doing it server-side avoids that source of systematic distortion of your numbers (although it also introduces a different systematic distortion from our CDN).
If your needs can be served by data that can be captured in server-side logs, then I recommend https://goaccess.io/
I tried to make goaccess work for me, but I am still not satisfied.
Maybe I just use it wrong: I have a cronjob that generates html reports for different logs in /var/log/nginx. It produces a lot of information that I cannot drill down into. The time intervals for different websites are uneven: some nginx logs span a long time, some just one day.
Another consideration is that it’s written in C (unlike its name might suggest), and I am a little concerned about munging strings from the internet in a C program.
They have an official docker container if you run to run it in isolation. You can mount your logs as read-only into the container.
I’ve only run the console program, and really just to see live traffic. For long term stats, I use awstats.
I’ve been using @arp242’s https://goatcounter.com and have been completely satisfied with it. It’s super simple, it’s mostly just a hit counter with info about referers, brower, screen size, and coarse location. That’s really all I’m interested in. For my use I feel like other information would pretty much just be a distraction. And I really like that it’s someone’s side project, I like the idea that I’m helping it get off the ground. (I’m on the free plan I guess, but instead donate.) Also the fact that it’s open source, so if things don’t end up going well there’s a really good “plan b”.
I’ve been using Matomo (formerly Piwik) for a few years on hobby sites and it does the job for me. I am primarily interested in seeing referrals, bounce, and which URLs are being hit.
What: I get the best “high level” information from CloudFlare.
Why: Works across a variety of services that we expose on our domains regardless of technology
I’m a fan of https://usefathom.com. It’s very minimal, but I don’t have many requirements, so it suits my needs pretty well. I like that it’s a single Go binary, which I run on a $5/month Digital Ocean droplet.
Please note that while this may currently work, it is no longer being maintained and is very different from the paid Fathom Analytics product. I built the initial open-source version of Fathom that you are running, but after I left the project moved to a centralized and closed-source model.
I wasn’t even aware of this. Thanks for the update.
Thanks for making that, I use Fathom for my site and like it. Too bad they closed it up.
The latest communication is that “We are going to be releasing a new version this year”, FYI
The one I built. It only does what I need (aggregate counts, referrals, live counters) and it does it well. For a real world deplyoment, see: https://defn.nemea.co
I absolutely cannot speak more highly about Fathom Analytics and how happy I am to pay for their service. $14/mo and a code snippet. I use it on all my sites and they’ve added goals and code to enable metrics around funnels. It’s really good. Here’s a demo for my newsletter’s web site (static; Hugo): https://app.usefathom.com/share/acmuyzfw/devopsish.com
I’ve heard good things about https://simpleanalytics.com/ but haven’t used it myself.
I have a docker instance running matomo at http://passiveobserver.com and I love it.
I want to move away from Google Analytics also and I discovered https://ackee.electerious.com/, which fulfills my needs and seems easy to self-host, but I haven’t used it yet in production
I’ve been using https://get.gaug.es/ for a while now. I like that it’s cheap, not too complicated, and I can use it on several domains from the same account. Adding it to a new site is simple. It works on static pages too, because it’s not self-hosted.
Before that I was using goaccess to analyze my nginx server logs. Goaccess was nice, but a bit of trouble to get setup and configured exactly as I wanted. I ended up having a PHP script to run goaccess on-demand. It worked okay. It didn’t really give as much detail as I wanted though, and it had no real way to differentiate bots from humans.
Before that I was using Piwik (which is now called Matomo). It was pretty good, but a pain to setup. It required a database. I really don’t have any desire to run and maintain a real database anymore. In the end, it just wasn’t worth the maintenance.
So in my use-case, where I run a lot of small sites for a really long time, I just wanted something basic and easy. A paid solution was what worked for me. I probably would have been better served by using Google Analytics, but I have long felt that using GA is disrespectful to my users. I think Google has enough data about us all already. I also avoid their CDN (e.g. Google Fonts) for the same reason.
I’ve been thinking about rolling my own analytics. It would probably be a PHP script I could simply include in my page router. From there it would log to a text file or a SQLite database. Loading the PHP page itself would update and display statistics. I’m thinking this would be dead simple to setup and maintain long-term. It just hasn’t been a priority.
I’m passively using Gauges on a couple sites and using one I built over a year ago (https://chew.sh).
It’s lacking a LOT of polish and features but I’m now actively working on it.
AWStats might be old and basic compared to newer stuff, but it gives me the data I care about and it’s still being maintained with new point releases.