inspectIT

Background: 

Application performance is one of the most important non-functional requirements of software projects. But even with more and more studies being published by big internet companies showing that performance and revenue are closely related, companies are still slow to adapt to processes and tools to ensure application performance. One reason we see for this problem is that tools for monitoring and diagnosing application performance are usually quite expensive.

In 2007 at NovaTec Consulting GmbH we decided to offer our customers a tool independent consulting approach to application performance management. We further saw the need for a application performance management tool, that was low-cost or even no-cost and started to develop inspectIT. In the following years we improved the solution and used it in many customer projects and firefight situations to improve application performance. In 2010, NovaTec Consulting decided to make inspectIT available for free (with an own license) and pass it to our customers and the whole world. 

We saw that with the free tool we already reached lots of people and projects and allowed them to also manage their performance without the direct need to buy expensive APM solutions. With the step to go Open Source at Eclipse Foundation we want to even increase the pace of showing that ensuring application performance is possible without high-cost tool solutions. We also want to broaden the approach and allow other people to improve the solution to the benefit of everyone.

Scope: 

The goals of inspectIT are

  • to provide an application focussed performance solution that can be used from development to production systems.
  • to provide an end-to-end transactional view of every user request on the system and to deep dive into these traces for problem analysis.
  • to provide the full breadth of technologies, from webbased and mobile application monitoring, to monitoring of the applications running in the business tier to the backends the applications are using.

We currently do not plan to address:

  • Networkbased monitoring
  • System monitoring (there are already many good tools available)
Description: 

inspectIT is a Java-based application performance management solution that allows monitoring and diagnosis of applications. inspectIT provides and end-to-end view on application performance starting from the end-user (e.g. browser, mobile, rich client), to the business tier (application servers, EJB, Spring, ...) to the backends (databases). At its center inspectIT provides so-called invocation sequences, which are detailed call graphs of the methods and classes being invoked during a specific user interaction. Invocation sequences of different tiers are correlated together providing a concise view on one user request throughout the whole system. Diagnosing a performance (or functional) problem becomes easy as one can have a look at the precise interactions a selected user executed onto the system and the internal effects on the system.

inspectIT uses runtime bytecode modification to adapt classes during class loading and integrate small sensors to the classes to measure the application during runtime. Currently the following sensors are supported:

  • Method Timer sensor: Provides information on the number of calls to a method and the method duration.
  • SQL sensor: Provides in-depth information about all SQL queries being invoked, their number of calls and their duration. In addition bind values can be seen. Also provides the information which database (vendor, version, url) was invoked
  • Exception sensor: Provides in-depth information on exceptions being thrown in the system. This sensor can also provide additional information like the stacktrace of the exception.
  • HTTP sensor: Provides in-depth information on the HTTP information, like headers, parameters, etc. that were provided in the request

A sophisticated navigation feature allows to freely navigate through the given information to analyze a performance/functional problem. As an example, when an exception is thrown, the user can ask inspectIT to find all invocation sequences (e.g. concrete end-user requests) where a this exception is contained in the call tree. The user can then navigate the invocation and check which user had the problem and what specific usecase this user was performing. 

<more needed>

Why Here?: 

The community can profit from the first open source APM solution (to our knowledge). Every project can use inspectIT to monitor and diagnose their application even in high load scenarios, where common profilers would provide a too high overhead. We attended EclipseCon at Ludwigsburg in 2014 and had great discussions with people of Eclipse and people building Eclipse products, so we thought this is a great new home for inspectIT.

Also inspectIT is heavily focused itself on Eclipse technology. The inspectIT client that allows to analyze the collected data, is based on Eclipse RCP. Apart from that hee whole development team uses Eclipse to write code. 

People
Project Leads: 
Committers: 
Patrice Bouillet
Source Code
Initial Contribution: 

NovaTec Consulting GmbH is offering code from their closed-source, free-to-use tool inspectIT as initial contribution. NovaTec Consulting GmbH started building inspectIT in 2005 and continuously improved the solution. The code currently consists of over 1000 Java classes with over 200.000 lines of code. Some code developed using non-supported third-party libraries will be removed prior to the contribution