Mastering continuous observability with Blackfire: a deep dive into the continuous profiler dashboard

By Thomas di Luccio, on May 08, 2024

Observability is all about being able to see what’s normally hidden and break the black boxes to witness our application behaving in real time. Therefore, it’s about expanding our horizons to make informed decisions and continuously improving our apps and user experience.

Blackfire already has an impressive track record in deterministic observability for PHP and Python. By introducing its continuous profiler for PHP, Python, Node.js, and Go, we expanded our customers’ observability horizons further while paving the way for polyglot and decoupled applications.

This blog post takes you through a deep dive into Blackfire’s continuous profiler dashboard, explaining its core components, flame graphs, and table-view view, to help you get started with this new addition to our unique continuous observability solution.

Exploring the continuous profiling dashboard

The continuous profiling dashboard is a powerful tool designed to give developers a comprehensive overview of their application’s performance based on continuously collected data from all active threads.

Through detailed visual representations and actionable insights, you can pinpoint inefficiencies, understand resource utilization, and optimize your code effectively, by basing your investigation on observability data collected intermittently for the entirety of your application.

Flame graphs: visualizing call stacks

The flame graph is a hierarchical visualization of the contribution of the different function calls to selected dimensions. It is effective in identifying performance issues and understanding software’s behavior during execution.

Rectangles in a flame graph are called frames. Each frame represents a function, arranged vertically (y-axis) to show the sequence of method calls. The width of a frame relates to its resource usage. Horizontally (x-axis), methods are sorted by name, not the order in which they run.

Understanding colors

The continuous profiling dashboard uses different colors to show each resource dimension, keeping the same colors across various environments. The stronger the color of a frame, the more resources it’s using. This helps show which application parts might need work to run better.

It also uses a special color scheme that contrasts well with the regular parts of the dashboard, making sure everyone, including those with color vision deficiency, can use this feature easily.

Table view: detailed metrics at a glance

The table view lists all the frames, organized by how many resources they use, for a chosen aspect and period. By default, the table ranks them based on their resource use (exclusive), which means the frame’s total value after subtracting the total values of its immediate children.

Upgrading your observability strategy

In other installments, we discussed building a bespoke observability strategy. It’s about smoothly blending the different components of Blackfire into your day-to-day activities and development and deployment workflows.

The continuous profiler allows you to upgrade your observability strategy with this real-time holistic flow of information. No stone is left unturned anymore. At the same time, the continuous profiling dashboard could seem misleading to some users accustomed to Blackfire’s deterministic profiler.

At first glance, the flame graph could look like a profile’s timeline view. While the former shows the spans of all the requests happening on all threads for a period of time, the latter represents the execution of a single script from beginning to end.

With great power comes great observability

It might take some time to become accustomed to the inherent natures of our solution’s deterministic and probabilistic parts. We are here to help you while you level up and master those new bionic glasses and performance superpowers.

In conclusion, Blackfire’s continuous profiler dashboard provides developers with an unparalleled lens through which to view their application’s performance. By effectively utilizing the flame graph and table view, you can uncover inefficiencies, streamline performance, and enhance your application’s user experience. Remember, continuous observability isn’t just about finding problems—it’s about improving excellence.

To better observability and beyond!

Thomas di Luccio

Thomas is a Developer Relations Engineer at Platform.sh for Blackfire.io. He likes nothing more than understanding the users' needs and helping them find practical and empowering solutions. He’ll support you as a day-to-day user.