Skip to content

RPC semconv stability project proposal #2684

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

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open

Conversation

trask
Copy link
Member

@trask trask commented Apr 16, 2025

Marking as ready for review, but it's not ready for approvals yet since we haven't lined up the necessary staffing yet.


* @trask project lead / GC sponsor
* @lmolkova project lead / TC sponsor
* ...
Copy link
Member Author

Choose a reason for hiding this comment

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

please comment if you'd like to participate!

we would love to get folks with knowledge of RPC libraries and folks who are able to prototype and update existing instrumentations across a variety of languages

Copy link
Contributor

Choose a reason for hiding this comment

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

FYI - you can't count on me for staffing reasons, but I plan to help aide this effort (as called out in industry outreach.)

@lmolkova
Copy link
Contributor

lmolkova commented Apr 21, 2025

Based on the discussion during SemConv call on 4/21/25, adding a few large topics I'd like to figure out in the scope of this group:

  1. What's an RPC system? Graph QL, WebSockets , SSE over HTTP, MCP, SignalR, WCF, etc? Are logical operations like AWS SDK calls (REST over HTTP) RPC calls?

  2. Which benefits does the abstraction bring?

    • Generic span conventions would cover almost everything there is in common between RPC systems - span name includes low-cardinality routes, span kind shows the side, server/client/network/error attributes cover generic networking concerns.

      • we still need a rpc.system (rpc.protocol.name) attribute
      • we still need some generic or protocol-specific attributes (gRPC status code)
    • Metrics - having a common call duration makes it easy to build a generic dashboard

      • such metric would have server/client/network, error.type attributes and a common operation name
      • but what does this metric show? All my remote (out-of-process) calls? No, it doesn't cover HTTP, sql low-level, etc
  3. Streaming: should we do any effort to define generic conventions? can we?

    • context propagation over individual messages
    • correlated request/response events or spans
    • streaming-related metrics (number of messages, time-between-messages, etc)

One potential outcome of p1 and p2 that we might decide that we can't define RPC system and/or can't define enough of a useful abstractions effectively limiting the scope of the group to a few attributes that remain necessary.

@lmolkova
Copy link
Contributor

/cc @JamesNK in case he's interested in sharing his experience instrumenting gRPC and SignalR

@danielgblanco
Copy link
Contributor

I've approved pending comment on staffing.

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.

4 participants