InfraRED essentially consists of three modules:
The agent is embedded in the application server JVM. Instrumented applications can be run on this JVM. By instrumenting an application we mean weaving (adding) code into the application so that it makes calls to the agent before and after the execution of significant joinpoints. This weaving is achieved using one of the AOP systems available - at this point we support AspectWerkz and AspectJ.
Based on calls from the instrumented applications, the agent collects statistics regarding the execution of the applications. This information is aggregated and send over the network to the collector.
The collector gets statistics from agents residing on various JVMs. It aggregates this data and stores is periodically into a database.
The GUI is attached to the collector. It queries the collector and displays the collected statistics to a user. At this point we provide the GUI as a browser-based application, but other forms of GUI can also be written.