Skip to content

Latest commit

 

History

History
136 lines (105 loc) · 13.8 KB

File metadata and controls

136 lines (105 loc) · 13.8 KB

RPC

Remote Procedure Call (RPC) Attributes

This document defines attributes for remote procedure calls.

Attribute Type Description Examples Stability
rpc.connect_rpc.error_code string The error codes of the Connect request. Error codes are always string values. cancelled; unknown; invalid_argument Experimental
rpc.connect_rpc.request.metadata.<key> string[] Connect request metadata, <key> being the normalized Connect Metadata key (lowercase), the value being the metadata values. [1] rpc.request.metadata.my-custom-metadata-attribute=["1.2.3.4", "1.2.3.5"] Experimental
rpc.connect_rpc.response.metadata.<key> string[] Connect response metadata, <key> being the normalized Connect Metadata key (lowercase), the value being the metadata values. [2] rpc.response.metadata.my-custom-metadata-attribute=["attribute_value"] Experimental
rpc.grpc.request.metadata.<key> string[] gRPC request metadata, <key> being the normalized gRPC Metadata key (lowercase), the value being the metadata values. [3] rpc.grpc.request.metadata.my-custom-metadata-attribute=["1.2.3.4", "1.2.3.5"] Experimental
rpc.grpc.response.metadata.<key> string[] gRPC response metadata, <key> being the normalized gRPC Metadata key (lowercase), the value being the metadata values. [4] rpc.grpc.response.metadata.my-custom-metadata-attribute=["attribute_value"] Experimental
rpc.grpc.status_code int The numeric status code of the gRPC request. 0; 1; 2 Experimental
rpc.jsonrpc.error_code int error.code property of response if it is an error response. -32700; 100 Experimental
rpc.jsonrpc.error_message string error.message property of response if it is an error response. Parse error; User already exists Experimental
rpc.jsonrpc.request_id string id property of request or response. Since protocol allows id to be int, string, null or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of null value. Omit entirely if this is a notification. 10; request-7; `` Experimental
rpc.jsonrpc.version string Protocol version as in jsonrpc property of request/response. Since JSON-RPC 1.0 doesn't specify this, the value can be omitted. 2.0; 1.0 Experimental
rpc.message.compressed_size int Compressed size of the message in bytes. Experimental
rpc.message.id int MUST be calculated as two different counters starting from 1 one for sent messages and one for received message. [5] Experimental
rpc.message.type string Whether this is a received or sent message. SENT; RECEIVED Experimental
rpc.message.uncompressed_size int Uncompressed size of the message in bytes. Experimental
rpc.method string The name of the (logical) method being called, must be equal to the $method part in the span name. [6] exampleMethod Experimental
rpc.service string The full (logical) name of the service being called, including its package name, if applicable. [7] myservice.EchoService Experimental
rpc.system string A string identifying the remoting system. See below for a list of well-known identifiers. grpc; java_rmi; dotnet_wcf Experimental

[1] rpc.connect_rpc.request.metadata: Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured. Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.

[2] rpc.connect_rpc.response.metadata: Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured. Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.

[3] rpc.grpc.request.metadata: Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured. Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.

[4] rpc.grpc.response.metadata: Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured. Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.

[5] rpc.message.id: This way we guarantee that the values will be consistent between different implementations.

[6] 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 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).

[7] 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).


rpc.connect_rpc.error_code has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

Value Description Stability
aborted aborted Experimental
already_exists already_exists Experimental
cancelled cancelled Experimental
data_loss data_loss Experimental
deadline_exceeded deadline_exceeded Experimental
failed_precondition failed_precondition Experimental
internal internal Experimental
invalid_argument invalid_argument Experimental
not_found not_found Experimental
out_of_range out_of_range Experimental
permission_denied permission_denied Experimental
resource_exhausted resource_exhausted Experimental
unauthenticated unauthenticated Experimental
unavailable unavailable Experimental
unimplemented unimplemented Experimental
unknown unknown Experimental

rpc.grpc.status_code has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

Value Description Stability
0 OK Experimental
1 CANCELLED Experimental
2 UNKNOWN Experimental
3 INVALID_ARGUMENT Experimental
4 DEADLINE_EXCEEDED Experimental
5 NOT_FOUND Experimental
6 ALREADY_EXISTS Experimental
7 PERMISSION_DENIED Experimental
8 RESOURCE_EXHAUSTED Experimental
9 FAILED_PRECONDITION Experimental
10 ABORTED Experimental
11 OUT_OF_RANGE Experimental
12 UNIMPLEMENTED Experimental
13 INTERNAL Experimental
14 UNAVAILABLE Experimental
15 DATA_LOSS Experimental
16 UNAUTHENTICATED Experimental

rpc.message.type has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

Value Description Stability
RECEIVED received Experimental
SENT sent Experimental

rpc.system has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

Value Description Stability
apache_dubbo Apache Dubbo Experimental
connect_rpc Connect RPC Experimental
dotnet_wcf .NET WCF Experimental
grpc gRPC Experimental
java_rmi Java RMI Experimental

Deprecated RPC Attributes

Deprecated rpc message attributes.

Attribute Type Description Examples Stability
message.compressed_size int Deprecated, use rpc.message.compressed_size instead. Deprecated
Replaced by rpc.message.compressed_size.
message.id int Deprecated, use rpc.message.id instead. Deprecated
Replaced by rpc.message.id.
message.type string Deprecated, use rpc.message.type instead. SENT; RECEIVED Deprecated
Replaced by rpc.message.type.
message.uncompressed_size int Deprecated, use rpc.message.uncompressed_size instead. Deprecated
Replaced by rpc.message.uncompressed_size.

message.type has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

Value Description Stability
RECEIVED received Experimental
SENT sent Experimental