-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
[instrumentation] - Suppress tracing using environment variables #20776
Conversation
This pull request is protected by Check Enforcer. What is Check Enforcer?Check Enforcer helps ensure all pull requests are covered by at least one check-run (typically an Azure Pipeline). When all check-runs associated with this pull request pass then Check Enforcer itself will pass. Why am I getting this message?You are getting this message because Check Enforcer did not detect any check-runs being associated with this pull request within five minutes. This may indicate that your pull request is not covered by any pipelines and so Check Enforcer is correctly blocking the pull request being merged. What should I do now?If the check-enforcer check-run is not passing and all other check-runs associated with this PR are passing (excluding license-cla) then you could try telling Check Enforcer to evaluate your pull request again. You can do this by adding a comment to this pull request as follows: What if I am onboarding a new service?Often, new services do not have validation pipelines associated with them, in order to bootstrap pipelines for a new service, you can issue the following command as a pull request comment: |
sdk/instrumentation/opentelemetry-instrumentation-azure-sdk/src/transformations.ts
Outdated
Show resolved
Hide resolved
This reverts commit 795b5a4.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Left a couple of comments on reading env vars on the hot path. Caching them will probably cause some complications for tests, but seems important. Otherwise, looks great!
sdk/instrumentation/opentelemetry-instrumentation-azure-sdk/src/instrumenter.ts
Outdated
Show resolved
Hide resolved
sdk/instrumentation/opentelemetry-instrumentation-azure-sdk/src/instrumenter.ts
Show resolved
Hide resolved
sdk/instrumentation/opentelemetry-instrumentation-azure-sdk/src/instrumenter.ts
Outdated
Show resolved
Hide resolved
sdk/instrumentation/opentelemetry-instrumentation-azure-sdk/src/transformations.ts
Outdated
Show resolved
Hide resolved
sdk/instrumentation/opentelemetry-instrumentation-azure-sdk/src/configuration.ts
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A few minor comments
sdk/instrumentation/opentelemetry-instrumentation-azure-sdk/src/instrumenter.ts
Show resolved
Hide resolved
sdk/instrumentation/opentelemetry-instrumentation-azure-sdk/src/configuration.ts
Outdated
Show resolved
Hide resolved
sdk/instrumentation/opentelemetry-instrumentation-azure-sdk/src/configuration.ts
Outdated
Show resolved
Hide resolved
sdk/instrumentation/opentelemetry-instrumentation-azure-sdk/src/configuration.ts
Show resolved
Hide resolved
…re#20776) ### Packages impacted by this PR @azure/opentelemetry-instrumentation-azure-sdk ### Issues associated with this PR Resolves Azure#17969 ### Describe the problem that is addressed by this PR In order to mitigate duplication of AZ SDK HTTP spans with auto-instrumentation HTTP spans, the tracing feature crew would like to add the AZURE_HTTP_TRACING_DISABLED environment variable to disable any dowstream HTTP spans from being created. In addition, I realized that when migrating off-of `createSpan` we did not migrate the logic to suppress _all_ tracing using AZURE_TRACING_DISABLED environment variable. This PR fixes both of these issues. ### What are the possible designs available to address the problem? If there are more than one possible design, why was the one in this PR chosen? The alternatives really were: - Add this logic in core-tracing for global suppression - Add this logic in tracingPolicy for HTTP span suppression Since we use a no-op instrumenter by default there's no reason to add additional logic to core-tracing. Further, using it in the OTel package allows us to take advantage of OTel provided APIs which will be honored downstream as well. Quick summary of requirements here: - When AZURE_TRACING_DISABLED is set, we want to suppress our Azure SDK spans from being recorded - When AZURE_HTTP_TRACING_DISABLED is set, we want to suppress any children of our SDK's HTTP spans from being recorded, this avoids the HTTP span duplication problem while OTel works out a solution on their end - Finally, if _both_ are set, we suppress our Azure SDK spans from being recorded, but _not_ suppress any children of our HTTP spans (since there's no duplication)
…re#20776) ### Packages impacted by this PR @azure/opentelemetry-instrumentation-azure-sdk ### Issues associated with this PR Resolves Azure#17969 ### Describe the problem that is addressed by this PR In order to mitigate duplication of AZ SDK HTTP spans with auto-instrumentation HTTP spans, the tracing feature crew would like to add the AZURE_HTTP_TRACING_DISABLED environment variable to disable any dowstream HTTP spans from being created. In addition, I realized that when migrating off-of `createSpan` we did not migrate the logic to suppress _all_ tracing using AZURE_TRACING_DISABLED environment variable. This PR fixes both of these issues. ### What are the possible designs available to address the problem? If there are more than one possible design, why was the one in this PR chosen? The alternatives really were: - Add this logic in core-tracing for global suppression - Add this logic in tracingPolicy for HTTP span suppression Since we use a no-op instrumenter by default there's no reason to add additional logic to core-tracing. Further, using it in the OTel package allows us to take advantage of OTel provided APIs which will be honored downstream as well. Quick summary of requirements here: - When AZURE_TRACING_DISABLED is set, we want to suppress our Azure SDK spans from being recorded - When AZURE_HTTP_TRACING_DISABLED is set, we want to suppress any children of our SDK's HTTP spans from being recorded, this avoids the HTTP span duplication problem while OTel works out a solution on their end - Finally, if _both_ are set, we suppress our Azure SDK spans from being recorded, but _not_ suppress any children of our HTTP spans (since there's no duplication)
Packages impacted by this PR
@azure/opentelemetry-instrumentation-azure-sdk
Issues associated with this PR
Resolves #17969
Describe the problem that is addressed by this PR
In order to mitigate duplication of AZ SDK HTTP spans with auto-instrumentation
HTTP spans, the tracing feature crew would like to add the
AZURE_HTTP_TRACING_DISABLED environment variable to disable any dowstream
HTTP spans from being created.
In addition, I realized that when migrating off-of
createSpan
we did notmigrate the logic to suppress all tracing using AZURE_TRACING_DISABLED
environment variable.
This PR fixes both of these issues.
What are the possible designs available to address the problem? If there are more than one possible design, why was the one in this PR chosen?
The alternatives really were:
Since we use a no-op instrumenter by default there's no reason to add additional
logic to core-tracing. Further, using it in the OTel package allows us to take
advantage of OTel provided APIs which will be honored downstream as well.
Quick summary of requirements here:
Are there test cases added in this PR? (If not, why?)
Yes
Provide a list of related PRs (if any)
Command used to generate this PR: (Applicable only to SDK release request PRs)
Checklists