Skip to main content

Supported Integrations

Existing integrations#

Spy NameTypeLinuxmacOSWindowsDocker
eBPFebpfspyembeddedโœ…โœ…
Gon/astandaloneโœ…โœ…โœ…โœ…
Javajavaspyembeddedโœ…โœ…โœ…
Pythonpyspyembeddedโœ…โœ…โœ…
Rubyrbspyembeddedโœ…โœ…โœ…
NodeJSnodespyembeddedโœ…โœ…โœ…โœ…
Rustpyroscope-rsembeddedโœ…โœ…โœ…
PHPphpspyembeddedโœ…โœ…
.NETdotnetspyembeddedโœ…โœ…โœ…โœ…

Profilers#

There are two main categories of profilers, or spies in pyroscope terms: embedded and standalone.

Embedded#

Profilers that are bundled with Pyroscope Agent. Most of the profilers are of this kind. For example, if you want to profile Python, Ruby, PHP or .NET application, or the whole system with eBPF spy, you will need to run and configure Pyroscope Agent.

Typically, to start profiling your application, you need to wrap your application with pyroscope exec:

export PYROSCOPE_SERVER_ADDRESS=http://pyroscope:4040export PYROSCOPE_APPLICATION_NAME=my.ruby.apppyroscope exec rails server

Standalone#

Profilers that are not part of Pyroscope Agent and communicate to Pyroscope Server directly. Those may be either run as independent agents, or instrumented into the source code of the target application.

In particular, spy for Go should be explicitly imported and initialized in the application runtime.

package main
import "github.com/pyroscope-io/pyroscope/pkg/agent/profiler"
func main() {  profiler.Start(profiler.Config{    ApplicationName: "my.app",    ServerAddress:   "http://pyroscope:4040",  })
  // your code goes here}

If you want to contribute, please check out Creating New Integrations page.