Performance observability is necessary for production applications, and we at Instana believe in giving you visibility into whatever application stack you are running. Our fully automatic, zero-configuration tracing and metric gathering allows customers to deploy us into large heterogeneous environments and immediately see what is going on.
But manual tracing also has valuable use cases. For example, if the developer wants specific operational data collected for each transaction through the code they might choose to manually implement this using open-source tracers.
Since both manual and automatic have valuable use cases, we wanted to make it super easy to leverage any manual tracing based on Jaeger, an open source implementation of OpenTracing developed at Uber, or Zipkin, which was originally developed at Twitter, and turn that into operational information and feedback to the devops organization.
For both frameworks, developers typically add tracing instructions to the code at development time. Both are inspired by Google Dapper and while Zipkin has its own API for adding tracing to an application, Jaeger utilizes OpenTracing. To then collect the trace information in production, organisations need to setup and maintain additional infrastructure for collection and processing of these traces. Additionally, to get performance information from those collected traces, rules and dashboards must be constructed by hand and maintained over time as the services evolve. These are non-trivial exercises.
Many popular open source libraries come with pre-built Zipkin or OpenTracing instrumentation, which can make tracing a complex application easier.
To avoid the maintenance of additional tracing infrastructure and provide a comprehensive view on all monitoring data, we are happy to announce our Jaeger and Zipkin integrations today!
With the release of Instana’s Jaeger Tracing integration, you can have all Jaeger traced applications send their data to Instana instead of the Jaeger backend, and enjoy the informative visualizations and automated alerting, as well as the single pane of glass experience in Instana.
It’s very easy to migrate any application from Jaeger to Instana. Let’s look at the Hot R.O.D. sample application distributed with jaeger to demonstrate the effort needed.
If you follow the instructions on their github page, you will get traces into the Jaeger UI, which looks like this:
Now, to send the data to Instana instead (on-prem or saas), just point it at any running Instana agent. The tracing data will now automatically flow to the Instana backend via the agent which will take care of compression, transmission and authentication for you:
docker run \ --rm \ -p:8080-8083:8080-8083 \ jaegertracing/example-hotrod:1.6 \ all \ --jaeger-agent.host-port=http://instana-agent:42699/com.instana.plugin.jaeger.trace
Without any additional changes or configuration, Instana will automatically analyze and display the Jaeger tracing data like this:
Features like Instana’s Service and Endpoint grouping, as well as its powerful Trace and Call Analytics immediately and automatically work in the same way that any trace discovered and collected by Instana Auto-Trace works.
With Instana’s Zipkin Integration, you can configure your Zipkin compatible tracers to send the data to Instana instead of the Zipkin Collector to get them integrated into the Instana monitoring experience.
The following example is the Zipkin Spring WebMVC example using Brave, which can be found on github:
When sending to Zipkin, the traces look like this:
Simply changing the reporting host to the Instana Agent (http://instana-agent:42699/api/v2/spans) is enough to record them in Instana.
And all calls are automatically aggregated on our service Dashboard
By sending your OpenTracing, Jaeger, or Zipkin generated data to Instana instead of any other backend you will reap the following benefits (to name a few):
- Correlation and dependency mapping between traces, services, and infrastructure – a key enabler of automatic root cause analysis
- Machine learning with automatic anomaly detection – to identify issues as they occur without manually setting any thresholds
- Automatic service endpoint detection and analysis – service endpoints are automatically analyzed to show and alert on poor performance and errors
- Trace and call analysis functionality – easily analyze entire dataset to identify optimization opportunities.
- Backend storage and processing,fully managed by Instana – no need to waste time deploying, configuring, and managing the backend monitoring system
We expect as the OpenTracing community evolves and matures there will be a number of applications, libraries, and plugins developed which interact natively with the Jaeger and Zipkin compatible clients. This will enable our customers to leverage these predefined traces and spans with no extra effort required.
At Instana we support and embrace open-source initiatives but we also realize how difficult these solutions are to build, configure, manage, and make sense of the data after it’s been collected. If you’ve already started down the path of using open-source tracing tools and you’re looking for a way to easily turn the tracing data into actionable performance information, you now have a great option by using Instana.
If you’re exploring the possibility of using open-source tracing tools for your distributed tracing needs, then I suggest you read the latest research by Bernd Harzog which exposes the true cost of using “free” open-source tracing software.