Watchdog is a performance monitoring and tuning framework. It is suitable for production environments allowing flexible auditing of performance data for later analysis by a comprehensive set of tools.


Watchdog is a performance monitoring framework. It consists of a number of "timers" which time method calls, servlet calls, remote calls etc. These timers produce "timings" which feed into a set of monitors. The monitors allow different actions to occur, driven by these timings, such as enabling other timings, logging the information to a database or JMS queue via a collector, or notifying support teams. The timings can also have data attached to them, such as SQL queries or XML messages. This extra data can be used for explaining patterns in the timings during later analysis. The configuration will be modifiable both at runtime and build time, allowing use in development, test & production environments.

This data collection mechanism will be complemented by a set of web-based tools (written using Struts & JSP) to provide detailed analysis of the data, allowing users to pinpoint bottlenecks, providing an aid to tuning the application.

The typical way of producing timing data for applications is using snippets of timing code throughout the application. However this pollutes the code. Watchdog aims to be cleaner by providing alternative means of instrumenting the code, via use of proxies, byte code manipulation and drop-in wrapper objects such as servlets & jdbc drivers. These allow the software to get around the problem of reflection which dogs some commercial offerings such as Borland ServerTrace.