I was going to wait to post this, but since it was brought up already, might as well start
this thread now.
Regardless of how the agent is to be implemented, we need to answer the question
"WHAT will the agent DO?" It is an existential question - kind of like asking
"What is the purpose to my life?" :)
So, what do we plan on having the agent do? What is its scope?
How much knowledge of the inventory does the agent need to know? How does it gain this
knowledge of its inventory?
Does the agent auto-discover resources? How?
Can the agent be told about resources that it cannot auto-discover?
Does the agent need to be pluggable so it can load and interface with plugins to handle
monitoring of different resources? What are these plugins?
Additionally, we can add (in Juca's words):
What is the scope of the agent? Will it gather only data about the
environment, like, memory consumption, span of worker threads, CPU
consumption, GC-time, ...? Or business metrics as well, like "requests
per second", "number of exceptions in the last X minutes", "average
time spent on database", and so on?
Also, is the same agent also responsible for capturing non-JVM related
data, like, disk space utilization, network traffic, ...?