Every developer knows Byte Code Instrumentation (BCI) is useful. It automates how you instrument your code, and let’s you see exactly how data is being transferred and manipulated within your application. The level of detail is essential to writing and debugging good code.

So what is the difference?

The names may give you a hint: Insight is the original tool made for developers, while Insight Operations is part of what it evolved into being a production support tool. Developers get Insight with Spring Tool Suite (STS) by clicking a simple checkbox (pictured left), and operations teams can download Insight Operations as a plugin to work with vFabric tc Server. We also support JBOSS, Weblogic, and Tomcat.

What Spring Insight Developer Edition Does for Developers

Spring Insight uses AspectJ to intercept operations, organizes them visually, and provides underlying information on each operation. Let’s say you are a developer working on some new code behind a submit button. When you go to test the submit button, Spring Insight captures a trace containing all the operations behind your test. You can see operations like what web requests were made, what objects fired, how much time a REST call took to return from a web service, what JDBC/SQL query was made, how long the web page response took to render, and more. It can also work on background jobs and be combined with stress testing to determine why things are slow.

As a developer, you get an organized picture of all interactions from a tool that is simple to install, requires no code modifications, has a light memory footprint, and is extensible through plug-ins for services like Cassandra, GemFire, Hadoop, Hibernate,RabbitMQ, Redis, and more. To see the full list of plug-ins, go to our open-sourced plug-in repositoryat GitHub, and if what you are looking for isn’t there, it is open for you to write your own plug-ins (remember to please share your plugins – we’d like to check them for security and put them up on the Cloud Application Management Marketplace for others to use!). Spring Insight runs on a single tc Server runtime instance without additional database or instrumentation to set up.

Once it is set up, you can browse to http://localhost:8080/insight and see how the application behaves for specific requests. In this example, we can see a trace for GET/travel/hotels/search took 29ms. Within this trace, we can see all the steps leading up the SQL query and how long each step took. You can drill down to a specific request and investigate how it behaves throughout its lifecycle. Insight extracts all the data you need such as arguments being passed into methods and even SQL statements. This fine grained data from the Trace Details panel (in the screenshot below) helps you find root cause performance issues.

Managing DevOps with SpringInsight Operations

Spring Insight Operations is tuned for production environments and deployed over a cluster of tc Server runtime instances. The two apps have similar dashboards and information, but Spring Insight Operations consists of a central dashboard, analyzers, and multiple agents on the monitored application servers and allows you to see performance by the server or cluster in addition to app traces. Agent install is easy. All you need to do is download the agent installer from the Dashboard and run it on the target machine. Everything else happens automatically so you may even deploy to multiple targets via a script.

As shown in prior screenshot, Insight presents valuable information which works great for developers working on isolated requests. But, pinpointing a specific request that is of interest in a pile of thousands of requests can be difficult. This is especially true when Insight is being used of performance testing or in production environment with multiple servers and instances. In these scenarios, the Application Health Trend graph and application health indicators come in handy. As shown in the screenshot below, you can browse servers, applications, instances, and end-points to see a color-coded health indicator with vitals, health trends, and properties.

In the screenshot below, we have found an application with a problem. The details tell us there’s something wrong with the EditOwnerForm#setupForm End Point. End Points are entry points to the application and could be http requests made to the application, JMS messages, etc. Response time for this end-point appears to be high, over 400ms. We can now further drill into a specific request and see what caused the slow response time. Production operations and development teams are now looking at the exact same information.

About the Author: Eran Dvir leads the Spring Insight team. He has over 14 years in various R&D management positions in a wide range of organizations. Eran joined VMware in 2010. Prior to leading the Insight team Eran was responsible for innovations at the Herzliya, Israel office. Eran received his education from the Bar-Ilan University, where he obtained his B.Sc. in Computer Science and Biology.