InspectIT

inspectIT is an open-source application performance management (APM) tool, which enables the diagnosis, analysis and monitoring of Java applications. inspectIT is developed by NovaTec Consulting GmbH, an IT consulting company from Stuttgart (Germany), but it has been made open-source in August 2015.

Functionality
inspectIT follows a "user-transaction-centered” approach, whereby the focus is on the analysis of concrete user requests. For each request against a system which is supervised by inspectIT, a detailed call tree, named invocation sequence, is constructed. The invocation sequences contain the exact execution times of all invocations of instrumented methods. Using this information, user requests can be analyzed and root causes of potential problems can be discovered. Also included in the invocation sequences are all requests against databases which can be used to detect and solve problems in the database access layer or certain queries.

Since version 1.8.1, inspectIT offers functionality for real user monitoring that records user interaction with, for example, a website or web-based application.

Architecture
The architecture of inspectIT consists of three main components:
 * inspectIT Agent — it is integrated into the system which should be supervised, collects diagnostic information of the integrated measuring points and sends the gathered data to the central inspectIT Server. The agent is designed to introduce as little as possible overhead into the target system, in terms of CPU and memory usage.
 * inspectIT Server (also called centralized measurement repository (CMR)) — it receives, processes and stores the diagnostic information sent by the inspectIT agents and provides it to the inspectIT user interface.
 * inspectIT User Interface - it is an Eclipse RPC based application and enables the analysis of the diagnostic information provided by the inspectIT Server.

Functioning
During the Java class loading process of the JVM, a Java-based agent is integrated into the class loading process, which is able to intercept and modify the Java bytecode of loaded classes. Contrary to profilers, inspectIT injects measurement points only at specific locations to keep the overhead of the measurements at a minimum. Using this approach, it allows the user to transparently inject measurement points into an application without adapting its source code.

History and naming
The development of inspectIT started in the year 2005 under the name NovaSpy as closed source software. It was renamed into inspectIT in 2008 and the first major release (version 1.0) has been released in March 2010. Since then, new versions have been released on a regular basis.

Open source
On August 14, 2015, inspectIT has been made available as open-source software under the Apache License, Version 2.0 (ALv2).