Slowpoke vs Elastic APM

Elastic APM is the one tool on this list that matches Slowpoke on both of the things we usually win on: it is free, and you host it. The difference is what you have to run to get it (Elasticsearch, Kibana and an APM Server) and what it hands you once it is up.

The short answer

Which one you should pick

If the Elastic Stack is already in your building, this is a close call and Elastic may well win it. If it is not, you are being asked to adopt a search cluster in order to find a slow query.

Choose Elastic APM if

You already run the Elastic Stack

  • Your logs are already in Elasticsearch and your team already lives in Kibana.
  • You want logs, metrics, traces and APM correlated in one place you already operate.
  • You need distributed tracing across many services, with full trace search. Slowpoke has none.
  • You want Elastic's language agents, its OpenTelemetry distribution and OTLP intake in one server.

Choose Slowpoke if

You do not want to run a cluster to answer one question

  • You have three servers and no platform team, and Elasticsearch is a second system to keep alive.
  • You want the machines you inherited mapped for you, not an index to fill.
  • You want EXPLAIN plans with the index to add, which no APM server produces.
  • You want everything priced in one unit a non-engineer can read.
  • You want the findings to become work that closes when the numbers say so.

Side by side

Slowpoke and Elastic APM, line by line

Written to be fair, including where Elastic APM is the better tool. If a row here is wrong or out of date, that is a bug: open an issue and it gets corrected.

Aspect SlowpokeElastic APM
Price€0€0 for the free tier, self-hosted
LicenceOpen sourceElastic Licence by default; an Apache-2.0 distribution exists
What you have to runOne 21 MB binary, SQLite or PostgreSQLElasticsearch, Kibana and APM Server
Memory footprint64 MB agent, small serverA JVM search cluster, sized to your data
Where your data livesYour machinesYour machines
Before the first answerOne command per machine, about 15 minutesStand up the stack, then instrument the applications
Works with no instrumentationYes: access logs, slow logs, DB statistics, /procAgents or OTLP required
Maps what you inheritedReads sites, pools, databases, caches, apps and frameworksShows what you instrumented
Says what it cannot seeYes, with the lines that fix itNo
Prioritised for youSeconds of waiting per day, one listCharts, and the queries you write
Query plans with a fixReal EXPLAIN, twelve named diagnosesNo
Code origin of a queryFile and line, via framework packagesAuto-instrumentation rarely gives one
Distributed tracingNot its jobFull trace waterfalls and search
Logs at scaleNeverIt is Elasticsearch
Work that verifies itselfMissions closed by measurementNo

Free is not the same as cheap

Elastic APM costs nothing to license in its free tier, and that is a real and generous thing. What it costs is operational: an Elasticsearch cluster and a Kibana, sized and tuned and kept alive, plus an APM Server in front. If you already run all of that for logs, adding APM is close to free in every sense and you should probably do it.

If you do not, the honest framing is that you are being asked to adopt and operate a distributed search system in order to find out why checkout is slow. Slowpoke is a 21 MB distroless image running as a non-root user, with SQLite as a supported database, and a 15 MB agent per machine capped at one CPU core and 64 MB. The agent even reports what it costs the machine, measured between one round and the next.

An index waits for you. Slowpoke goes and looks.

Elastic APM starts empty and fills up with whatever you instrument. That is the correct design for a platform, and it assumes you know what your estate contains.

Slowpoke assumes you have just arrived and do not. slowpoke-agent detect reads a machine and reports the nginx server blocks and whether their log format records request duration, the PHP-FPM pools, the local MySQL and PostgreSQL, Redis, and the applications with the framework each one uses. It writes its own configuration from what it found, and then lists what it still cannot read (a database with no user, a pool with its slow log off, a service with no framework package), each with the exact lines that close the gap and the lines that undo them.

The database answer no APM server gives

An APM server receives spans. A span can tell you a statement took 40 ms; it cannot tell you why, because the reason lives in the query planner.

Slowpoke's agent runs EXPLAIN next to the database, in a read-only transaction, only on statements it has already seen on that machine (the server never chooses the SQL), and translates the plan into twelve named diagnoses with the fix each one implies: the composite index to add, the varchar column being compared with an integer so the index is silently unusable, the deep OFFSET that wants a keyset cursor. On PostgreSQL 16 and newer it can plan statements stored without their values.

Can you run both?

Yes, and cleanly. The Slowpoke agent receives OTLP directly, so if your services already emit OpenTelemetry for Elastic they can send to Slowpoke as well without being instrumented twice. Keep Elastic for logs and trace search; let Slowpoke own the prioritisation, the query plans and the debt report.

FAQ

Slowpoke and Elastic APM, asked plainly

Both are free and self-hosted. What actually differs?
What you run and what you get. Elastic APM needs Elasticsearch, Kibana and an APM Server, and gives you traces, logs and metrics to query. Slowpoke is one 21 MB binary with SQLite or PostgreSQL, discovers your machines by itself, and gives you an ordered list of what to fix with query plans and prices.
Does Slowpoke need Elasticsearch or ClickHouse?
No. SQLite or PostgreSQL, and SQLite is a genuine option for a small estate.
Can Slowpoke read the OpenTelemetry I already send to Elastic?
Yes. The agent has an OTLP receiver, so the same telemetry can go to both. Slowpoke deduplicates its sources, so a request seen by nginx and by OTLP is counted once, never twice.
Does Slowpoke do trace search?
No. There is no trace waterfall and no cross-service trace search. If you need to follow one request through eight services, that is what Elastic APM is for.

Find out what you inherited

Give it fifteen minutes on one server and the first number is yours. Finding out costs nothing.