Presentation

Deep Telemetry with eBPF and Rust

By Nick Schuch5th Feburary 2025

Overview

Performance profiling is the process of reviewing and debugging applications for bottlenecks and inefficiencies to identify areas for improvement.

To profile, we utilise tools that provide us with deep telemetry data to point to these areas of improvement. The golden standard for these tools is paid subscriptions e.g. New Relic and Backfire.io. On the open source side, popular tools such as Xdebug and SPX are great but lack the features needed for profiling in production.

Open source options are outclassed by paid subscription-based services because of the effort and deep technical knowledge required to implement them. But there is hope...

eBPF (Extended Berkeley Packet Filter) lets programmers load and execute lightweight programs within the Linux kernel. This is a big deal because it enables us to easily observe and instrument our applications in ways that were incredibly difficult to do in the past.

This talk outlines the journey we have undertaken to build an open-source telemetry system on top of eBPF, Rust, and Go for instrumenting the PHP applications which run on our hosting platform, Skpr.

In this video I cover the following topics:

  • The current state of monitoring and tracing
  • What is eBPF?
  • How to capture tracing data with eBPF
  • What is PHP's new Observer API and why didn't we use it?
  • How to write a PECL extension with Rust
  • The decisions we made when designing our tracing implementation

Watch the video

What's next

We're thrilled to bring this functionality to the Skpr hosting platform, empowering developers to diagnose and debug application performance issues with ease.

Stay tuned for updates and exciting new feature announcements!

Tags

opentelemetry
hosting

Getting Started

Interested in a demo?

🎉 Awesome!

Please check your inbox for a confirmation email. It might take a minute or so.

🤔 Whoops!

Something went wrong. Check that you have entered a valid email and try submitting the form again.

We'll be in touch shortly.