cryostat-legacy
cryostat-legacy copied to clipboard
[Epic] Explore non-JMX connection options
This is a high-level issue representing the desire to find non-JMX connection options. The frontrunner idea here is a Cryostat agent attached to the target JVMs, which may use a pull-based HTTP API or more likely some HTTP push protocol. This would be a complement to JMX for users/deployments where JMX is undesirable and attaching a JVM agent is feasible.
We might be able to use the NewRelic JVM agent on the target application side and have Cryostat implement the protocol to receive data pushed by it:
https://github.com/newrelic/newrelic-jfr-core
This can take repeated, short, overlapping recordings from the target JVM, deduplicate them, stitch the results together, re-encode it, and push it to Cryostat. We could then receive these pushed chunks and, using either the address of the pushing client or some other metadata, store the chunks into our archives. These agents could be represented by a specialized kind of ServiceRef and "connecting" to such a ServiceRef could always produce a no-op empty list of active recordings, available templates, etc., only exposing the corresponding archived recordings.
Pushing to 2.2.0.
See https://github.com/cryostatio/cryostat-agent. This isn't complete yet but underway.