odigos-io / odigos

Distributed tracing without code changes. 🚀 Instantly monitor any application using OpenTelemetry and eBPF
https://odigos.io
Apache License 2.0
3.25k stars 200 forks source link

No status code for a go app #782

Closed dirtyren closed 9 months ago

dirtyren commented 1 year ago

Describe the bug I have installed Odigos v1.0.1 o a GKE Cluster and instrumented a Go app with it and although I can see the tracings, none of them have the status code on signoz. The app handles internally all the status code in order for us to check our own SLOs, so I find it strange signoz is no showing them.

Screenshots This a the go app sending data to victoria metricas

image

This is the same app talking to Pub/Sub image

Just to add another Go app instrumented by signoz that is showing the status code.

image

Desktop (please complete the following information):

RonFed commented 1 year ago

Are the missing status codes occurring for HTTP server or client application?

dirtyren commented 1 year ago

Hey @RonFed , client application. In this case is a Go app querying data from via victoria metrics through a Google LB. Our API behind a nginx-ingress is returning status code 200 as it should and Odigos is showing it right. Tks.

RonFed commented 12 months ago

@dirtyren Thanks. Once https://github.com/open-telemetry/opentelemetry-go-instrumentation/pull/527 is merged, we'll update Odigos and this should be fixed

RonFed commented 11 months ago

@dirtyren with the latest v1.0.10 release, this should be resolved.

dirtyren commented 11 months ago

@RonFed I noticed that open-telemetry merged the code and I just updated odigos to the latest version 1.0.10 and I am still not getting the status code for the tracings. Just to let you know. Tks.

RonFed commented 11 months ago

@dirtyren Which Go version do you use ? There suppose to be another release to the OpenTelemetry go instrumentation supporting the newest Go versions (v1.20.12 v1.21.4 v1.21.5)

dirtyren commented 11 months ago

@RonFed we use Go 1.20 on the deploy I am instrumenting with Odigos.

Just adding a screenshot to show you how I am seeing the tracings on Signoz

image

dirtyren commented 11 months ago

@RonFed I also noticed this happening after upgrading to 1.0.10. New instrumented applications using the odigos-ui do not have the same annotations that previous instrumented apps and, because of that, are not catching tracings.

Anything you need just let me know.

kubectl get deploy komodo-api -o yaml | grep odigo
    instrumentation.odigos.io/ebpf: "true"
    odigos-instrumentation: enabled
            instrumentation.odigos.io/go: "1"

kubectl get deploy komodo-frontend -o yaml | grep odigo
    odigos-instrumentation: enabled
blumamir commented 11 months ago

@RonFed I also noticed this happening after upgrading to 1.0.10. New instrumented applications using the odigos-ui do not have the same annotations that previous instrumented apps and, because of that, are not catching tracings.

Anything you need just let me know.

kubectl get deploy komodo-api -o yaml | grep odigo
    instrumentation.odigos.io/ebpf: "true"
    odigos-instrumentation: enabled
            instrumentation.odigos.io/go: "1"

kubectl get deploy komodo-frontend -o yaml | grep odigo
    odigos-instrumentation: enabled

Hi @dirtyren ,

Thanks for letting us know.

Can you please check to see if you have an instrumented application for this source?

kubectl get instrumentedapplications.odigos.io -A

and also please check the logs of theodigos-instrumentor pod in the odigos-system namespace to see if there is any clue about the issue?

dirtyren commented 11 months ago

Hello @RonFed ,

the app komodo-frontend is a react frontend, that I am not able to instrument using Odigos

kubectl get instrumentedapplications.odigos.io -A
NAMESPACE   NAME                       AGE
komodo      deployment-komodo-api      28d
komodo      deployment-slo-generator   28d

I could not find any messages on the odigos-instrumentor pod. Also, I had to remove the label odigos-instrumentation: enabled from the komodo-frontend deploy so it would show on the web interface and I could redo the process to check for logs.

Anything else I can help you with?

Tks.

blumamir commented 11 months ago

Hello @RonFed ,

the app komodo-frontend is a react frontend, that I am not able to instrument using Odigos

kubectl get instrumentedapplications.odigos.io -A
NAMESPACE   NAME                       AGE
komodo      deployment-komodo-api      28d
komodo      deployment-slo-generator   28d

I could not find any messages on the odigos-instrumentor pod. Also, I had to remove the label odigos-instrumentation: enabled from the komodo-frontend deploy so it would show on the web interface and I could redo the process to check for logs.

Anything else I can help you with?

Tks.

Thanks for the info.

I think I found the bug. I am working on a fix that should be ready soon 🙏

blumamir commented 11 months ago

@dirtyren

I thought I found an issue but I am not sure. Can you please try to upgrade to version v1.0.11 and check if you still encounter the issue?

I also wrote to you in odigos slack - if you are available we can jump on a quick call to help diagnose the issue on your setup. Please let me know if the new version fixes the issue and/or if you like to schedule a zoom call.

Thanks again 🙏

dirtyren commented 11 months ago

hey @blumamir , I just updated to v1.0.11 and the service names of my instrumented apps got weird like this:

image

The tracing information is also showing strange things, but, it seems to be showing the http codes

image image

The service names were working before the update to 1.0.11.

Anything I can help with?

Tks.

dirtyren commented 11 months ago

I am getting this errors on the odiglet logs

{"level":"error","ts":1703707677.1487029,"logger":"Instrumentation.Manager","caller":"instrumentation/manager.go:165","msg":"error while loading probes, cleaning up","name":"google.golang.org/grpc/server","error":"field UprobeHttp2ServerOperateHeader: program uprobe_http2Server_operateHeader: load program: permission denied: dereference of modified ctx ptr R1 off=40 disallowed (33 line(s) omitted)","stacktrace":"go.opentelemetry.io/auto/internal/pkg/instrumentation.(*Manager).load\n\t/root/go/pkg/mod/go.opentelemetry.io/auto@v0.9.0-alpha/internal/pkg/instrumentation/manager.go:165\ngo.opentelemetry.io/auto/internal/pkg/instrumentation.(*Manager).Run\n\t/root/go/pkg/mod/go.opentelemetry.io/auto@v0.9.0-alpha/internal/pkg/instrumentation/manager.go:120\ngo.opentelemetry.io/auto.(*Instrumentation).Run\n\t/root/go/pkg/mod/go.opentelemetry.io/auto@v0.9.0-alpha/instrumentation.go:152\ngithub.com/keyval-dev/odigos/odiglet/pkg/ebpf.(*GoOtelEbpfSdk).Run\n\t/go/src/github.com/keyval-dev/odigos/odiglet/pkg/ebpf/go.go:55\ngithub.com/keyval-dev/odigos/odiglet/pkg/ebpf.(*EbpfDirector[...]).Instrument.func1\n\t/go/src/github.com/keyval-dev/odigos/odiglet/pkg/ebpf/director.go:124"}
{"level":"info","ts":1703707677.2024436,"logger":"Instrumentation.Manager","caller":"instrumentation/manager.go:190","msg":"Cleaning bpffs"}
{"level":"error","ts":1703707677.2028763,"caller":"ebpf/director.go:125","msg":"instrumentation crashed after running","error":"field UprobeHttp2ServerOperateHeader: program uprobe_http2Server_operateHeader: load program: permission denied: dereference of modified ctx ptr R1 off=40 disallowed (33 line(s) omitted)","stacktrace":"github.com/keyval-dev/odigos/odiglet/pkg/ebpf.(*EbpfDirector[...]).Instrument.func1\n\t/go/src/github.com/keyval-dev/odigos/odiglet/pkg/ebpf/director.go:125"}
{"level":"info","ts":1703762962.9726727,"caller":"ebpf/director.go:145","msg":"Cleaning up ebpf go instrumentation for pod","pod":{"name":"komodo-api-658fdb84b-6zhjj","namespace":"komodo"}}
a
edeNFed commented 10 months ago

Hi @dirtyren do you still need help with this issue? Happy to help you debug this if needed

blumamir commented 9 months ago

@dirtyren if the issue is still relevant, feel free to re-open