Symbolization for Native Code
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?
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 thanks for the explanation. SO the golang symbolization is implemented in agent already right? not in the backend?
@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.
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.
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: Native profile symbolization in the backend when using OTel ebpf-profiler grafana/pyroscope#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.
Parca agent uses opentelemetry ebpf profiler internally and the parca server supports the symbolization.