Table of Contents
Sub Pages
EurekaJ Goal
The main goal of EurekaJ is to function as a complete Java Profiler for applications running in both test and production enironments. There are a large toolbox available today to enable online debugging of live production applications. However, these tools are are lacking in one of two areas. Complete solutions to online debugging, instrumentation and monitoring of Java applications come with a ridiculous price tag, while cheaper and open source tools usually have a rather narrow featureset.
EurekaJ aims to include the following features:
- Fine-grained: Low-level methods can be monitored
- Consolidated: All collected statistics is routed to the same logical server having the possibility to deliver a consolidated view
- Constant: Monitoring will take place 24/7
- Effective: Gathering monitoring data shall have a small as possible negative effect on the performance of the monitored application
- Realtime: The collected data will be visualized, reported and alerted on in real-time
- Historical: Data is stored in 30 days for visualization, comparisong and reporting of historical data.
It is important that realtime analysis of the applications performance and resources issues alerts when specified thresholds are breached. These alerts will take place either as email messages or as SNMP traps for integration with most widespread operations tools. While realtime alerting is an important feature, the ability to view detailed historical data is equally important both for fault analysis, reporting and to serve as a baseline for improvement of the monitored application.
How will EurekaJ achieve its goal ?
EurekaJ integrates perfectly with the excellent BTrace Java Agent, and a number of changes have been committed to the BTrace source to allow for smooth integration of BTrace with EurekaJ. This makes it possible for the EurekaJ developers to focus on improving and achieving the main goals of the EurekaJ product, while still being able to offer first class byte code instrumentation of the monitored application.
EurekaJ is currently split into three parts, the BTrace agent, EurekaJ Manager - the main EurekaJ application which is responsible for achieving the above goals and the EurekaJ Proxy - which functions as a proxy between the BTrace agent output and EurekaJ Manager.
EurekaJ Manager will primarily accept three types of data: Method execution times, The number method invocations as value information, which can be anything from memory usage to time spent in garbage collection or the number of active JDBC calls issued from a DBCP database pool. Through the use of BTrace scripts just about anything that happens within the monitored application can be visible to BTrace and reported back to EurekaJ Manager for analysis and alerting.
How far have EurekaJ come to achieve these goals ?
EurekaJ aims to release version 1.0.0 sometime in 2010. While currently in the second Beta test period, a fully functional version is expected as a result of a third beta test period.
Beta 1 - Infrastructure
- Integration with Jetty 6.1.11, JSF 1.2, Facelets 1.1.3, RichFaces 3.3.0.GA
- Embedded Jetty
- EurekaJ Agent with Javassist
Beta 2 - Agent -> Manager communication
- Interactive charts through JSFlot
- Object Oriented Database Storage through Oracle Berekley JE
- Manager Treemenu structure
- Ability to receive Value instrumentations, as well as method execution times and method invocations
- Ability to view memory usage is both heap and non Heap
- Ability to view active and total started threads
- Live data updated every 15 seconds
- Ability to set up instrumentations groups (View multiple nodes on the same chart)
- Ability to view both Live and Historical Data
- Ability to select a custom time interval and change the charts resolution
Beta 3 - Complete instumentation and EurekaJ Proxy
- EurekaJ Proxy parsing of BTrace script output [EUREKAJ-36]
- EurekaJ Manager integration with Apache CXF for incoming data [EUREKAJ-34]
- Ability to view time spent in garbagecollection [EUREKAJ-32]
- Changed from EurekaJ Agent to BTrace [EUREKAJ-31]
- Ability to view information regarding the Heap memory pools (new generation. survivor space, old generation, permanent generation) [EUREKAJ-39]
- Ability to send CPU information from EurekaJ Proxy to EurekaJ Manager [EUREKAJ-26]
- JDBC instrumentation [EUREKAJ-25]
- Specification of TimeZone Offset for chart viewing (where the application and the user is not in the same timezone) [EUREKAJ-38]
- Specification of Alertpoint
- Sending alerts via Email [EUREKAJ-40]
- Sending alerts via SNMP [EUREKAJ-41]
- Logviewer [EUREKAJ-35]
- Servlet instrumentation
Release Candidate for 1.0.0
- No new functionality, only bugfixes
1.1.0 or later
- Ability to transfer call traces from BTrace to EurekaJ Manager [EUREKAJ-21] [EUREKAJ-22]
- Dashboards - Ability to create named Dashboards and assign charts to the dashboards [EUREKAJ-28] [EUREKAJ-28]
- Exception Stacktraces [EUREKAJ-23]
- Viewing application stalls
- Handheld GUI with communication through Apache CXF [EUREKAJ-33]
- EurekaJ Manager users and login/logout
- The possibilities are endless
Jira
At any time it is possible to register bugfixes and new features in EurekaJs JIRA, which is hosted at Codehaus: http://jira.codehaus.org/browse/EUREKAJ
Architecture
Overall Arcitecture