Monitoring of Remote Procedure Calls

In this blog post, the participants of the master’s project on “Distributed Monitoring”, which has been conducted at Kiel University in winter 2013/2014, report about their results:

Our task has been the development and implementation of concepts for monitoring remote procedure calls in distributed software systems, employing selected Java EE technologies. PubFlow, a distributed software system for scientific workflow automation, has served for the evaluation of the developed approach. We have used and extended a high-throughput tuned version of Kieker. ExplorViz has been used for live trace processing and visualization.

Literature distinguishes several kinds of communication strategies in distributed systems. PubFlow utilizes two of them, namely asynchronous exchange of messages and synchronous calls. Three different libraries are used to implement these strategies: Apache CXF (JAX-WS), ActiveMQ (JMS), and HSQLDB (JDBC).

ExplorViz Monitoring

To identify traces across system boundaries additional data is required for the respective calls crossing these boundaries. Several techniques exist to gather this additional data by identifying these calls and message flows between systems. For instance, every call can be uniquely identified by caller and callee, and their respective IDs called metadata. If a call crosses system boundaries, this metadata is passed along with the call and added to the trace information on the called system. Having this information, we can reconstruct call graphs of the entire distributed system.


In practice, transmitting these metadata with every call is challenging. Metadata can be transmitted in two ways: separately (out-of-band transmission) or as part of every call (in-band transmission). Out-of-band transmissions require unambiguously matching metadata with the respective calls. Without unique identifiers across system boundaries, it is hard to find these matchings. Therefore, we choose to use in-band transmissions for our implementation.

In the case of PubFlow, we have been able to extend JAX-WS/SOAP calls and JMS/ActiveMQ messages transparently. However, our changes to the binary protocol of HSQLDB are specific for PubFlow.
We have been able to visualize Java package dependencies through the entire distributed system with ExplorViz. It is planned to make the developed extensions publicly available.