134 lines
14 KiB
Markdown
134 lines
14 KiB
Markdown
<!-- NOTE: THIS FILE IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
|
|
<!-- see templates/registry/markdown/attribute_namespace.md.j2 -->
|
|
|
|
# RPC
|
|
|
|
- [Remote Procedure Call (RPC) Attributes](#remote-procedure-call-rpc-attributes)
|
|
- [Deprecated RPC Attributes](#deprecated-rpc-attributes)
|
|
|
|
## Remote Procedure Call (RPC) Attributes
|
|
|
|
This document defines attributes for remote procedure calls.
|
|
|
|
| Attribute | Type | Description | Examples | Stability |
|
|
|---|---|---|---|---|
|
|
| <a id="rpc-connect-rpc-error-code" href="#rpc-connect-rpc-error-code">`rpc.connect_rpc.error_code`</a> | string | The [error codes](https://connectrpc.com//docs/protocol/#error-codes) of the Connect request. Error codes are always string values. | `cancelled`; `unknown`; `invalid_argument` |  |
|
|
| <a id="rpc-connect-rpc-request-metadata" href="#rpc-connect-rpc-request-metadata">`rpc.connect_rpc.request.metadata.<key>`</a> | 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"]` |  |
|
|
| <a id="rpc-connect-rpc-response-metadata" href="#rpc-connect-rpc-response-metadata">`rpc.connect_rpc.response.metadata.<key>`</a> | 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"]` |  |
|
|
| <a id="rpc-grpc-request-metadata" href="#rpc-grpc-request-metadata">`rpc.grpc.request.metadata.<key>`</a> | 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"]` |  |
|
|
| <a id="rpc-grpc-response-metadata" href="#rpc-grpc-response-metadata">`rpc.grpc.response.metadata.<key>`</a> | 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"]` |  |
|
|
| <a id="rpc-grpc-status-code" href="#rpc-grpc-status-code">`rpc.grpc.status_code`</a> | int | The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. | `0`; `1`; `2` |  |
|
|
| <a id="rpc-jsonrpc-error-code" href="#rpc-jsonrpc-error-code">`rpc.jsonrpc.error_code`</a> | int | `error.code` property of response if it is an error response. | `-32700`; `100` |  |
|
|
| <a id="rpc-jsonrpc-error-message" href="#rpc-jsonrpc-error-message">`rpc.jsonrpc.error_message`</a> | string | `error.message` property of response if it is an error response. | `Parse error`; `User already exists` |  |
|
|
| <a id="rpc-jsonrpc-request-id" href="#rpc-jsonrpc-request-id">`rpc.jsonrpc.request_id`</a> | 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`; `` |  |
|
|
| <a id="rpc-jsonrpc-version" href="#rpc-jsonrpc-version">`rpc.jsonrpc.version`</a> | 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` |  |
|
|
| <a id="rpc-message-compressed-size" href="#rpc-message-compressed-size">`rpc.message.compressed_size`</a> | int | Compressed size of the message in bytes. | |  |
|
|
| <a id="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. [5] | |  |
|
|
| <a id="rpc-message-type" href="#rpc-message-type">`rpc.message.type`</a> | string | Whether this is a received or sent message. | `SENT`; `RECEIVED` |  |
|
|
| <a id="rpc-message-uncompressed-size" href="#rpc-message-uncompressed-size">`rpc.message.uncompressed_size`</a> | int | Uncompressed size of the message in bytes. | |  |
|
|
| <a id="rpc-method" href="#rpc-method">`rpc.method`</a> | string | The name of the (logical) method being called, must be equal to the $method part in the span name. [6] | `exampleMethod` |  |
|
|
| <a id="rpc-service" href="#rpc-service">`rpc.service`</a> | string | The full (logical) name of the service being called, including its package name, if applicable. [7] | `myservice.EchoService` |  |
|
|
| <a id="rpc-system" href="#rpc-system">`rpc.system`</a> | string | A string identifying the remoting system. See below for a list of well-known identifiers. | `grpc`; `java_rmi`; `dotnet_wcf` |  |
|
|
|
|
**[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.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).
|
|
|
|
**[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 |  |
|
|
| `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 |
|
|
|---|---|---|---|---|
|
|
| <a id="message-compressed-size" href="#message-compressed-size">`message.compressed_size`</a> | int | Deprecated, use `rpc.message.compressed_size` instead. | | <br>Replaced by `rpc.message.compressed_size`. |
|
|
| <a id="message-id" href="#message-id">`message.id`</a> | int | Deprecated, use `rpc.message.id` instead. | | <br>Replaced by `rpc.message.id`. |
|
|
| <a id="message-type" href="#message-type">`message.type`</a> | string | Deprecated, use `rpc.message.type` instead. | `SENT`; `RECEIVED` | <br>Replaced by `rpc.message.type`. |
|
|
| <a id="message-uncompressed-size" href="#message-uncompressed-size">`message.uncompressed_size`</a> | int | Deprecated, use `rpc.message.uncompressed_size` instead. | | <br>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 |  |
|