// the find
scouter-project/scouter
Scouter is an open source APM (Application Performance Management) tool.
Scouter is a full self-hosted APM stack for Java web apps (Tomcat, JBoss, standalone JVMs) plus OS-level host monitoring, built around bytecode instrumentation rather than a vendor SDK. It's for teams who want New Relic/AppDynamics-style method and SQL profiling without paying for it or sending data off-prem.
The agent does real bytecode-level instrumentation (ASM/byte-buddy) across a surprising range of targets — JDBC, HTTP calls, Elasticsearch's REST client, Spring controllers, even reactive/async code paths like Reactor's Mono and Kotlin coroutines — which is the hard part of building an APM and most open-source alternatives skip it. Telegraf support extends coverage to Redis, Kafka, MySQL, RabbitMQ etc. without writing separate agents, and Zipkin-compatible storage means non-JVM services (Go, Python, Node) can show up in the same XLog view. The agent/collector/client split with its own TCP/UDP wire protocol is a legitimately different architecture from most JVM APM tools, which tend to just ship traces to a remote SaaS endpoint.
The client is an Eclipse RCP desktop app, not a web dashboard — it explicitly doesn't run on OSX Big Sur, which is a hard blocker for anyone on a recent Mac and a big step back from the browser-based UIs competitors ship. Bytecode hooks pinned to internal APIs of specific library versions (Mongo async driver internals, Reactor internals) are inherently fragile — upgrading a dependency can silently break instrumentation with no compile-time signal. Primary documentation and most blog posts are Korean with machine-translated links as the English fallback, so debugging non-trivial setup issues means reading auto-translated forum posts. There's no architecture doc explaining the agent-collector-client protocol at a level above 'read the source' — you're expected to reverse-engineer netio/request handling from the code itself.