[Hawkular-dev] scope of the agent design

Juraci Paixão Kröhling jpkroehling at redhat.com
Wed Mar 11 15:10:53 EDT 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi John,

On 03/11/2015 06:57 PM, John Mazzitelli wrote:
> 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?"
> :)

I think the "what" needs to be defined before the "how", hence my
questions.

> So, what do we plan on having the agent do? What is its scope?

I take it that the agent is a "metrics collector". In my mind, it has
no power to influence the state of the application or machine: it just
collects and reports.

Collecting to me means: take a snapshot of the moment and store it
somewhere locally.

Reporting to me means: take the stored snapshots and send it to a
server somewhere. Once the server ACKs that it received, those
snapshots are then removed from the local storage.

> How much knowledge of the inventory does the agent need to know?
> How does it gain this knowledge of its inventory?

Is "inventory" also a definition from RHQ? Or can I assume that
"inventory" is "a thing that can be measured"? Like, "CPU" is an item
on the inventory, as well as "Memory" and "Web Application 'Acme
Travel System'".

> Does the agent auto-discover resources? How?

Yes.

For web applications, via a Java Agent, as this would allow to detect
"everything" that runs on the JVM. With that, it would be possible to
detect deployments and its capabilities (JAX-RS, EJBs, Batch jobs,
...) and apply specific metrics to specific facets. For instance, for
a JAX-RS application, there could be a collection of metrics per
endpoint (average/mean/max/min response times). For EJBs, the same but
per "business method". For JPA, it could collect the time spent on the
DB (and perhaps even aggregate that by prepared statement).

For system resources, I think it would need to be something that would
run with (high?) privileges, so that it can take data like disk space
in all partitions, CPU/memory/swap usage, network traffic, ...

> Can the agent be told about resources that it cannot
> auto-discover?

Do you have a sample use case for this? What I can imagine is: web
application 'Acme Travel System' is deployed but the agent can't
detect it automatically. Something tells the agent that there's a web
application deployed. But still, if it cannot see it, how can it
measure it?

> 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?

Not sure I understand the question, but I'd say yes: as an application
developer, I want to be able to add custom metrics, such as "# of
logged in users", "# of registrations", "# of checkouts" and so on.

- - Juca.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJVAJM9AAoJECKM1e+fkPrXIIYIAJcw5Ahx6izb5XrQFTXlNy34
gxgSaqQLsn7Dknj5VsftzdYjvOV/hQtX7frVmYoaq1mcLnZy+GrqVHxJQEaxdiFr
qb30GiKg6CYYP1n0kTSTpyhXTctKzukWDw9/CIxsy22eXnTuZkqclPJVGALL3yDS
kdYW7zZh87XV1M/TwIXFOjls7D0KhVlvyJBwLTH4PxHtraQKTTdq7Iwhl9SwZlgS
VEKDkRFCAXhbXUiG9eqkZOat8Pw9aWWP3cY90Q9M512WlXbAhVMEfxVuSX8NxHFp
lMgU2cHS5jzuJEyXaR8e0ggmit8WwM8jm08vvpGUqY1YE/xJ8UYG+HNH4DBNc2M=
=QWMp
-----END PGP SIGNATURE-----


More information about the hawkular-dev mailing list