otel-profiling-agent icon indicating copy to clipboard operation
otel-profiling-agent copied to clipboard

Symbolization for Native Code

Open lingpeng0314 opened this issue 1 month ago • 5 comments

Hi team, i'm glad to see the OTel collector with profiling PR got merged. I want to know any plan to support the native code symbolization? According to the documentation, the symbolization for native code should be implemented in backend async due to reason like the strip of debuginfo in binary executables.

First question, golang symolization is already implemented in agent side(the collector above) right?

Second question, like Parca, it uses the opentelemetry ebpf profiler internally and at same time to upload the debuginfo binary if existing, which provides a way to symbolize the native code as much as possible and no need to upload one in most case. So any plan in our OTel collector to upload the debuginfo to backend also when needed?

lingpeng0314 avatar Nov 05 '25 10:11 lingpeng0314

We've previously discussed this in the Profiling SIG. The current priority is to get the profiling signal stabilized, without adding native symbolization. We will revisit in the future, but for now native symbolization is backend-specific and not specified in OTel. The reporter package contains this interface that downstream users could leverage to implement backend-specific uploads.

christos68k avatar Nov 05 '25 10:11 christos68k

@christos68k thanks for the explanation. SO the golang symbolization is implemented in agent already right? not in the backend?

lingpeng0314 avatar Nov 05 '25 10:11 lingpeng0314

@christos68k thanks for the explanation. SO the golang symbolization is implemented in agent already right? not in the backend?

Yes, we special-cased Go and treat it as an interpreter (on-target symbolization) as the agent can extract symbols from the Go binaries in the vast majority of cases.

christos68k avatar Nov 05 '25 10:11 christos68k

I'm sorry if this is slightly offtopic, but with how many things OpenTelemetry is, its hard to find this info:

Are you aware which, if any, of the backends support native code symbolization? So far:

  • I think Devfiler can do it
  • Pyroscope can't yet: https://github.com/grafana/pyroscope/issues/3715
  • Theres a fork of this repo for Datadog which uploads symbols: https://github.com/DataDog/dd-otel-host-profiler

It would be nice to know of some options, maybe even document them, until there is some backend-agnostic solution.

laundmo avatar Nov 09 '25 15:11 laundmo

I'm sorry if this is slightly offtopic, but with how many things OpenTelemetry is, its hard to find this info:

Are you aware which, if any, of the backends support native code symbolization? So far:

It would be nice to know of some options, maybe even document them, until there is some backend-agnostic solution.

Parca agent uses opentelemetry ebpf profiler internally and the parca server supports the symbolization.

lingpeng0314 avatar Nov 10 '25 11:11 lingpeng0314