Repository navigation
Plugin coverage gaps
Nicholas Antinori edited this page Aug 4, 2026
·
1 revision
Shipped Plugins cover common stacks, not every client or reactive path. This page lists frequent gaps so empty tabs look like coverage limits, not a broken agent.
For intentional product non-features (no sampling %, no URL→name regex, ...) see What Glowroot does not do.
| Symptom | Often means |
|---|---|
| Gauges OK, no Web / HTTP transactions | HTTP stack not woven (Vert.x / custom server, wrong Servlet vs Jakarta plugin, plugin off) |
| Queries empty, app talks to a DB | Not going through java.sql.* (Vert.x SQL Client, some reactive drivers) — custom Instrumentation ≠ Queries |
| Service Calls missing for outbound HTTP | Client API not advised (e.g. JDK java.net.http.HttpClient), or an async overload that only wraps callbacks |
| Spring WebFlux names look like raw URIs / thin timers | Spring plugin targets MVC-style controllers more than WebFlux routing |
| Dual APM agents + weird JDBC errors | Two weaving agents on one JVM — pick one (Plugins / FAQ) |
- OTP / Vert.x / Netty-only apps — JVM gauges can look fine while Web stays empty: there is no Servlet request for the servlet plugins to name. Use Instrumentation (or a framework entry the netty / other plugins already cover) to start transactions.
-
Servlet vs Jakarta Servlet —
javax.servletvsjakarta.servletare different plugins. Spring Boot 3 needs a current agent and the Jakarta plugin path.
-
Queries = JDBC weaves of
java.sql.*(Jdbc plugin), not “any database traffic.” - Vert.x SQL Client and similar non-JDBC APIs often bypass that → empty Queries even with custom pointcuts on your repository classes.
- Custom Instrumentation can time your methods; it does not populate the Queries store the way Jdbc does.
Covered examples live under the http-client plugin (Apache HttpClient sync/async variants, OkHttp, HttpURLConnection, ...). Still incomplete:
-
JDK
java.net.http.HttpClient— not woven today → no Service Call entry from that client alone. -
Apache HttpAsyncClient
execute(producer, consumer, callback)— advice may only attach an aux thread context to the callback (no Service Call entry). Otherexecute(...)overloads that start async service-call entries still apply. Issue tracker: #968.
Workaround when you need visibility: Instrumentation on your wrapper that performs the call, or use a client the plugin already advises.
-
Spring MVC / Web controllers — Spring plugin (
ControllerAspect, ...). - WebFlux — weaker / different naming and timer richness vs MVC; raw URI-style names are a common report (#945). Prefer Instrumentation for critical routes if MVC-style names matter.
- Disabling the Executor plugin often detaches work submitted to pools from the parent trace — looks like “missing” spans, not a coverage gap in the HTTP plugin.
- Callback-only paths (see async HTTP above) need either plugin support or your own transaction/entry boundaries.
- Confirm the relevant plugin is enabled (Plugins).
- Check this page + What Glowroot does not do before filing “agent broken.”
- For app-specific types: Instrumentation or Batch application instrumentation.
- To extend Glowroot itself: Plugin and Pointcut basics + For contributors.
- Product change requests: Discussions → Ideas (or an issue with a clear repro if you believe it is a defect in an existing weave).
Home · Releases · Discussions · Issues · Troubleshooting
Glowroot is licensed under the Apache License 2.0.
- Home
- Choosing Embedded vs Central
- What's new
- Health endpoints
- Troubleshooting Tips
- What Glowroot does not do
- Plugin coverage gaps
- How to read a Trace
- Re-engineering a slow call
- Releases
- Agent Installation (with Embedded Collector)
- Agent Upgrade
- Multiple JVMs and agent.id
- Where are my application server's JVM args?
- Plugins
- Instrumentation
- Plugin coverage gaps
- Batch application instrumentation
- Administration-Storage
- Administration-Web
- Agent Installation (for Central Collector)
- Central Collector Installation
- Central Collector with Docker
- Central Collector Upgrade
- Central Collector Cluster
- Cassandra Client Configuration
- Kubernetes
- Multiple JVMs and agent.id
- Agents and rollups
- Plugins
- Instrumentation
- Plugin coverage gaps
- Synthetic monitors
- Administration-Storage
- How to read a Trace
- Re-engineering a slow call
- Transaction tabs
- Transaction configuration
- Alerts and incidents
- Gauges and JMX
- Errors tab
- UI Defaults
- Advanced and config.json
- Ad-hoc reports
- Users and Roles