Skip to content

refactor: standardize telemetry reporting across Foundry extensions #9842

Description

Task

The Foundry extensions currently do not share a consistent interface for reporting
usage telemetry through azd. Some extensions call the generated
TelemetryService.ReportUsage gRPC client directly, while others have no
extension-level telemetry boundary.

Add a consistent, best-effort telemetry interface to the seven Foundry extensions
owned by the team:

  • azure.ai.agents
  • azure.ai.connections
  • azure.ai.inspector
  • azure.ai.projects
  • azure.ai.routines
  • azure.ai.skills
  • azure.ai.toolboxes

Migrate the existing Agents and Inspector telemetry producers to the new interface
without changing their event schemas. Do not introduce new product usage events
for the other five extensions.

This work builds on the host-controlled telemetry API delivered by
#9174. It does not modify the
gRPC contract, the azd host telemetry pipeline, or registry admission behavior.

Scope

  • Add an extension-local internal/telemetry package to each of the seven
    independent Go modules.
  • Provide a common Reporter.Report(ctx, Event) interface that:
    • is best effort and never affects command or lifecycle results;
    • applies a one-second timeout;
    • never retries;
    • treats Accepted: false as a normal outcome;
    • tolerates a nil client or nil host response;
    • logs only the event name and gRPC status code in debug mode;
    • never logs attribute values or transport error details.
  • Keep event names, attribute keys, and bounded values in each extension's
    internal/telemetry/events.go.
  • Migrate the existing Agents event:
    • local_client.route.selected
    • route = inspector | playground | suppressed
  • Migrate the existing Inspector event:
    • inspector.funnel.stage
    • stage = ui_ready
    • outcome = succeeded
  • Keep the existing event names, attributes, emission timing, and semantics
    unchanged.
  • Do not add usage events to Connections, Projects, Routines, Skills, or
    Toolboxes.
  • Upgrade Connections, Routines, Skills, and Toolboxes to azd SDK v1.31.0
    and set requiredAzdVersion: ">=1.31.0".
  • Document the telemetry interface, best-effort behavior, registry gate, and
    customer-content restrictions in all seven extension READMEs.

Because the seven extensions are independently built and released, and the team
does not own pkg/azdext, each module carries the same small adapter rather than
depending on another extension.

Acceptance criteria

  • All seven extensions expose the same internal/telemetry Reporter and Event
    contract.
  • Command and provider code do not call the generated ReportUsage RPC directly.
  • Telemetry failure, timeout, rejection, or host incompatibility never changes
    extension command behavior, output, or result.
  • Reporter calls are bounded by a timeout and are never retried.
  • Debug logging does not expose attributes, customer content, or raw transport
    error details.
  • Agents and Inspector continue emitting their existing telemetry with unchanged
    event names and attribute values.
  • The remaining five extensions emit no new product usage events.
  • All telemetry event definitions are centralized in events.go and use bounded,
    reviewed values.
  • The four upgraded extensions require a host version that provides
    TelemetryService.
  • Unit tests, lint, build, and documentation spell checks pass for all seven
    extensions.

Related

  • Core telemetry API:
    Let extensions report named telemetry events with attributes #9174
  • The azd host remains responsible for extension identity, the ext.* namespace,
    official-registry admission, request bounds, per-invocation event budget, trace
    correlation, consent, transport, and export.
  • New product events remain follow-up work and require an explicit product
    question, bounded schema, documentation, and privacy review.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/code-improvementsCode quality, refactoringarea/telemetryTelemetry, tracing, observabilityengineering itemInternal engineering work itemext-foundryazure.ai.{agents,connections,inspector,projects,routines,skills,toolboxes}, microsoft.foundry

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions