Every monitoring surface the platform has shipped since, the cache treemap, the classloader tree, the cluster catalog, the session and script tiers, the dashboards that read at a glance, stands on three days of work in January 2026. The idea was simple and the consequences were not: the running server is a database, and the way to ask it anything is SQL.
Tables, not dashboards
- Schemas for what the server is made of A monitoring database coordinates schemas, each a logical group: the JVM, the JDBC tier, the caches. A query names its table with the schema, and names are case-insensitive.
- Materialised when asked A table is created when first accessed and reads the runtime's own beans and statistics collectors at that moment, so every query reflects the state now rather than a sample.
- The first tables Memory, memory pools, off-heap, threads with CPU time and blocked and waited counts, garbage collection with counts and times per collector, class loading with churn, and a one-row overview of the JVM. By the third day the JDBC tier followed: servers, databases, pools, connections and statements.
- Queries engineers already know The threads above a CPU threshold ordered by time; the collectors ordered by time spent; the memory pools over eighty percent.
A JDBC driver for the server itself
- Any SQL tool A JDBC 4.2 driver connects to the instance database with its own URL scheme and discovers schemas, tables and columns through the standard metadata calls, so a desktop database tool browses the running server like any other database.
- Built in The driver is registered as a built-in engine type beside Informix, with no external jar, so a monitoring connection identifies itself as what it is instead of borrowing an embedded engine's identity.
- Read-only, concurrent Connections are read-only with auto-commit, several may be open at once, and a thread-safe singleton hands them out.
A real engine underneath
- Permissions per column The engine beneath is a complete in-memory SQL database with insert, update and delete, where every column is read-only unless a table permits it. An operator may set a database's lifecycle to stopped through an UPDATE; the same statement against its name is refused with a message naming the columns that may change.
- Constraints and triggers Values are validated before they land, and lifecycle hooks run on insert, update and delete, which is how a later release made a row's delete cancel the work it describes.
Decorated for reading
- Labels, headers, durations A table carries its column labels and header groups, formats an uptime as hours, minutes and seconds, and titles itself after the JVM it describes, so a client grid renders it without a screen definition.
- The old console retired The console views that had served the same data one screen at a time were deprecated with a migration guide, and the console class removed.
A dashboard answers the questions its author imagined. A database answers the question you have. That is the difference this release made, and everything the observability catalog has become since is a consequence of it.