odigos-io / opentelemetry-go-instrumentation

OpenTelemetry auto-instrumentation for Go applications
Apache License 2.0
289 stars 44 forks source link

Compatibility with lower version kernels. #52

Open guolifu opened 1 year ago

guolifu commented 1 year ago

Feature request

I guess that "requires >= v5.2" may prompt me with the kernel version, and after upgrading the kernel to >=5.2, it was successfully confirmed to be true. Many instances of golang processes are still running in lower version kernels.So do we have any idea or plan to make it compatible with lower version kernels?

[root@centos7test ~]# OTEL_TARGET_EXE=/root/http ./kv-go-instrumentation -stdout
{"level":"info","ts":1675775385.3834639,"caller":"cli/main.go:27","msg":"starting Go OpenTelemetry Agent ..."}
{"level":"info","ts":1675775387.3908978,"caller":"process/discover.go:46","msg":"found process","pid":4644}
{"level":"info","ts":1675775387.3916051,"caller":"process/analyze.go:75","msg":"found addr of keyval map","addr":139854386225152}
{"level":"info","ts":1675775387.398304,"caller":"process/analyze.go:138","msg":"found relevant function for instrumentation","function":"net/http.(*ServeMux).ServeHTTP","returns":2}
{"level":"info","ts":1675775387.3984025,"caller":"cli/main.go:70","msg":"target process analysis completed","pid":4644,"go_version":"1.13.10","dependencies":{},"total_functions_found":1}
{"level":"info","ts":1675775387.3984728,"caller":"cli/main.go:76","msg":"invoking instrumentors"}
{"level":"info","ts":1675775387.4092982,"logger":"allocator","caller":"allocator/allocator_linux.go:19","msg":"Loading allocator","start_addr":139854386225152,"end_addr":139854398808064}
{"level":"info","ts":1675775387.4094503,"caller":"instrumentors/runner.go:68","msg":"loading instrumentor","name":"net/http"}
{"level":"info","ts":1675775387.414667,"caller":"inject/injector.go:67","msg":"Injecting variables","vars":{"ctx_ptr_pos":232,"is_registers_abi":false,"method_ptr_pos":0,"path_ptr_pos":56,"url_ptr_pos":16}}
{"level":"error","ts":1675775387.4149885,"caller":"instrumentors/runner.go:71","msg":"error while loading instrumentors, cleaning up","name":"net/http","error":"field UprobeServerMuxServeHTTP: program uprobe_ServerMux_ServeHTTP: map .rodata: map create: read- and write-only maps not supported (requires >= v5.2)","stacktrace":"github.com/keyval-dev/opentelemetry-go-instrumentation/pkg/instrumentors.(*instrumentorsManager).load\n\t/opt/github/opentelemetry-go-instrumentation/pkg/instrumentors/runner.go:71\ngithub.com/keyval-dev/opentelemetry-go-instrumentation/pkg/instrumentors.(*instrumentorsManager).Run\n\t/opt/github/opentelemetry-go-instrumentation/pkg/instrumentors/runner.go:19\nmain.main\n\t/opt/github/opentelemetry-go-instrumentation/cli/main.go:77\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:250"}
{"level":"info","ts":1675775387.4150653,"caller":"server/probe.go:179","msg":"closing net/http instrumentor"}
{"level":"error","ts":1675775387.4150894,"caller":"cli/main.go:79","msg":"error while running instrumentors","error":"field UprobeServerMuxServeHTTP: program uprobe_ServerMux_ServeHTTP: map .rodata: map create: read- and write-only maps not supported (requires >= v5.2)","stacktrace":"main.main\n\t/opt/github/opentelemetry-go-instrumentation/cli/main.go:79\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:250"}