OpenObserve and Central Logging pitch the same first sentence: a self-hosted single binary, no cluster, no JVM.
Then they diverge, and the honest summary is short. OpenObserve does more, and it is free. If you have read this far expecting a page explaining why a $187 product beats an AGPL-licensed one on features, it does not.
What follows is the case for the smaller tool, which is a real case but a narrow one.
It is free and open source, under AGPL-3.0, with a commercial enterprise edition alongside.
It is an observability platform, not a log server. Logs, metrics, traces, real user monitoring, and AI/LLM observability — one product, one binary.
It queries with SQL and PromQL. SQL for logs and traces, PromQL for metrics, no proprietary query language to learn.
It stores in Parquet and is designed around object storage. Single-node mode defaults to local disk (ZO_LOCAL_MODE_STORAGE=disk), and you can point it at S3 without changing anything else. Its own documentation describes a largest production deployment ingesting over 2 PB a day.
It scales past one node. Turn ZO_LOCAL_MODE off and it becomes a cluster with separate roles.
It alerts, scheduled and real-time, with anomaly detection and several notification channels.
That is a genuinely impressive amount of software to get for nothing, and for a team that wants traces alongside logs there is no argument to make here. Install OpenObserve.
Three reasons people pick the smaller thing, and only the third is about features.
One: the storage is a SQLite file. Central Logging writes one SQLite database per log source, WAL mode, on the local disk. You back it up by copying a file. You query it with sqlite3 when the web UI is not what you want. There is no WAL directory, stream directory, Parquet compaction or object-store lifecycle to understand, because there is nothing that needs them at this size.
That is a real limit, not a boast. It is sized for teams under roughly 10 GB a day. Above that, the design stops being an advantage and starts being the problem.
Two: ops monitoring is in the box. Not a log query dressed up as monitoring — separate features:
For a small team, those four are usually three more self-hosted services avoided. That is the thing being bought.
Three: the licence. AGPL-3.0 is fine for most people and a hard no for some — typically anyone embedding a log viewer in something they ship, or working somewhere with a policy about network-copyleft. Central Logging’s licence is a one-time purchase with no source obligations. If AGPL is not a problem for you, ignore this paragraph; it is the least interesting difference on the page.
| OpenObserve | Central Logging | |
|---|---|---|
| Licence | AGPL-3.0, free; commercial enterprise edition | $187 once |
| Deploy | Single binary, Docker, or HA cluster | Single binary |
| Storage | Parquet on local disk or S3 | SQLite per source, local disk |
| Signals | Logs, metrics, traces, RUM | Logs, plus scraped Prometheus metrics |
| Query | SQL and PromQL | SQLite SQL and full-text search |
| Scale | Single node to petabytes a day | Small teams, roughly under 10 GB/day |
| Alerting | Scheduled and real-time, anomaly detection | SQL and full-text rules, every 5 minutes |
| Alert on absence | Yes | Yes — a rule that returns no rows |
| Cron job monitoring | No | Yes, with learned schedules |
| Uptime checks | No | Yes |
| Host inventory | No | Yes |
| Auth | Basic auth; SSO in the enterprise edition | Single admin account, no SSO |
The bottom four rows are the whole pitch, and the rows above them are the whole counter-argument.
Central Logging has one admin login. No SSO, no SAML, no OIDC, no LDAP, no roles, no second user account. The licence is verified offline against a compiled-in key, so there is no call-home, but there is also nobody to give read-only access to.
OpenObserve’s open-source edition has basic auth and its enterprise edition adds OIDC, OAuth, SAML 2.0 and LDAP. If more than one person needs to log in with their own credentials, that decides it, and no other row matters.
Both use SQL over logs, and the difference is what the SQL runs against.
OpenObserve parses structured fields at ingest and queries columns.
Central Logging keeps the raw line in a msg column and gives you SQLite’s JSON functions on top:
SELECT datetime("timestamp", 'unixepoch') AS at,
json_extract(msg, '$.MESSAGE') AS message
FROM logs
WHERE json_valid(msg)
AND CAST(json_extract(msg, '$.PRIORITY') AS INTEGER) <= 3
ORDER BY "timestamp" DESC
LIMIT 50;
Two details in there are load-bearing, and they are the kind of thing worth knowing before you choose. json_valid(msg) belongs in the WHERE clause — without it, one plain-text line among the JSON makes json_extract raise an error partway through, after rows have already been returned. And the CAST is not decoration: SQLite compares TEXT above every integer, so an uncast <= 3 matches nothing at all, silently.
That is the trade. Less schema, more SQL. Querying logs with SQL covers it properly.
sqlite3, and back up with cp.Use OpenObserve if you want observability — traces and metrics beside your logs — or if you expect to outgrow one machine, or if free is the requirement. It is the more capable product and it is not close.
Use Central Logging if logs are the whole job, the volume is modest, and you would rather the same binary also watched your cron jobs, your sites and your servers so you have fewer things to run.
Weighing the heavier stacks instead? The ELK stack and Grafana Loki comparisons cover those. For live Docker log viewing specifically, Dozzle is free and better at it than either.
The free download is the complete product, not a trial. Ship one server’s journal at it and see whether the smaller tool is enough.
14-day refund if you buy and it does not fit.
💌 Get notified on new features and updates