Skip to content

impl(o11y): introduce url.full#12209

Open
diegomarquezp wants to merge 14 commits intomainfrom
observability/tracing-attr/url.full
Open

impl(o11y): introduce url.full#12209
diegomarquezp wants to merge 14 commits intomainfrom
observability/tracing-attr/url.full

Conversation

@diegomarquezp
Copy link
Copy Markdown
Contributor

  • Adds HTTP_URL_FULL_ATTRIBUTE to ObservabilityAttributes
  • Introduces requestUrlResolved into ApiTracer
  • Implements redaction logic in ObservabilityUtils
  • Passes tracer into HTTP/JSON transport to record the URL

Note: Following Footnote 3, the spec indicates logging implementations MAY expose a configuration to override redacted fields. This implementation does not expose this configurability to provide a consistent and optimally safe baseline out of the box.

- Adds HTTP_URL_FULL_ATTRIBUTE to ObservabilityAttributes
- Introduces requestUrlResolved into ApiTracer
- Implements redaction logic in ObservabilityUtils
- Passes tracer into HTTP/JSON transport to record the URL
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the observability capabilities by introducing a new url.full attribute for HTTP requests. It incorporates critical security measures by automatically redacting sensitive data, such as user credentials and specific query parameters, from the URL before it is logged or traced. This ensures that comprehensive request information can be monitored without compromising sensitive data, aligning with OpenTelemetry semantic conventions for secure and effective tracing.

Highlights

  • New Observability Attribute: Introduced the url.full attribute (HTTP_URL_FULL_ATTRIBUTE) to capture the full HTTP request URL for observability purposes.
  • Sensitive URL Redaction: Implemented robust logic in ObservabilityUtils to redact sensitive information from URLs, including user credentials in the user-info component and specific query parameters (e.g., API keys, access tokens, signatures) before recording.
  • ApiTracer Integration: Added a new requestUrlResolved method to ApiTracer and its SpanTracer implementation, allowing the resolved and sanitized URL to be attached to spans.
  • HTTP/JSON Transport Update: Modified the HTTP/JSON transport layer to pass the ApiTracer and utilize the new requestUrlResolved method, ensuring that url.full is recorded for HTTP requests.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces tracing capabilities for HTTP JSON calls by integrating ApiTracer into HttpJsonCallOptions and HttpJsonClientCalls. It adds a new requestUrlResolved method to ApiTracer and SpanTracer to record the full HTTP URL. A significant part of the change is the addition of ObservabilityUtils.sanitizeUrlFull and redactSensitiveQueryValues to redact sensitive information (user info and specific query parameters like API keys or signatures) from URLs before they are recorded, aligning with OpenTelemetry semantic conventions. New tests were added to cover this sanitization logic. A review comment highlights an issue in redactSensitiveQueryValues where key-only query parameters are incorrectly modified, suggesting a fix and an additional test case.

…y parameter redaction and fixes HttpJsonClientCallsTest test failure.
@diegomarquezp diegomarquezp marked this pull request as ready for review March 26, 2026 18:12
@diegomarquezp diegomarquezp requested a review from a team as a code owner March 26, 2026 18:12
@diegomarquezp diegomarquezp marked this pull request as draft March 26, 2026 19:11
@diegomarquezp diegomarquezp marked this pull request as ready for review March 26, 2026 19:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants