Supported Integrations
#
Existing integrationsSpy Name | Type | Linux | macOS | Windows | Docker | |
---|---|---|---|---|---|---|
eBPF | ebpfspy | embedded | โ | โ | ||
Go | n/a | standalone | โ | โ | โ | โ |
Java | javaspy | embedded | โ | โ | โ | |
Python | pyspy | embedded | โ | โ | โ | |
Ruby | rbspy | embedded | โ | โ | โ | |
NodeJS | nodespy | embedded | โ | โ | โ | โ |
Rust | pyroscope-rs | embedded | โ | โ | โ | |
PHP | phpspy | embedded | โ | โ | ||
.NET | dotnetspy | embedded | โ | โ | โ | โ |
#
ProfilersThere are two main categories of profilers, or spies
in pyroscope terms: embedded and standalone.
#
EmbeddedProfilers 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
#
StandaloneProfilers 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.