
Show HN: Ballcone is a fast and lightweight server-side Web analytics solution - scoresmoke
https://github.com/dustalov/ballcone
======
stephenr
It seems slightly odd to me that it’s essentially an access log analyser, but
you just assume everyone is using Nginx.

Also as it uses an embedded dB does that mean it can’t be scaled to multiple
servers (unless you send all the access log data to multiple Servers)?

~~~
scoresmoke
Of course, the world is not limited to just nginx. As soon as the Web server
allows sending access logs via the syslog protocol, Ballcone should handle it
well. Well, nginx is my usual choice, so I focused on supporting it first. As
far as I know, haproxy allows it, too, but I have not tried it yet.

An embedded database is used intentionally. Not just because I like them, but
because I am inspired by the services like Cockpit ([https://cockpit-
project.org/](https://cockpit-project.org/)) that provides a Web console to
the server on SSH login.

Scaling is an excellent question. My preliminary tests showed that MonetDBLite
handled approximately 500–700 inserts per second on a small Linux virtual
machine with HDD. Larger scales require specialized solutions like ClickHouse
or Vertica. Just in case, Ballcone supports gathering data from multiple
remote hosts.

------
leshokunin
How does it compare with Matomo?

~~~
scoresmoke
Matomo is a comprehensive Web analytics platform that aims at replacing Google
Analytics (and/or similar solutions).

Ballcone, however, aims to fill the niche between ‘static’ access log parsers
like GoAccess and bigger systems like Matomo or Open Web Analytics. It does
not require putting a JavaScript snippet to the website and, at the same time,
is very simple to deploy. Just connect it with the nginx syslog logger and see
the data updating in (near) real-time.

Also, Ballcone is based on embedded columnar storage, MonetDBLite, which
allows fast analytical queries for plotting charts and dashboards.

I have been using it for a few personal projects since March and I am glad to
share it!

