Transparent Real Time Monitoring for Multi-tenant J2EE Applications
暂无分享,去创建一个
With the emergence of PaaS and SaaS cloud delivery methods, accurate monitoring and metering become an important challenge for the cloud providers, as they assure the input that drives the elasticity of the solution, by dynamically provisioning and de-provisioning resources, and at the same time enable the chargeback for the resources used. This paper presents an approach for real time monitoring of multi-tenant Java J2EE based applications. The main requirements of such a monitoring solution are: low monitoring performance overhead on the JVM, capability to monitor code execution by JVM thread based on the tenant running it and dynamic granularity adjustment at Java method level, enabling relevant reporting of code execution. The solution proposed in this paper combines three methodologies of JVM and J2EE monitoring to achieve a correlated view of the code execution. The first layer is at JVM Tooling Interface by using a native agent that captures the thread execution events and adds dynamic instrumentation in the code of the target application at method level. The second layer is at JAAS level in J2EE where the authentication operations are hooked and linked to the JVM threads. Finally the third layer is at EJB container level where the EJB 3.0 interceptors are used to monitor EJB calls. The real time data from these three layers is consolidated based on the tenant's identity and reported to a metering application. The experimental results are focused on the accuracy of the monitoring solution implemented on Apache Geronimo 3.0.0 application server, using a benchmark application. Finally the paper presents the monitoring performance overhead introduced by the solution proposed measured on SPECjvm2008 benchmark application, focusing on the granularity of monitored data.