Parca + OpenTelemetry = Bright Future

The Parca project is embracing OpenTelemetry

August 13, 2024

Today, the Polar Signals and Parca team is excited to announce a significant evolution in our journey to provide best-in-class profiling and observability solutions. The Parca maintainers team has voted that Parca-Agent, our beloved profiling tool, is merging its development with the OpenTelemetry-eBPF-Profiler. This move is aimed at consolidating our efforts, fostering community collaboration, and accelerating innovation for Profiling in the observability ecosystem.

We're also releasing Parca-Agent v0.32.0 today, which is the first release that embraces the OpenTelemetry-eBPF-Profiler.

tl;dr We are joining the OpenTelemetry-eBPF-Profiler development, basing Parca-Agent on it, and continuing to offer the best-in-class integrated experience between the Parca server and Parca-Agent. All of this is a no-op for existing Parca and Parca Agent users.

Why This Change?

Unifying the Vision

Until now, Parca-Agent was the only Apache2 licensed eBPF-based profiler, and with the OpenTelemetry-eBPF-Profiler now sharing that path, we're excited to combine efforts!

OpenTelemetry has become the de facto standard for observability, providing a comprehensive framework for metrics, traces, and logs. By aligning Parca-Agent with the OpenTelemetry-eBPF-Profiler, we unify our vision with a broader community effort. This integration ensures that our users benefit from a standardized, well-supported, and widely adopted framework.

Parca-Agent and the OpenTelemetry-eBPF-Profiler share the same vision of zero-instrumentation profiling for any language, as such, we have independently come up with very similar solutions, and we have written about many of them. For example:

Accelerating Innovation

Combining the strengths and engineers of Parca-Agent with the OpenTelemetry-eBPF-Profiler allows us as a whole to focus on delivering high-impact features faster, instead of both projects independently reinventing the wheel in different GitHub repositories.

What’s Next?

Distributed Tracing Correlation

One of the most anticipated features we are bringing to the OpenTelemetry-eBPF-Profiler is distributed tracing correlation for Go (and more!). This capability will enable seamless integration of profiling data with distributed traces, providing end-to-end visibility into application performance. Users will be able to correlate performance bottlenecks with specific traces, enhancing their ability to diagnose and resolve issues quickly.

We've already expanded the distributed tracing integration to be able to attach any label combination to a stacktrace in Go, and are working on support for other languages (keep an eye out for the blog post when this ships)!

LuaJIT Support

LuaJIT has been a long-requested language by our users since it is a popular extension language for nginx, and therefore much of the traffic served on the web goes through LuaJIT at some point in its lifetime. We've been working on LuaJIT support for the last few months, and are excited to bring it to the OpenTelemetry-eBPF-Profiler as well.

Richer Metadata

Profiling is not just about collecting data; it’s about understanding it. By enhancing the profiler with richer metadata, we aim to provide deeper insights into application behavior. Users will gain access to more contextual information, making it easier to interpret profiling data and derive actionable insights.

Metadata that the Parca Agent supports today that we intend to add support for in the OpenTelemetry-eBPF-Profiler:

  1. Richer Kubernetes, containerd, cgroups, lxc/lxd metadata (already shipped)
  2. Thread ID (in multithreaded applications it's important to understand if threads are evenly utilized)
  3. CPU ID (it can be important to understand how the Linux scheduler schedules work on actual CPUs)

Community Collaboration

This merger is also a call to action for the community. We invite developers, contributors, and users to join us in shaping the future of observability. By collaborating within the OpenTelemetry ecosystem, we can collectively build a robust, feature-rich profiling solution that meets the needs of diverse environments and use cases.

The Transition For Existing Parca(-Agent) Users

Best of all, for existing Parca-Agent users nothing changes, the same binaries, containers, Kubernetes manifests, helm charts, etc. will all continue to be maintained as today. It is even

binary compatible, all previous flags stay the same (some new ones have been added).

The Parca project as a whole will continue to deliver a full end-to-end continuous profiling experience. This means Parca-Agent will continue to exist as an extension of the OpenTelemetry-eBPF-Profiler, that adds:

  1. Handling of uploading debuginfo. (This may eventually be solved as part of the OpenTelemetry Profiling working group, but at the time of writing, there is no specification in sight and approaches vary widely)
  2. A more optimized and feature-rich wire protocol that is Parca-specific, that uses a lot less network bandwidth than a generalized protocol. It also allows event-style profiling, where each stack has a timestamp and a unique set of labels attached to it (eg. to build Flame Charts not just Flame Graphs, swimlanes for thread ID/CPU ID, etc.).
  3. A larger amount and more specialized metadata that both suit the Parca query language better and don't require running an OpenTelemetry Collector alongside it.

Grab it while it's hot!

Parca-Agent "rebased" on the OpenTelemetry-eBPF-Profiler is available as the v0.32.0 release of Parca-Agent. Please try it out and give us your feedback on Discord or GitHub!

Conclusion

The decision to merge Parca-Agent with the OpenTelemetry-eBPF-Profiler marks a significant milestone in our journey. We are confident that this move will lead to a more unified, powerful, and innovative profiling solution, community, and ecosystem. While the era of Parca-Agent exactly as we know it may be coming to an end, a new one is beginning!

We thank our community for their unwavering support and enthusiasm. Together, we are building the future of observability.

Stay tuned for more updates, and join us in this exciting new chapter. Parca-Agent works with any Parca-compatible backend, so try it with a free 14-day trial of Polar Signals Cloud!

Discuss:
Sign up for the latest Polar Signals news