You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/rpc/README.md
+32-31Lines changed: 32 additions & 31 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,74 +13,75 @@ This document defines semantic conventions for remote procedure calls (RPC).
13
13
> [v1.37.0 of this document](https://github.com/open-telemetry/semantic-conventions/blob/v1.37.0/docs/rpc/README.md)
14
14
> (or prior):
15
15
>
16
-
> * SHOULD NOT change the version of the RPC conventions that they emit by
16
+
> - SHOULD NOT change the version of the RPC conventions that they emit by
17
17
> default in their existing major version. Conventions include (but are not
18
18
> limited to) attributes, metric and span names, and unit of measure.
19
-
> * SHOULD introduce an environment variable `OTEL_SEMCONV_STABILITY_OPT_IN`
19
+
> - SHOULD introduce an environment variable `OTEL_SEMCONV_STABILITY_OPT_IN`
20
20
> in their existing major version as a comma-separated list of category-specific values
21
21
> (e.g., http, databases, rpc). The list of values includes:
22
-
> *`rpc` - emit the stable RPC conventions, and stop emitting
22
+
> -`rpc` - emit the stable RPC conventions, and stop emitting
23
23
> the experimental RPC conventions that the instrumentation emitted
24
24
> previously.
25
-
> *`rpc/dup` - emit both the experimental and stable RPC conventions,
25
+
> -`rpc/dup` - emit both the experimental and stable RPC conventions,
26
26
> allowing for a phased rollout of the stable semantic conventions.
27
-
> * The default behavior (in the absence of one of these values) is to continue
27
+
> - The default behavior (in the absence of one of these values) is to continue
28
28
> emitting whatever version of the old experimental RPC conventions
29
29
> the instrumentation was emitting previously.
30
-
> * Note: `rpc/dup` has higher precedence than `rpc` in case both values are present
31
-
> * SHOULD maintain (security patching at a minimum) their existing major version
30
+
> - Note: `rpc/dup` has higher precedence than `rpc` in case both values are present
31
+
> - SHOULD maintain (security patching at a minimum) their existing major version
32
32
> for at least six months after it starts emitting both sets of conventions.
33
-
> * MAY drop the environment variable in their next major version and emit only
33
+
> - MAY drop the environment variable in their next major version and emit only
34
34
> the stable RPC conventions.
35
35
36
36
The RPC Semantic conventions are designed to cover the logical operation of invoking an operation (function) to run in a remote process.
37
37
This remote process call will often travel across the network to reach it's destination.
38
38
39
39
The details of this invocation can be captured using the following signals:
40
40
41
-
*[RPC Spans](rpc-spans.md): Semantic Conventions for RPC client and server *spans*.
42
-
*[RPC Metrics](rpc-metrics.md): Semantic Conventions for RPC *metrics*.
41
+
-[RPC Spans](rpc-spans.md): Semantic Conventions for RPC client and server *spans*.
42
+
-[RPC Metrics](rpc-metrics.md): Semantic Conventions for RPC *metrics*.
43
43
44
-
These generic conventions can be extended based on the [RPC Transport Protocol](#what-is-a-rpc-transport-protocol) being used with the following protocols defined:
44
+
These generic conventions can be extended based on the [RPC Protocol](#what-is-a-rpc-protocol) being used with the following protocols defined:
45
45
46
-
*[gRPC](grpc.md)
47
-
*[Http](/docs/http/README.md)
48
-
* Triple
49
-
* SOAP
50
-
*[Connect RPC](connect-rpc.md)
46
+
-[gRPC](grpc.md)
47
+
-[Http](/docs/http/README.md)
48
+
- Triple
49
+
- Twirp
50
+
- SOAP
51
+
-[Connect RPC](connect-rpc.md)
51
52
52
53
They can also be extended based on the [RPC Framework](#what-is-a-rpc-framework) being used with the following frameworks defined:
53
54
54
-
* Apache Dubbo
55
-
* Dapr
56
-
*[Connect RPC](connect-rpc.md)
57
-
* WCF
55
+
- Apache Dubbo
56
+
- Dapr
57
+
-[Connect RPC](connect-rpc.md)
58
+
- WCF
58
59
59
60
However should the process being invoked be a member of a more specific domain such as those below,
60
61
the corresponding conventions should be followed:
61
62
62
-
*[Database](/docs/database/README.md)
63
-
*[Generative AI](/docs/gen-ai/README.md)
64
-
*[Messaging](/docs/messaging/README.md)
63
+
-[Database](/docs/database/README.md)
64
+
-[Generative AI](/docs/gen-ai/README.md)
65
+
-[Messaging](/docs/messaging/README.md)
65
66
66
67
If your focus is on the network layer calls rather than the logical calls being made,
67
68
these RPC documents are not for you but instead what you are after is described via the below conventions:
68
69
69
-
* Http
70
+
- Http
70
71
71
-
## RPC Transport Protocol vs RPC Framework
72
+
## RPC Protocol vs RPC Framework
72
73
73
-
### What is a RPC Transport Protocol?
74
+
### What is a RPC Protocol?
74
75
75
-
A RPC transport protocol describes the manner in which a message is transported from one service to another.
76
+
A RPC protocol describes the manner in which a message is transported from one service to another.
76
77
This protocol may have the same value as the network protocol ie http or it may differ when,
77
78
an implementation of the network protocol is used e.g. gRPC.
78
79
79
80
These implementations will usually only expose a subset of functionality of the network protocol
80
81
and may only be compatible with newer versions of the network protocol ie grpc will not work over http v1.
81
82
82
-
Another aspect of how the `network.protocol.*` differs to `rpc.transport.protocol.*` is that,
83
-
the transport protocol can implement additional client side functionality such as retry, caching, cancellation etc.
83
+
Another aspect of how the `network.protocol.*` differs to `rpc.protocol.*` is that,
84
+
the protocol can implement additional client side (application level) functionality such as retry, caching, cancellation etc.
84
85
85
86
It is expected that these protocols will define protocol specific attributes, for instance gRPC would contain a status attribute.
86
87
As such the usage of these attribute/s should be documented via a dedicated protocol page providing complete definitions.
@@ -94,7 +95,7 @@ The framework in addition to providing the api can define properties which are s
94
95
to provide additional context. For instance a framework might require a message id to be sent with the message.
95
96
The framework doesn't care how it is transported across the network.
96
97
97
-
It is expected that these attributes are added where appropriate to the corresponding signals defined for the rpc transport protocol,
98
+
It is expected that these attributes are added where appropriate to the corresponding signals defined for the rpc protocol,
98
99
with a general "if applicable for the rpc framework" condition placed on the requirement level.
99
100
100
101
A framework may have its own page when the framework defines its own signals which require the inclusion of framework specific
@@ -104,6 +105,6 @@ attributes for the signal to have value & meaning.
104
105
105
106
Specifications defined by maintainers of RPC systems:
106
107
107
-
*[gRPC](https://github.com/grpc/proposal/blob/master/A66-otel-stats.md): Semantic Conventions for *gRPC*.
108
+
-[gRPC](https://github.com/grpc/proposal/blob/master/A66-otel-stats.md): Semantic Conventions for *gRPC*.
0 commit comments