Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AWS X-Ray Exporter should map rpc values to aws values #6109

Closed
NathanielRN opened this issue Nov 2, 2021 · 1 comment · Fixed by #6231
Closed

AWS X-Ray Exporter should map rpc values to aws values #6109

NathanielRN opened this issue Nov 2, 2021 · 1 comment · Fixed by #6231
Labels
comp:aws AWS components comp:aws-xray AWS XRay related issues

Comments

@NathanielRN
Copy link
Contributor

NathanielRN commented Nov 2, 2021

Is your feature request related to a problem? Please describe.

Follow up to #5766 where we fixed the logic used to set the namespace on an AWS X-Ray segment created from OTel traces.

The current X-Ray exporter will simply send rpc.* values to the AWS X-Ray backend and not transform them. This resulted in a regression in the OTel Python + AWS X-Ray experience as documented here: aws-observability/aws-otel-lambda#165.

Failure to fix this soon will cause more regression as more languages become spec compliant.

Describe the solution you'd like

Instead of only sending the rpc.service, rpc.method, and rpc.system attributes to the AWS X-Ray backend, we need to map these values to aws.* value that the AWS-XRay backend understands.

Specifically:

Describe alternatives you've considered

The AWS X-Ray backend team could also read rpc.* values in the future, but this would be a much larger effort involving many more teams.

Additional context
See also:

@NathanielRN
Copy link
Contributor Author

@alolita alolita added comp:aws AWS components comp:aws-xray AWS XRay related issues labels Nov 10, 2021
tigrannajaryan pushed a commit that referenced this issue Nov 12, 2021
…ng (#6231)

When creating an **AWS segment**, the `exporter/awsxrayexporter/internal/translator/segment.go` file will create the "`AWS`" component of the segment (a map under the "`aws`" key) by reading through the attributes of an **OTel span**.

Span generated for the AWS SDK will either have `aws.operation` according to legacy, or `rpc.method` to describes the "operation" made with the AWS SDK as explained [in the specifications](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/instrumentation/aws-sdk.md#common-attributes).

Because some languages have moved to the new spec-defined `rpc.method`, we update the translator to consider this attribute.

**NOTE**: We do not need to map `rpc.service` to `aws.service` since it is not used by the AWS X-Ray backend.

**Link to tracking Issue:** Fixes #6109 

**Testing:**

Tests mostly make sure the operation (e.g. `GetItem`) is present in the final segment structure regardless if we are using the legacy `aws.operation` or the new `rpc.method`.

In the case where both are defined, the legacy `aws.operation` will take precedence as remarked by the updated legacy unit test which defines both but which takes `aws.operation`.

**Documentation:**

Not a breaking change, so N/A.
povilasv referenced this issue in coralogix/opentelemetry-collector-contrib Dec 19, 2022
Signed-off-by: Bogdan <bogdandrutu@gmail.com>

Signed-off-by: Bogdan <bogdandrutu@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
comp:aws AWS components comp:aws-xray AWS XRay related issues
Projects
None yet
2 participants