AWS Operation vs RPC Method in Go and Python Traces

TLDR Timothy observed differences in traces between Go and Python instrumentation for AWS DynamoDB, where Go uses `aws.operation` and Python uses `rpc.method`. Srikanth suggested reporting the issue on the OpenTelemetry Go instrumentation repository.

Photo of Timothy
Thu, 02 Mar 2023 15:37:52 UTC

Hey I was wondering why there is a difference between traces coming from dynamoDB. One uses python and the other uses go but they both use official AWS instrumentation. It seems go stores the operation in aws.operation and python stores the operation in rpc.method. I know the attributes are not set by SigNoz but maybe aws.operation should be read similar to rpc.method?

Photo of Ankit
Thu, 02 Mar 2023 15:55:31 UTC

If you are talking about the column `Operation` in trace filter page, I don't think SigNoz plays around with it. We analyse different span attributes to create a sensible value for the columns `Method` and `Status Code` keeping in mind http and grpc calls. Are you talking about differences in latencies? Latency usually has nothing to do with what the attribute values are and how are they stored. Can you please be more detailed here? cc: <@4K15aa>

Photo of Timothy
Thu, 02 Mar 2023 16:30:17 UTC

Sorry to be clear I am focused on the method column. It seems that the go and python instrumentation do not set the attributes the same and therefore the go dynomo db calls do not fill in the methods column. The go sets the method in aws.operation even though the instrumentation should be same between languages. Since it’s not is it reasonable for SigNoz to consider aws.operation attribute as a method as well or should I manually inject our spans with the rpc.method?

Photo of Srikanth
Thu, 02 Mar 2023 16:52:18 UTC

The instrumentation libraries are not mature yet, so they will have differences. It is indeed an rpc call under the hood. You may want to open an issue here and get that fixed

Photo of Timothy
Thu, 02 Mar 2023 17:11:52 UTC

Thank you