The local agent probes

Those probes use a local agent on linux and windows hosts. On Linux, this agent directly parses ”/proc” and ”/sys”. On Windows, it uses COM to query WMI. It can also provides some jmx counters, that then works on every operating system.

It's made of two component, a generic jar that provides the probe description and the probes classes.

The second part is a local agent that runs on the server to be monitor. There is a windows and a linux version.

The nightly build are:

Buliding jrdsagent

The github URL to the agent is JrdsAgent's github. It uses maven.

git clone git:// jrdsagent
cd jrdsagent/

And build it

mvn package

Using jrdsagent on the hosts

After build or download, jrdsagent is used by launching using the command:

java -jar .../jrdsagent-<kind>.jar

For communications, jrdsagent default are the port 2002 and the protocol RMI. The port can be changer with the property jrds.port.

The protocol is set using the property jrds.proto. It can take the following values :

  • rmi, the default protocol, using the the only the port given for communications and providing it's own registry.
  • jmx, using jmx over rmi.
  • jmxmp, using the new and NAT friendly jmxmp protocol, but some setup is required and don't scale well.
  • jolokia, using Jolokia that use plain http and serialize using json.

RMI is full of tricks and booby traps. Ensure that the hostname don't resolve to in /etc/hosts.

jmxmp is more friendly but don't scale well, it can loose threads (look for long lived Job_Executor threads). All the needed libraries are embeded in the agent jar.

More informations about jmxmp can be found in the page about the jmx probes

A usage example is

 java -Djrds.port=2002 -Djrds.proto=jmxmp -jar target/jrdsagent-<kind>.jar 

Using jrdsagent on the the jrds server

The jar is also the probes plug-in, so it must be declared on the server that run jrds, in the files :


The connection class for this probe is jrds.probe.AgentConnection and uses two attributes:

  • port, the port used by the agent
  • protocol, the protocol used by the agent.

Both values must match the properties used for launching the jrdsagent on the remote host.

If the connection used is jrds.probe.LocalAgentConnection, then jrdsagent is run within jrds. It should be obvious that it's usefull only for the localhost, but it then can run very fast, without any network and RMI over head.

For example, if the agent was launched with:

/usr/bin/java -Djrds.proto=jolokia -Djrds.port=2002 -jar /usr/share/java/jrdsagent.jar

The associated connection declaration in the host should be:

    <connection type="jrds.probe.AgentConnection">
        <attr name="port">2002</attr>
        <attr name="protocol">jolokia</attr>

Probes list

Linux probes

Windows probes

Probe name Description Java class
PerfOS_Memory Collecting from Win32_PerfRawData_PerfOS_Memory jrds.probe.Wmiprobe
PerfOS_Processor jrds.probe.WmiProbeIndexed
PerfOS_System Collecting from Win32_PerfRawData_PerfOS_System jrds.probe.Wmiprobe

The connection

Local agent probes are connected probes

The connection class for this probe is jrds.probe.AgentConnection.

If the the connection class used is jrds.probe.LocalAgentConnection, there is no need to launch a local agent, jrds will take care of that. It works obviously only for the localhost.


Name Default value Description
port The connection port
protocol The communication protocol, one from rmi, jmx, jmxmp or jolokia
sourcetype/jrds_agent/start.txt · Last modified: 2019/03/28 18:24 by root     Back to top