Performance monitors are needed to help measure and manage the quality of service of distributed applications. Different types of performance monitors exist, offering a wide variety of performance metrics. These metrics range from the so called "health metrics" that indicate whether certain components are alive to metrics that specify the exact resource usage and elapsed time of a specific user's transactions. The result of monitoring exercises can be used to build models for both capacity planning and tuning exercises. These models can require the collection of very detailed information. Application level instrumentation can provide such information, but generally causes high overheads.
This thesis describes a prototype of an industrial de-facto standard application instrumentation framework named ARM 2.0 that gathers many performance metrics required for building, calibrating and validating predictive models. The approach can be used for on-line management or for building models of performance prototypes early in a system's development. Several important enhancements are added to the framework to provide better model building and problem solving capabilities. The thesis implements the concept of poly-abstract monitoring to collect the data needed to solve a problem at hand without imposing unnecessary overheads. The framework is tested for three different sample applications. A complete overhead study is carried out.