diff --git a/docs/sources/configure-client/_index.md b/docs/sources/configure-client/_index.md index 026438a0ad..522557934f 100644 --- a/docs/sources/configure-client/_index.md +++ b/docs/sources/configure-client/_index.md @@ -88,7 +88,7 @@ To get started, choose one of the integrations below:
Grafana Alloy

Documentation
- Examples + Examples
Golang

@@ -103,7 +103,7 @@ To get started, choose one of the integrations below:
eBPF

Documentation
- Examples + Examples
Python

diff --git a/docs/sources/configure-client/grafana-alloy/java/_index.md b/docs/sources/configure-client/grafana-alloy/java/_index.md index cd762a3f1f..ec203d1600 100644 --- a/docs/sources/configure-client/grafana-alloy/java/_index.md +++ b/docs/sources/configure-client/grafana-alloy/java/_index.md @@ -110,7 +110,7 @@ pyroscope.write "endpoint" { ## Examples -For more robust examples, refer to the [Grafana Alloy and Agent Auto-instrumentation](https://github.com/grafana/pyroscope/tree/main/examples/grafana-agent-auto-instrumentation) examples in the Pyroscope repository. +For more robust examples, refer to the [Grafana Alloy and Agent Auto-instrumentation](https://github.com/grafana/pyroscope/tree/main/examples/grafana-alloy-auto-instrumentation) examples in the Pyroscope repository. ### Profiling local process @@ -155,7 +155,7 @@ pyroscope.write "example" { ### Profiling Docker containers -For a working example, refer to [Java profiling via auto-instrumentation example in Docker](https://github.com/grafana/pyroscope/tree/main/examples/grafana-agent-auto-instrumentation/java/docker). +For a working example, refer to [Java profiling via auto-instrumentation example in Docker](https://github.com/grafana/pyroscope/tree/main/examples/grafana-alloy-auto-instrumentation/java/docker). ```alloy discovery.docker "local_containers" { @@ -202,7 +202,7 @@ pyroscope.write "example" { ### Profiling Kubernetes pods -For a working example, refer to [Grafana Alloy Java profiling via auto-instrumentation with Kubernetes](https://github.com/grafana/pyroscope/tree/main/examples/grafana-agent-auto-instrumentation/java/kubernetes). +For a working example, refer to [Grafana Alloy Java profiling via auto-instrumentation with Kubernetes](https://github.com/grafana/pyroscope/tree/main/examples/grafana-alloy-auto-instrumentation/java/kubernetes). ```alloy discovery.kubernetes "local_pods" { @@ -283,7 +283,7 @@ pyroscope.write "example" { For more information: -* [Examples](https://github.com/grafana/pyroscope/tree/main/examples/grafana-agent-auto-instrumentation/java) +* [Examples](https://github.com/grafana/pyroscope/tree/main/examples/grafana-alloy-auto-instrumentation/java) - [Grafana Alloy](https://grafana.com/docs/alloy//) - [pyroscope.scrape](https://grafana.com/docs/alloy//reference/components/pyroscope/pyroscope.scrape/) diff --git a/docs/sources/configure-client/grafana-alloy/receive_profiles.md b/docs/sources/configure-client/grafana-alloy/receive_profiles.md index d084936352..65a011321f 100644 --- a/docs/sources/configure-client/grafana-alloy/receive_profiles.md +++ b/docs/sources/configure-client/grafana-alloy/receive_profiles.md @@ -64,6 +64,8 @@ Check your specific language SDK documentation for the exact configuration optio The examples in this section provide samples you can use as a starting point for your own configurations. +Explore the [example](https://github.com/grafana/pyroscope/tree/main/examples/language-sdk-instrumentation/golang-push/rideshare-alloy) in our GitHub repository to learn how to configure Grafana Alloy to receive profiles from a Golang application instrumented with Pyroscope. + ### Basic receiving setup This example shows a basic setup receiving profiles on port 9090 and forwarding them to a local Pyroscope instance: diff --git a/docs/sources/configure-client/language-sdks/_index.md b/docs/sources/configure-client/language-sdks/_index.md index 605c3a80ef..87968a825f 100644 --- a/docs/sources/configure-client/language-sdks/_index.md +++ b/docs/sources/configure-client/language-sdks/_index.md @@ -48,7 +48,7 @@ The following languages SDKs provide support for sending profiles from your appl
eBPF

Documentation
- Examples + Examples
Rust

diff --git a/docs/sources/configure-client/language-sdks/dotnet.md b/docs/sources/configure-client/language-sdks/dotnet.md index 8731fa3064..4b0dca83c4 100644 --- a/docs/sources/configure-client/language-sdks/dotnet.md +++ b/docs/sources/configure-client/language-sdks/dotnet.md @@ -45,13 +45,13 @@ The Pyroscope server can be a local server for development or a remote server fo 1. Obtain `Pyroscope.Profiler.Native.so` and `Pyroscope.Linux.ApiWrapper.x64.so` from the [latest tarball](https://github.com/pyroscope-io/pyroscope-dotnet/releases/): ```bash -curl -s -L https://github.com/grafana/pyroscope-dotnet/releases/download/v0.9.0-pyroscope/pyroscope.0.9.0-glibc-x86_64.tar.gz | tar xvz -C . +curl -s -L https://github.com/grafana/pyroscope-dotnet/releases/download/v0.9.2-pyroscope/pyroscope.0.9.2-glibc-x86_64.tar.gz | tar xvz -C . ``` Or copy them from the [latest docker image](https://hub.docker.com/r/pyroscope/pyroscope-dotnet/tags). We have `glibc` and `musl` versions: ```dockerfile -COPY --from=pyroscope/pyroscope-dotnet:0.9.0-glibc /Pyroscope.Profiler.Native.so ./Pyroscope.Profiler.Native.so -COPY --from=pyroscope/pyroscope-dotnet:0.9.0-glibc /Pyroscope.Linux.ApiWrapper.x64.so ./Pyroscope.Linux.ApiWrapper.x64.so +COPY --from=pyroscope/pyroscope-dotnet:0.9.2-glibc /Pyroscope.Profiler.Native.so ./Pyroscope.Profiler.Native.so +COPY --from=pyroscope/pyroscope-dotnet:0.9.2-glibc /Pyroscope.Linux.ApiWrapper.x64.so ./Pyroscope.Linux.ApiWrapper.x64.so ```` 2. Set the following required environment variables to enable profiler diff --git a/docs/sources/configure-client/language-sdks/go_push.md b/docs/sources/configure-client/language-sdks/go_push.md index cf77896d19..8d5b1553c2 100644 --- a/docs/sources/configure-client/language-sdks/go_push.md +++ b/docs/sources/configure-client/language-sdks/go_push.md @@ -85,6 +85,24 @@ func main() { } ``` +Alternatively, if you want more control over the profiling process, you can manually handle the profiler initialization and termination: + +```go + profiler, err := pyroscope.Start(pyroscope.Config{ + // omitted for brevity + }) + if err != nil { + // the only reason this would fail is if the configuration is not valid + log.Fatalf("failed to start Pyroscope: %v", err) + } + defer profiler.Stop() + + // your code goes here +} +``` + +This approach may be necessary if you need to ensure that the last profile is sent before the application exits. + ### Add profiling labels to your application You can add tags (labels) to the profiling data. These tags can be used to filter the data in the UI. There is a custom API that's in line with the go-native pprof API: diff --git a/docs/sources/configure-client/language-sdks/java.md b/docs/sources/configure-client/language-sdks/java.md index 15b68325ea..a055dc882f 100644 --- a/docs/sources/configure-client/language-sdks/java.md +++ b/docs/sources/configure-client/language-sdks/java.md @@ -51,12 +51,12 @@ First, add the Pyroscope dependency: io.pyroscope agent - 0.15.0 + 0.15.2 ``` ```gradle -implementation("io.pyroscope:agent:0.15.0") +implementation("io.pyroscope:agent:0.15.2") ``` {{< /code >}} diff --git a/docs/sources/configure-client/language-sdks/python.md b/docs/sources/configure-client/language-sdks/python.md index 3118e331e4..3088354907 100644 --- a/docs/sources/configure-client/language-sdks/python.md +++ b/docs/sources/configure-client/language-sdks/python.md @@ -98,5 +98,5 @@ If your Pyroscope server has multi-tenancy enabled, you'll need to configure a t ## Python profiling examples Check out the following resources to learn more about Python profiling: -- [Python examples](https://github.com/pyroscope-io/pyroscope/tree/main/examples/language-sdk-instrumentation/python) -- [Python demo](https://play.grafana.org/a/grafana-pyroscope-app/single?query=process_cpu%3Asamples%3Acount%3A%3Amilliseconds%7Bservice_name%3D%22pyroscope-rideshare-python%22%7D&from=now-1h&until=now) showing Python example with tags +- [Python examples](https://github.com/pyroscope-io/pyroscope/tree/main/examples/language-sdk-instrumentation/python) demonstrating how Django, Flask, and FastAPI apps can be profiled with Pyroscope. +- A [Python demo](https://play.grafana.org/a/grafana-pyroscope-app/profiles-explorer?searchText=&panelType=time-series&layout=grid&hideNoData=off&explorationType=flame-graph&var-serviceName=pyroscope-rideshare-python&var-profileMetricId=process_cpu:cpu:nanoseconds:cpu:nanoseconds&var-dataSource=grafanacloud-profiles) on play.grafana.org. diff --git a/docs/sources/configure-client/language-sdks/ruby.md b/docs/sources/configure-client/language-sdks/ruby.md index 625ef88d80..1e2ab953a5 100644 --- a/docs/sources/configure-client/language-sdks/ruby.md +++ b/docs/sources/configure-client/language-sdks/ruby.md @@ -105,5 +105,5 @@ If your Pyroscope server has multi-tenancy enabled, you'll need to configure a t ## Ruby profiling examples Check out the following resources to learn more about Ruby profiling: -- [Ruby examples](https://github.com/pyroscope-io/pyroscope/tree/main/examples/language-sdk-instrumentation/ruby) -- [Ruby Demo](https://play.grafana.org/a/grafana-pyroscope-app/single?query=process_cpu%3Asamples%3Acount%3A%3Amilliseconds%7Bservice_name%3D%22pyroscope-rideshare-ruby%22%7D&from=now-1h&until=now) showing Ruby example with tags +- [Ruby examples](https://github.com/pyroscope-io/pyroscope/tree/main/examples/language-sdk-instrumentation/ruby) demonstrating how Ruby applications, including Rails, can be profiled with Pyroscope. +- A [Ruby demo](https://play.grafana.org/a/grafana-pyroscope-app/profiles-explorer?searchText=&panelType=time-series&layout=grid&hideNoData=off&explorationType=flame-graph&var-serviceName=pyroscope-rideshare-ruby&var-profileMetricId=process_cpu:cpu:nanoseconds:cpu:nanoseconds&var-dataSource=grafanacloud-profiles) on play.grafana.org. diff --git a/docs/sources/configure-client/opentelemetry/ebpf-profiler.md b/docs/sources/configure-client/opentelemetry/ebpf-profiler.md index cc1d24513a..94606af2d6 100644 --- a/docs/sources/configure-client/opentelemetry/ebpf-profiler.md +++ b/docs/sources/configure-client/opentelemetry/ebpf-profiler.md @@ -47,6 +47,6 @@ The profile collection pipeline consists of: ## Get started -For detailed setup instructions and working examples, refer to the [examples repository](https://github.com/grafana/pyroscope/tree/main/examples/grafana-agent-auto-instrumentation/ebpf-otel). +For detailed setup instructions and working examples, refer to the [examples repository](https://github.com/grafana/pyroscope/tree/main/examples/grafana-alloy-auto-instrumentation/ebpf-otel). The examples demonstrate deployments for both Docker and Kubernetes environments. diff --git a/docs/sources/configure-client/trace-span-profiles/go-span-profiles.md b/docs/sources/configure-client/trace-span-profiles/go-span-profiles.md index fdf4dc2857..7ccd47814e 100644 --- a/docs/sources/configure-client/trace-span-profiles/go-span-profiles.md +++ b/docs/sources/configure-client/trace-span-profiles/go-span-profiles.md @@ -97,7 +97,7 @@ To learn how to set up Traces to profiles and view the span profiles, refer to [ ## Examples -Check out the [examples](https://github.com/grafana/pyroscope/tree/main/examples/tracing/tempo) directory for a complete demo application that shows tracing integration features. +Check out the [examples](https://github.com/grafana/pyroscope/tree/main/examples/tracing/golang-push) directory for a complete demo application that shows tracing integration features.