Monitoring
A live introspection surface over the running JVM. Use it when you need to see CPU load, heap pressure, GC behaviour, thread state, and the underlying connection-pool counters for every data source the platform has registered.
The data is sampled from the standard java.lang.management.* MXBeans on each request - no agent, no JMX socket. CPU-load accessors come from com.sun.management.OperatingSystemMXBean via reflection so the module stays free of Sun-internal compile-time dependencies. HikariCP pool stats come from the pool's own HikariPoolMXBean.
Layout
| Region | View | Purpose |
|---|---|---|
| Left | Metrics | Navigator - jumps between the centre views and shows the platform-wide counts (data-source pools, registered data sources). |
| Centre | Monitoring | JVM dashboard tiles: CPU, heap, non-heap, per-pool memory, GC, thread totals. Auto-refreshes. |
| Centre | Threads | Filterable list of every live thread - id, state, daemon, priority, CPU / user time, lock owners. |
Access
- Perspective id:
monitoring. Display order1100(after Operations / before Settings). - All three views are
lazyLoad: true. The Metrics navigator loads first; the centre views activate on tab click. - Backend REST endpoints are mounted at
/services/ide/monitoring/:
| Endpoint | Returns |
|---|---|
GET /services/ide/monitoring/metrics | Point-in-time MonitoringSnapshot (runtime / CPU / memory / threads / GC). |
GET /services/ide/monitoring/threads | Detailed ThreadDetail[] - omitted from the snapshot to keep dashboard polls small. |
GET /services/ide/monitoring/counts | Named counts: data sources, Hikari pool sizes per source. |
All three are gated by @RolesAllowed({"ADMINISTRATOR","DEVELOPER","OPERATOR"}). Anonymous users see nothing.
When to use what
- A spike in p99 latency you want to diagnose - open Monitoring, scan heap and GC tiles, switch to Threads to find the blocker.
- An
OutOfMemoryError- check the per-pool MemoryPoolInfo tiles (Eden, Old Gen, Metaspace) on the Monitoring tab. The Metrics navigator also surfaces Hikari pool exhaustion as a count. - "Why is this connection-pool reporting zero idle?" - the Metrics navigator's count groups list every
DirigibleDataSource; for HikariCP-backed pools thetotal / active / idle / threads-awaitingcounts come straight offHikariPoolMXBean.
Notes
- The Monitoring perspective and the Messaging perspective are sibling devops surfaces - Monitoring covers the JVM, Messaging covers the embedded ActiveMQ broker.
- The platform-wide Tracing perspective is the OpenTelemetry-backed companion for distributed traces; use it together with this perspective when an externally observable slowdown maps back to an internal hotspot.