OpenTracing is a popular way for developers to gather data about response times of their microservices and distributed processing for production monitoring. The OpenTracing project is under the umbrella of Cloud Native Computing Foundation (CNCF), the organization managing many of the popular cloud native open source technologies.
Introduction to Application Monitoring and OpenTracing
OpenTracing is an open and vendor neutral API for tracing which enables users to avoid vendor lock-in when collecting data for analysis to understand distributed application performance. It also enables developers of company-unique applications to gather application specific performance data. Furthermore framework developers are able to provide tracing functionality in a standard fashion to enable better insights into framework behavior. OpenTracing based technologies, like Jaeger, is used by many web-scale companies like Uber, Apple, and Yelp to get deeper visibility into their highly distributed and dynamic applications.
Collecting Application Traces with OpenTracin
Collecting OpenTracing traces with the provided API is entirely a manual process. The reason developers may choose an API based approach is to have complete control of what is traced to improve the precision of data and add context to the data. OpenTracing specific code must be added to the microservice’s code base to collect traces to form a span. Conversely, Instana AutoTrace™ is able to collect tracing data automatically for common programming languages, frameworks and (database) connectors. Instana seamleassly correlates automatic tracing data from one service with spans provided by the manual OpenTracing approach from other services.
OpenTracing performance monitoring centers around metrics relevant to its traces in within the environment. Instana’s OpenTracing integration natively integrates OpenTracing provided traces with information collected by Instana AutoTrace™.
Instana’s OpenTracing Integration
Instana is data source agnostic. It will automatically process request timing spans from both automatic and manual instrumented code.
Instana’s OpenTracing implementations are open source and hosted on GitHub:
- Go OpenTracing (github)
- Java OpenTracing (github)
- Node.js OpenTracing (github)
- Python OpenTracing (github)
- Ruby OpenTracing (github)
- Crystal OpenTracing (github)
- PHP OpenTracing (github)
Instana collects OpenTracing data in realtime. Traces are named using our service mapper to create a ‘Service’ under management. Naming is automatic, but can be adjusted to fit the users requirements. Each generated trace is collected, grouped and analysed within 3 seconds of its ingestion. For each configured service, Instana automatically creates a dashboard and tracks KPIs (throughput, latency and error rate) to monitor the quality of the named Services. Using Instana’s AI capabilities, any anomalies are detected and Incidents are generated.No need to build custom rules to manage performance, Instana does this automatically.