We recently blogged
about the value of OpenCensus
and how Google uses Census internally
. Today, we want to share more about our long-term vision for OpenCensus.
The goal of OpenCensus
is to be a ubiquitous observability framework that allows developers to automatically collect, aggregate, and export traces, metrics, and other telemetry from their applications. We plan on getting there by building easy-to-use libraries and automatically integrate with as many technologies and frameworks as possible.
Our roadmap has two themes: increased language, framework, and platform coverage, and the addition of more powerful features.Today, we’ll discuss the first theme of the increased coverage.
More Language Coverage
In January, we released OpenCensus for Java, Go, and C++ as well as tracing support for Python, PHP, and Ruby. We’re about to start development of OpenCensus for Node.js and .NET, and you’ll see activity
on these repositories ramp up in the coming quarter.
Integration with more Frameworks, Platforms, and Clients
We want to provide a great out-of-the-box experience, so we need to automatically capture traces and metrics with as little developer effort as possible. To achieve this, we’ll be creating integrations for popular web frameworks, RPC frameworks, and storage clients. This will enable automatic context propagation, span creation, and trace annotations, without requiring extra work on behalf of developers.
As a basic example, OpenCensus already integrates with Go’s default gRPC
and HTTP handlers to generate spans (with relevant annotations) and to pass context.
More complex integrations will provide more information to developers. Here’s an example of a trace captured with our upcoming MongoDB instrumentation, shown on Stackdriver Trace and AWS X-Ray:
|A MongoDB trace shown in Stackdriver Trace|
|The same trace captured in X-Ray|
OpenCensus will soon have out-of-the-box tracing and metrics collection in Istio
. We’re currently working through our initial designs and implementation for integrations with the Envoy
Sidecar and Istio Mixer service. Our goal is to provide Istio users with a great out of box tracing and metrics collection experience.
We have two primary use cases in mind for Kubernetes deployments: providing cluster-wide visibility via z-pages
, and better labeling of traces, stats, and metrics. Cluster-wide
will allow developers to view telemetry in real time across an entire Kubernetes deployment, independently of their back-end. This is incredibly useful when debugging immediate high-impact issues like service outages.
Client Application Support
OpenCensus currently provides observability into back-end services, however this doesn’t tell the whole story about end-to-end application performance. Throughout 2018, we plan to add instrumentation for client and front-end web applications, so developers can get traces that begin from customers’ devices and reflect actual perceived latency, and metrics captured from client code.
Next week we’ll discuss some of the new features that we’re looking to bring to OpenCensus, including notable enhancements to the trace sampling logic.
None of this is possible without the support and participation from the community. Please check out our repository
and start contributing; we welcome contributions of any size -- however you want to take part. You can join other developers and users on the OpenCensus Gitter channel
. We’d love to hear from you!By Pritam Shah and Morgan McLean, Census team