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 | |
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"] | |
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"] | |
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"] | |
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"] | |
rpc.grpc.status_code | int | The numeric status code of the gRPC request. | 0 ; 1 ; 2 | |
rpc.jsonrpc.error_code | int | error.code property of response if it is an error response. | -32700 ; 100 | |
rpc.jsonrpc.error_message | string | error.message property of response if it is an error response. | Parse error ; User already exists | |
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 ; `` | |
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 | |
rpc.message.compressed_size | int | Compressed size of the message in bytes. | ||
rpc.message.id | int | MUST be calculated as two different counters starting from 1 one for sent messages and one for received message. [5] | ||
rpc.message.type | string | Whether this is a received or sent message. | SENT ; RECEIVED | |
rpc.message.uncompressed_size | int | Uncompressed size of the message in bytes. | ||
rpc.method | string | The name of the (logical) method being called, must be equal to the $method part in the span name. [6] | exampleMethod | |
rpc.service | string | The full (logical) name of the service being called, including its package name, if applicable. [7] | myservice.EchoService | |
rpc.system | string | A string identifying the remoting system. See below for a list of well-known identifiers. | grpc ; java_rmi ; dotnet_wcf |
[1]: 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]: 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]: 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]: 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]: This way we guarantee that the values will be consistent between different implementations.
[6]: 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]: 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 | |
already_exists | already_exists | |
cancelled | cancelled | |
data_loss | data_loss | |
deadline_exceeded | deadline_exceeded | |
failed_precondition | failed_precondition | |
internal | internal | |
invalid_argument | invalid_argument | |
not_found | not_found | |
out_of_range | out_of_range | |
permission_denied | permission_denied | |
resource_exhausted | resource_exhausted | |
unauthenticated | unauthenticated | |
unavailable | unavailable | |
unimplemented | unimplemented | |
unknown | unknown |
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 | |
1 | CANCELLED | |
2 | UNKNOWN | |
3 | INVALID_ARGUMENT | |
4 | DEADLINE_EXCEEDED | |
5 | NOT_FOUND | |
6 | ALREADY_EXISTS | |
7 | PERMISSION_DENIED | |
8 | RESOURCE_EXHAUSTED | |
9 | FAILED_PRECONDITION | |
10 | ABORTED | |
11 | OUT_OF_RANGE | |
12 | UNIMPLEMENTED | |
13 | INTERNAL | |
14 | UNAVAILABLE | |
15 | DATA_LOSS | |
16 | UNAUTHENTICATED |
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 | |
SENT | sent |
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 | |
connect_rpc | Connect RPC | |
dotnet_wcf | .NET WCF | |
grpc | gRPC | |
java_rmi | Java RMI |
Deprecated RPC Attributes
Deprecated rpc message attributes.
Attribute | Type | Description | Examples | Stability |
---|---|---|---|---|
message.compressed_size | int | Deprecated, use rpc.message.compressed_size instead. | Replaced by rpc.message.compressed_size . | |
message.id | int | Deprecated, use rpc.message.id instead. | Replaced by rpc.message.id . | |
message.type | string | Deprecated, use rpc.message.type instead. | SENT ; RECEIVED | Replaced by rpc.message.type . |
message.uncompressed_size | int | Deprecated, use rpc.message.uncompressed_size instead. | 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 | |
SENT | sent |
Feedback
Was this page helpful?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!