Glassbox monitors applications non-invasively by using aspects to track component interactions. We also monitor built-in JMX data, notably on a Java 5 VM we sample thread data (every 100 ms by default). As a request is processed, we summarize noteworthy events such as where time was spent and what parameters were involved in making things slow or fail. We also detect higher-level operations (such as Struts actions or Spring controllers) that we use to report on. Our AJAX Web client then provides summaries of status by operation on the machines being monitored and we generate a more detailed analysis on request. Glassbox allows monitoring clusters of servers: the Web app uses JMX Remote or direct RMI to access data from remote servers. We also provide JMX remote access to the lower-level summary statistics.Glassbox uses Aspects to monitor common components and to capture context data such as request parameters and correlating connection URL’s with subsequent JDBC operations. They are also using aspects internally, such as their error isolation aspect that "prevents exceptions in our monitoring from escaping to cause failures in the monitored application."
Load-time weaving has a great plug-in architecture so it’s easy to extend Glassbox analysis to monitor additional components either by configuring XML or by writing a small amount of AspectJ code, then building a jar file that you deploy in addition to the standard Glassbox monitor jar.Glassbox is not trying to be a general purpose monitoring or reporting tool or to compete with various leading performance monitoring and correlation systems. Many other systems focus on storing large production datasets for analysis and correlation, allowing play-back of production transactions with traceability from the browser down to the database.
Glassbox is available under LGPL, making it freely usable and embeddable as a component. The business model is to sell consulting, training and support services to those who are successfully using the technology.