Analyze Every Trace, Every Call, Every Service

DZone 's Guide to

Analyze Every Trace, Every Call, Every Service

Learn how to make troubleshooting and optimizing application performance much easier for microservices.

· Microservices Zone ·
Free Resource

If you're involved in troubleshooting or optimizing application performance, your life just got much easier with Instana's newly released Analyze capabilities. And the best part... you don't have to pay any extra fees to use our analytics capabilities, so you can benefit from them immediately if you are already an Instana customer.

Troubleshooting and Optimizing All the Microservices

In our last significant release, we introduced Application Perspectives, the ability to create dynamic application definitions that continuously update as you release new software and scale your environment. Along with this functionality, we delivered a set of curated dashboards that are used to quickly identify any requests that are slow or throwing errors.

In this release, you have two primary ways of getting to the Analyze screens.

  1. You can drill down from an Application Perspectives dashboard to Analyze traces or calls.
    Benefit: The Analyze screen is already pre-filtered using the context of the Application Perspective, Service, Service Endpoint, Trace, Call, Error Message, Database Call, etc.
  2. You can select the top level Analyze menu item to begin your analysis with the complete dataset contained within Instana.
    Benefit: This is the perfect place to search for optimization opportunities without being limited to any given portion of the data set.

What Are Traces and Calls?

You need to understand the concept of traces and calls in order to take full advantage of the data within Instana and solve difficult performance problems.

Quoting the Instana documentation... "A trace is the sequence of synchronous and asynchronous calls between service endpoints. Services talk to each other and deliver a result for a user request. Transforming data in a data flow can involve many services."

"A call describes an activity within a monitored process, typically a request between two services. A trace is composed of one or more calls. A call is composed of either one or two spans:

  • entry span: For example an HTTP request from an uninstrumented process to an instrumented process.
  • exit span: For example a database call from an instrumented process to a database (databases are not instrumented).
  • exit + entry span pair: For example an HTTP request from an instrumented process to another instrumented process. There will be an exit span for the client process and an entry span for the process serving the response.
  • intermediate span: For example custom spans added via the SDK, instrumented in-process caching or instrumented view technologies."

Troubleshooting Performance Problems — From Application Perspective to Analyze

Application Perspectives offers a set of curated dashboards that make it easy for anyone to identify problematic services, endpoints, traces, or calls. When you've identified a problem you can immediately jump to Analyze to explore the traces and calls in the exact context you drilled down from. The video clip below shows an example of this type of workflow.

Figure 1: In-context drill down from Application Perspectives to Analyze.

Application and Service Performance Optimization via Analyze

SREs, developers, and DevOps are all interested in finding opportunities to optimize the services they write or support. Historically, the hard part has been identifying opportunities to make improvements in an easy and focused manner. Most monitoring tools have so much data contained within that it's hard to filter out the noise to find the interesting signal contained within.

If you're responsible for identifying opportunities for performance optimization, meet your new best friend.

Figure 2: Extensive filtering capabilities enable deep analysis of a complete dataset.

As you can see above, exploring the performance of every application, service, endpoint, request type, etc. is as simple as finding a place to stay on Airbnb. You'll find an extensive selection of filters located above the Results section of the Analyze screen. From there you can filter by Application, Service, Endpoint, Type, Technology, Latency, Erroneous, or More - which gives you access to every tag available within Instana.

Figure 3: Charting capability within Analyze for both traces and calls.

This powerful set of filters allows you to identify traces or calls in whatever manner you need to accomplish your goal. For example, I can set my filters to:

call.type = Database
call.latency > 1000 ms
Grouped By = call.database.statement

The result is that I see a grouped list of every unique database query that takes longer than 1000ms to execute across all of my services. This list is linked to the underlying data so you can click each query to drill down and explore each statement in the context of the associated trace.

Figure 4: Filters applied within Analyze to find database queries that require optimization.

If I'm interested in finding slow HTTP requests I can set my filters for the following:

call.type = Http 
call.latency > 5000 
Grouped By = trace.endpoint.name 

Figure 5: Filters applied within Analyze to find Http calls that require optimization.

The possibilities are endless. With Instana's new Analyze capability for traces and calls, you have infinite flexibility to explore the data within Instana and can easily identify optimization opportunities in the applications and services that you care about. Try it in your own environment or start your free trial today.

apm, instana, microservices, monitoring, performance

Published at DZone with permission of Jim Hirschauer , DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}