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/registry/attributes/rpc.md
+14-10Lines changed: 14 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,31 +18,35 @@ This document defines attributes for remote procedure calls.
18
18
| <aid="rpc-message-id"href="#rpc-message-id">`rpc.message.id`</a> || int | MUST be calculated as two different counters starting from `1` one for sent messages and one for received message. [1]||
19
19
| <aid="rpc-message-type"href="#rpc-message-type">`rpc.message.type`</a> || string | Whether this is a received or sent message. |`SENT`; `RECEIVED`|
20
20
| <aid="rpc-message-uncompressed-size"href="#rpc-message-uncompressed-size">`rpc.message.uncompressed_size`</a> || int | Uncompressed size of the message in bytes. ||
21
-
| <aid="rpc-method"href="#rpc-method">`rpc.method`</a> || string | This is the logical name of the method from the RPC interface perspective. |`exampleMethod`|
22
-
| <aid="rpc-request-metadata"href="#rpc-request-metadata">`rpc.request.metadata.<key>`</a> || string[]| RPC request metadata, `<key>` being the normalized RPC metadata key (lowercase), the value being the metadata values. [2]|`["1.2.3.4", "1.2.3.5"]`|
23
-
| <aid="rpc-response-metadata"href="#rpc-response-metadata">`rpc.response.metadata.<key>`</a> || string[]| RPC response metadata, `<key>` being the normalized RPC metadata key (lowercase), the value being the metadata values. [3]|`["attribute_value"]`|
24
-
| <aid="rpc-response-status-code"href="#rpc-response-status-code">`rpc.response.status_code`</a> || string | Status code of the RPC returned by the RPC server or generated by the client [4]|`OK`; `DEADLINE_EXCEEDED`; `-32602`|
25
-
| <aid="rpc-service"href="#rpc-service">`rpc.service`</a> || string | The full (logical) name of the service being called, including its package name, if applicable. |`myservice.EchoService`|
| <aid="rpc-method"href="#rpc-method">`rpc.method`</a> || string | This is the logical name of the method from the RPC interface perspective. [2]|`exampleMethod`|
22
+
| <aid="rpc-request-metadata"href="#rpc-request-metadata">`rpc.request.metadata.<key>`</a> || string[]| RPC request metadata, `<key>` being the normalized RPC metadata key (lowercase), the value being the metadata values. [3]|`["1.2.3.4", "1.2.3.5"]`|
23
+
| <aid="rpc-response-metadata"href="#rpc-response-metadata">`rpc.response.metadata.<key>`</a> || string[]| RPC response metadata, `<key>` being the normalized RPC metadata key (lowercase), the value being the metadata values. [4]|`["attribute_value"]`|
24
+
| <aid="rpc-response-status-code"href="#rpc-response-status-code">`rpc.response.status_code`</a> || string | Status code of the RPC returned by the RPC server or generated by the client [5]|`OK`; `DEADLINE_EXCEEDED`; `-32602`|
25
+
| <aid="rpc-service"href="#rpc-service">`rpc.service`</a> || string | The full (logical) name of the service being called, including its package name, if applicable. [6]|`myservice.EchoService`|
**[1]`rpc.message.id`:** This way we guarantee that the values will be consistent between different implementations.
29
29
30
-
**[2]`rpc.request.metadata.<key>`:** Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured.
30
+
**[2]`rpc.method`:** This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function.name` attribute may be used to record the fully-qualified method actually executing the call on the server side, or the RPC client stub method on the client side.
31
+
32
+
**[3]`rpc.request.metadata.<key>`:** Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured.
31
33
Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.
32
34
33
35
For example, a property `my-custom-key` with value `["1.2.3.4", "1.2.3.5"]` SHOULD be recorded as
34
36
`rpc.request.metadata.my-custom-key` attribute with value `["1.2.3.4", "1.2.3.5"]`
35
37
36
-
**[3]`rpc.response.metadata.<key>`:** Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured.
38
+
**[4]`rpc.response.metadata.<key>`:** Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured.
37
39
Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.
38
40
39
41
For example, a property `my-custom-key` with value `["attribute_value"]` SHOULD be recorded as
40
42
the `rpc.response.metadata.my-custom-key` attribute with value `["attribute_value"]`
41
43
42
-
**[4]`rpc.response.status_code`:** Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes.
44
+
**[5]`rpc.response.status_code`:** Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes.
43
45
Semantic conventions for individual RPC frameworks SHOULD document what `rpc.response.status_code` means in the context of that system and which values are considered to represent errors.
44
46
45
-
**[5]`rpc.system.name`:** The client and server RPC systems may differ for the same RPC interaction. For example, a client may use Apache Dubbo or Connect RPC to communicate with a server that uses gRPC since both protocols provide compatibility with gRPC.
47
+
**[6]`rpc.service`:** This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.function.name` attribute may be used to record the fully-qualified method actually executing the call on the server side, or the RPC client stub class on the client side.
48
+
49
+
**[7]`rpc.system.name`:** The client and server RPC systems may differ for the same RPC interaction. For example, a client may use Apache Dubbo or Connect RPC to communicate with a server that uses gRPC since both protocols provide compatibility with gRPC.
Copy file name to clipboardExpand all lines: docs/rpc/connect-rpc.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -80,9 +80,9 @@ Consider always setting the transport when setting a port number, since
80
80
a port number is ambiguous without knowing the transport. For example
81
81
different processes could be listening on TCP port 12345 and UDP port 12345.
82
82
83
-
**[9]`rpc.method`:** This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function.name` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).
83
+
**[9]`rpc.method`:** This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function.name` attribute may be used to record the fully-qualified method actually executing the call on the server side, or the RPC client stub method on the client side.
84
84
85
-
**[10]`rpc.service`:** This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).
85
+
**[10]`rpc.service`:** This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.function.name` attribute may be used to record the fully-qualified method actually executing the call on the server side, or the RPC client stub class on the client side.
86
86
87
87
**[11]`rpc.request.metadata.<key>`:** Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured.
88
88
Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.
@@ -203,9 +203,9 @@ Consider always setting the transport when setting a port number, since
203
203
a port number is ambiguous without knowing the transport. For example
204
204
different processes could be listening on TCP port 12345 and UDP port 12345.
205
205
206
-
**[11]`rpc.method`:** This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function.name` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).
206
+
**[11]`rpc.method`:** This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function.name` attribute may be used to record the fully-qualified method actually executing the call on the server side, or the RPC client stub method on the client side.
207
207
208
-
**[12]`rpc.service`:** This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).
208
+
**[12]`rpc.service`:** This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.function.name` attribute may be used to record the fully-qualified method actually executing the call on the server side, or the RPC client stub class on the client side.
209
209
210
210
**[13]`rpc.request.metadata.<key>`:** Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured.
211
211
Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.
Copy file name to clipboardExpand all lines: docs/rpc/grpc.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -49,11 +49,11 @@ for the details on which values classify as errors.
49
49
|[`rpc.request.metadata.<key>`](/docs/registry/attributes/rpc.md)||`Opt-In`| string[]| RPC request metadata, `<key>` being the normalized RPC metadata key (lowercase), the value being the metadata values. [11]|`["1.2.3.4", "1.2.3.5"]`|
50
50
|[`rpc.response.metadata.<key>`](/docs/registry/attributes/rpc.md)||`Opt-In`| string[]| RPC response metadata, `<key>` being the normalized RPC metadata key (lowercase), the value being the metadata values. [12]|`["attribute_value"]`|
51
51
52
-
**[1]`rpc.method`:** This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function.name` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).
52
+
**[1]`rpc.method`:** This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function.name` attribute may be used to record the fully-qualified method actually executing the call on the server side, or the RPC client stub method on the client side.
53
53
54
54
**[2]`rpc.response.status_code`:** All status codes except `OK` SHOULD be considered errors.
55
55
56
-
**[3]`rpc.service`:** This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).
56
+
**[3]`rpc.service`:** This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.function.name` attribute may be used to record the fully-qualified method actually executing the call on the server side, or the RPC client stub class on the client side.
57
57
58
58
**[4]`server.address`:** May contain server IP address, DNS name, or local socket name. When host component is an IP address, instrumentations SHOULD NOT do a reverse proxy lookup to obtain DNS name and SHOULD set `server.address` to the IP address provided in the host component.
59
59
@@ -205,9 +205,9 @@ Consider always setting the transport when setting a port number, since
205
205
a port number is ambiguous without knowing the transport. For example
206
206
different processes could be listening on TCP port 12345 and UDP port 12345.
207
207
208
-
**[11]`rpc.method`:** This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function.name` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).
208
+
**[11]`rpc.method`:** This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function.name` attribute may be used to record the fully-qualified method actually executing the call on the server side, or the RPC client stub method on the client side.
209
209
210
-
**[12]`rpc.service`:** This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).
210
+
**[12]`rpc.service`:** This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.function.name` attribute may be used to record the fully-qualified method actually executing the call on the server side, or the RPC client stub class on the client side.
211
211
212
212
**[13]`rpc.request.metadata.<key>`:** Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured.
213
213
Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.
Copy file name to clipboardExpand all lines: docs/rpc/json-rpc.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -49,7 +49,7 @@ are considered errors.
49
49
|[`network.protocol.version`](/docs/registry/attributes/network.md)||`Recommended`| string | The actual version of the protocol used for network communication. [9]|`1.1`; `2`|
50
50
|[`network.transport`](/docs/registry/attributes/network.md)||`Recommended`| string |[OSI transport layer](https://wikipedia.org/wiki/Transport_layer) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication). [10]|`tcp`; `udp`|
51
51
52
-
**[1]`rpc.method`:** This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function.name` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).
52
+
**[1]`rpc.method`:** This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function.name` attribute may be used to record the fully-qualified method actually executing the call on the server side, or the RPC client stub method on the client side.
53
53
54
54
**[2]`server.address`:** May contain server IP address, DNS name, or local socket name. When host component is an IP address, instrumentations SHOULD NOT do a reverse proxy lookup to obtain DNS name and SHOULD set `server.address` to the IP address provided in the host component.
55
55
@@ -151,7 +151,7 @@ are considered errors.
151
151
|[`network.protocol.version`](/docs/registry/attributes/network.md)||`Recommended`| string | The actual version of the protocol used for network communication. [11]|`1.1`; `2`|
152
152
|[`network.transport`](/docs/registry/attributes/network.md)||`Recommended`| string |[OSI transport layer](https://wikipedia.org/wiki/Transport_layer) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication). [12]|`tcp`; `udp`|
153
153
154
-
**[1]`rpc.method`:** This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function.name` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).
154
+
**[1]`rpc.method`:** This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function.name` attribute may be used to record the fully-qualified method actually executing the call on the server side, or the RPC client stub method on the client side.
155
155
156
156
**[2]`server.address`:** May contain server IP address, DNS name, or local socket name. When host component is an IP address, instrumentations SHOULD NOT do a reverse proxy lookup to obtain DNS name and SHOULD set `server.address` to the IP address provided in the host component.
0 commit comments