Improve symmetry in client/server address/port text (#244)
This commit is contained in:
parent
d5b8de488c
commit
a0143da118
|
|
@ -67,12 +67,23 @@ Some database systems may allow a connection to switch to a different `db.user`,
|
|||
| `db.user` | string | Username for accessing the database. | `readonly_user`; `reporting_user` | Recommended |
|
||||
| [`network.transport`](../general/attributes.md) | string | [OSI Transport Layer](https://osi-model.com/transport-layer/) or [Inter-process Communication method](https://en.wikipedia.org/wiki/Inter-process_communication). The value SHOULD be normalized to lowercase. | `tcp`; `udp` | Recommended |
|
||||
| [`network.type`](../general/attributes.md) | string | [OSI Network Layer](https://osi-model.com/network-layer/) or non-OSI equivalent. The value SHOULD be normalized to lowercase. | `ipv4`; `ipv6` | Recommended |
|
||||
| [`server.address`](../general/attributes.md) | string | Name of the database host. | `example.com` | Conditionally Required: See alternative attributes below. |
|
||||
| [`server.port`](../general/attributes.md) | int | Logical server port number | `80`; `8080`; `443` | Conditionally Required: [1] |
|
||||
| [`server.socket.address`](../general/attributes.md) | string | Physical server IP address or Unix socket address. If set from the client, should simply use the socket's peer address, and not attempt to find any actual server IP (i.e., if set from client, this may represent some proxy server instead of the logical server). | `10.5.3.2` | See below |
|
||||
| [`server.socket.port`](../general/attributes.md) | int | Physical server port. | `16456` | Recommended: If different than `server.port`. |
|
||||
| [`server.address`](../general/attributes.md) | string | Name of the database host. [1] | `example.com` | Conditionally Required: See alternative attributes below. |
|
||||
| [`server.port`](../general/attributes.md) | int | Server port number [2] | `80`; `8080`; `443` | Conditionally Required: [3] |
|
||||
| [`server.socket.address`](../general/attributes.md) | string | Server address of the socket connection - IP address or Unix domain socket name. [4] | `10.5.3.2` | See below |
|
||||
| [`server.socket.port`](../general/attributes.md) | int | Server port number of the socket connection. [5] | `16456` | Recommended: If different than `server.port`. |
|
||||
|
||||
**[1]:** If using a port other than the default port for this DBMS and if `server.address` is set.
|
||||
**[1]:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent
|
||||
the server address behind any intermediaries (e.g. proxies) if it's available.
|
||||
|
||||
**[2]:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries (e.g. proxies) if it's available.
|
||||
|
||||
**[3]:** If using a port other than the default port for this DBMS and if `server.address` is set.
|
||||
|
||||
**[4]:** When observed from the client side, this SHOULD represent the immediate server peer address.
|
||||
When observed from the server side, this SHOULD represent the physical server address.
|
||||
|
||||
**[5]:** When observed from the client side, this SHOULD represent the immediate server peer port.
|
||||
When observed from the server side, this SHOULD represent the physical server port.
|
||||
|
||||
**Additional attribute requirements:** At least one of the following sets of attributes is required:
|
||||
|
||||
|
|
|
|||
|
|
@ -40,9 +40,9 @@ in order to map the path part values to their names.
|
|||
| [`db.operation`](database-spans.md) | string | The endpoint identifier for the request. [1] | `search`; `ml.close_job`; `cat.aliases` | Required |
|
||||
| [`db.statement`](database-spans.md) | string | The request body for a [search-type query](https://www.elastic.co/guide/en/elasticsearch/reference/current/search.html), as a json string. | `"{\"query\":{\"term\":{\"user.id\":\"kimchy\"}}}"` | Recommended: [2] |
|
||||
| `http.request.method` | string | HTTP request method. [3] | `GET`; `POST`; `HEAD` | Required |
|
||||
| [`server.address`](../general/attributes.md) | string | Logical server hostname, matches server FQDN if available, and IP or socket address if FQDN is not known. | `example.com` | See below |
|
||||
| [`server.port`](../general/attributes.md) | int | Logical server port number | `80`; `8080`; `443` | Recommended |
|
||||
| [`url.full`](../url/url.md) | string | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) [4] | `https://localhost:9200/index/_search?q=user.id:kimchy` | Required |
|
||||
| [`server.address`](../general/attributes.md) | string | Server address - domain name if available without reverse DNS lookup, otherwise IP address or Unix domain socket name. [4] | `example.com` | See below |
|
||||
| [`server.port`](../general/attributes.md) | int | Server port number [5] | `80`; `8080`; `443` | Recommended |
|
||||
| [`url.full`](../url/url.md) | string | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) [6] | `https://localhost:9200/index/_search?q=user.id:kimchy` | Required |
|
||||
|
||||
**[1]:** When setting this to an SQL keyword, it is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if the operation name is provided by the library being instrumented. If the SQL statement has an ambiguous operation, or performs more than one operation, this value may be omitted.
|
||||
|
||||
|
|
@ -64,7 +64,12 @@ HTTP method names are case-sensitive and `http.request.method` attribute value M
|
|||
Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, SHOULD populate a canonical equivalent.
|
||||
Tracing instrumentations that do so, MUST also set `http.request.method_original` to the original value.
|
||||
|
||||
**[4]:** For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
|
||||
**[4]:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent
|
||||
the server address behind any intermediaries (e.g. proxies) if it's available.
|
||||
|
||||
**[5]:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries (e.g. proxies) if it's available.
|
||||
|
||||
**[6]:** For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
|
||||
`url.full` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case username and password should be redacted and attribute's value should be `https://REDACTED:REDACTED@www.example.com/`.
|
||||
`url.full` SHOULD capture the absolute URL when it is available (or can be reconstructed) and SHOULD NOT be validated or modified except for sanitizing purposes.
|
||||
<!-- endsemconv -->
|
||||
|
|
|
|||
|
|
@ -55,13 +55,24 @@ if they do not cause breaking changes to HTTP semantic conventions.
|
|||
<!-- semconv server -->
|
||||
| Attribute | Type | Description | Examples | Requirement Level |
|
||||
|---|---|---|---|---|
|
||||
| `server.address` | string | Logical server hostname, matches server FQDN if available, and IP or socket address if FQDN is not known. | `example.com` | Recommended |
|
||||
| `server.port` | int | Logical server port number | `80`; `8080`; `443` | Recommended |
|
||||
| `server.socket.domain` | string | The domain name of an immediate peer. [1] | `proxy.example.com` | Recommended: If different than `server.address`. |
|
||||
| `server.socket.address` | string | Physical server IP address or Unix socket address. If set from the client, should simply use the socket's peer address, and not attempt to find any actual server IP (i.e., if set from client, this may represent some proxy server instead of the logical server). | `10.5.3.2` | Recommended: If different than `server.address`. |
|
||||
| `server.socket.port` | int | Physical server port. | `16456` | Recommended: If different than `server.port`. |
|
||||
| `server.address` | string | Server address - domain name if available without reverse DNS lookup, otherwise IP address or Unix domain socket name. [1] | `example.com` | Recommended |
|
||||
| `server.port` | int | Server port number [2] | `80`; `8080`; `443` | Recommended |
|
||||
| `server.socket.domain` | string | Immediate server peer's domain name if available without reverse DNS lookup [3] | `proxy.example.com` | Recommended: If different than `server.address`. |
|
||||
| `server.socket.address` | string | Server address of the socket connection - IP address or Unix domain socket name. [4] | `10.5.3.2` | Recommended: If different than `server.address`. |
|
||||
| `server.socket.port` | int | Server port number of the socket connection. [5] | `16456` | Recommended: If different than `server.port`. |
|
||||
|
||||
**[1]:** Typically observed from the client side, and represents a proxy or other intermediary domain name.
|
||||
**[1]:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent
|
||||
the server address behind any intermediaries (e.g. proxies) if it's available.
|
||||
|
||||
**[2]:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries (e.g. proxies) if it's available.
|
||||
|
||||
**[3]:** Typically observed from the client side, and represents a proxy or other intermediary domain name.
|
||||
|
||||
**[4]:** When observed from the client side, this SHOULD represent the immediate server peer address.
|
||||
When observed from the server side, this SHOULD represent the physical server address.
|
||||
|
||||
**[5]:** When observed from the client side, this SHOULD represent the immediate server peer port.
|
||||
When observed from the server side, this SHOULD represent the physical server port.
|
||||
<!-- endsemconv -->
|
||||
|
||||
`server.address` and `server.port` represent logical server name and port. Semantic conventions that refer to these attributes SHOULD
|
||||
|
|
@ -117,14 +128,20 @@ if they do not cause breaking changes to HTTP semantic conventions.
|
|||
<!-- semconv client -->
|
||||
| Attribute | Type | Description | Examples | Requirement Level |
|
||||
|---|---|---|---|---|
|
||||
| `client.address` | string | Client address - unix domain socket name, IPv4 or IPv6 address. [1] | `/tmp/my.sock`; `10.1.2.80` | Recommended |
|
||||
| `client.port` | int | Client port number [2] | `65123` | Recommended |
|
||||
| `client.socket.address` | string | Immediate client peer address - unix domain socket name, IPv4 or IPv6 address. | `/tmp/my.sock`; `127.0.0.1` | Recommended: If different than `client.address`. |
|
||||
| `client.socket.port` | int | Immediate client peer port number | `35555` | Recommended: If different than `client.port`. |
|
||||
| `client.address` | string | Client address - IP address or Unix domain socket name. [1] | `/tmp/my.sock`; `10.1.2.80` | Recommended |
|
||||
| `client.port` | int | Client port number. [2] | `65123` | Recommended |
|
||||
| `client.socket.address` | string | Client address of the socket connection - IP address or Unix domain socket name. [3] | `/tmp/my.sock`; `127.0.0.1` | Recommended: If different than `client.address`. |
|
||||
| `client.socket.port` | int | Client port number of the socket connection. [4] | `35555` | Recommended: If different than `client.port`. |
|
||||
|
||||
**[1]:** When observed from the server side, and when communicating through an intermediary, `client.address` SHOULD represent client address behind any intermediaries (e.g. proxies) if it's available.
|
||||
**[1]:** When observed from the server side, and when communicating through an intermediary, `client.address` SHOULD represent the client address behind any intermediaries (e.g. proxies) if it's available.
|
||||
|
||||
**[2]:** When observed from the server side, and when communicating through an intermediary, `client.port` SHOULD represent client port behind any intermediaries (e.g. proxies) if it's available.
|
||||
**[2]:** When observed from the server side, and when communicating through an intermediary, `client.port` SHOULD represent the client port behind any intermediaries (e.g. proxies) if it's available.
|
||||
|
||||
**[3]:** When observed from the server side, this SHOULD represent the immediate client peer address.
|
||||
When observed from the client side, this SHOULD represent the physical client address.
|
||||
|
||||
**[4]:** When observed from the server side, this SHOULD represent the immediate client peer port.
|
||||
When observed from the client side, this SHOULD represent the physical client port.
|
||||
<!-- endsemconv -->
|
||||
|
||||
`client.socket.address` and `client.socket.port` represent physical client name and port.
|
||||
|
|
|
|||
|
|
@ -391,7 +391,7 @@ of `[ 0, 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5,
|
|||
| [`network.protocol.version`](../general/attributes.md) | string | Version of the application layer protocol used. See note below. [2] | `3.1.1` | Recommended |
|
||||
| [`server.address`](../general/attributes.md) | string | Host identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to. [3] | `example.com` | Required |
|
||||
| [`server.port`](../general/attributes.md) | int | Port identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to. [4] | `80`; `8080`; `443` | Conditionally Required: [5] |
|
||||
| [`server.socket.address`](../general/attributes.md) | string | Physical server IP address or Unix socket address. If set from the client, should simply use the socket's peer address, and not attempt to find any actual server IP (i.e., if set from client, this may represent some proxy server instead of the logical server). | `10.5.3.2` | Recommended: If different than `server.address`. |
|
||||
| [`server.socket.address`](../general/attributes.md) | string | Server address of the socket connection - IP address or Unix domain socket name. [6] | `10.5.3.2` | Recommended: If different than `server.address`. |
|
||||
|
||||
**[1]:** HTTP request method value SHOULD be "known" to the instrumentation.
|
||||
By default, this convention defines "known" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods)
|
||||
|
|
@ -423,6 +423,9 @@ SHOULD NOT be set if capturing it would require an extra DNS lookup.
|
|||
|
||||
**[5]:** If not default (`80` for `http` scheme, `443` for `https`).
|
||||
|
||||
**[6]:** When observed from the client side, this SHOULD represent the immediate server peer address.
|
||||
When observed from the server side, this SHOULD represent the physical server address.
|
||||
|
||||
`http.request.method` 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 |
|
||||
|
|
@ -460,7 +463,7 @@ This metric is optional.
|
|||
| [`network.protocol.version`](../general/attributes.md) | string | Version of the application layer protocol used. See note below. [2] | `3.1.1` | Recommended |
|
||||
| [`server.address`](../general/attributes.md) | string | Host identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to. [3] | `example.com` | Required |
|
||||
| [`server.port`](../general/attributes.md) | int | Port identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to. [4] | `80`; `8080`; `443` | Conditionally Required: [5] |
|
||||
| [`server.socket.address`](../general/attributes.md) | string | Physical server IP address or Unix socket address. If set from the client, should simply use the socket's peer address, and not attempt to find any actual server IP (i.e., if set from client, this may represent some proxy server instead of the logical server). | `10.5.3.2` | Recommended: If different than `server.address`. |
|
||||
| [`server.socket.address`](../general/attributes.md) | string | Server address of the socket connection - IP address or Unix domain socket name. [6] | `10.5.3.2` | Recommended: If different than `server.address`. |
|
||||
|
||||
**[1]:** HTTP request method value SHOULD be "known" to the instrumentation.
|
||||
By default, this convention defines "known" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods)
|
||||
|
|
@ -492,6 +495,9 @@ SHOULD NOT be set if capturing it would require an extra DNS lookup.
|
|||
|
||||
**[5]:** If not default (`80` for `http` scheme, `443` for `https`).
|
||||
|
||||
**[6]:** When observed from the client side, this SHOULD represent the immediate server peer address.
|
||||
When observed from the server side, this SHOULD represent the physical server address.
|
||||
|
||||
`http.request.method` 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 |
|
||||
|
|
@ -529,7 +535,7 @@ This metric is optional.
|
|||
| [`network.protocol.version`](../general/attributes.md) | string | Version of the application layer protocol used. See note below. [2] | `3.1.1` | Recommended |
|
||||
| [`server.address`](../general/attributes.md) | string | Host identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to. [3] | `example.com` | Required |
|
||||
| [`server.port`](../general/attributes.md) | int | Port identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to. [4] | `80`; `8080`; `443` | Conditionally Required: [5] |
|
||||
| [`server.socket.address`](../general/attributes.md) | string | Physical server IP address or Unix socket address. If set from the client, should simply use the socket's peer address, and not attempt to find any actual server IP (i.e., if set from client, this may represent some proxy server instead of the logical server). | `10.5.3.2` | Recommended: If different than `server.address`. |
|
||||
| [`server.socket.address`](../general/attributes.md) | string | Server address of the socket connection - IP address or Unix domain socket name. [6] | `10.5.3.2` | Recommended: If different than `server.address`. |
|
||||
|
||||
**[1]:** HTTP request method value SHOULD be "known" to the instrumentation.
|
||||
By default, this convention defines "known" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods)
|
||||
|
|
@ -561,6 +567,9 @@ SHOULD NOT be set if capturing it would require an extra DNS lookup.
|
|||
|
||||
**[5]:** If not default (`80` for `http` scheme, `443` for `https`).
|
||||
|
||||
**[6]:** When observed from the client side, this SHOULD represent the immediate server peer address.
|
||||
When observed from the server side, this SHOULD represent the physical server address.
|
||||
|
||||
`http.request.method` 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 |
|
||||
|
|
|
|||
|
|
@ -199,10 +199,10 @@ For an HTTP client span, `SpanKind` MUST be `Client`.
|
|||
| `http.resend_count` | int | The ordinal number of request resending attempt (for any reason, including redirects). [1] | `3` | Recommended: if and only if request was retried. |
|
||||
| [`server.address`](../general/attributes.md) | string | Host identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to. [2] | `example.com` | Required |
|
||||
| [`server.port`](../general/attributes.md) | int | Port identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to. [3] | `80`; `8080`; `443` | Conditionally Required: [4] |
|
||||
| [`server.socket.address`](../general/attributes.md) | string | Physical server IP address or Unix socket address. If set from the client, should simply use the socket's peer address, and not attempt to find any actual server IP (i.e., if set from client, this may represent some proxy server instead of the logical server). | `10.5.3.2` | Recommended: If different than `server.address`. |
|
||||
| [`server.socket.domain`](../general/attributes.md) | string | The domain name of an immediate peer. [5] | `proxy.example.com` | Recommended: If different than `server.address`. |
|
||||
| [`server.socket.port`](../general/attributes.md) | int | Physical server port. | `16456` | Recommended: If different than `server.port`. |
|
||||
| [`url.full`](../url/url.md) | string | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) [6] | `https://www.foo.bar/search?q=OpenTelemetry#SemConv`; `//localhost` | Required |
|
||||
| [`server.socket.address`](../general/attributes.md) | string | Server address of the socket connection - IP address or Unix domain socket name. [5] | `10.5.3.2` | Recommended: If different than `server.address`. |
|
||||
| [`server.socket.domain`](../general/attributes.md) | string | Immediate server peer's domain name if available without reverse DNS lookup [6] | `proxy.example.com` | Recommended: If different than `server.address`. |
|
||||
| [`server.socket.port`](../general/attributes.md) | int | Server port number of the socket connection. [7] | `16456` | Recommended: If different than `server.port`. |
|
||||
| [`url.full`](../url/url.md) | string | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) [8] | `https://www.foo.bar/search?q=OpenTelemetry#SemConv`; `//localhost` | Required |
|
||||
|
||||
**[1]:** The resend count SHOULD be updated each time an HTTP request gets resent by the client, regardless of what was the cause of the resending (e.g. redirection, authorization failure, 503 Server Unavailable, network issues, or any other).
|
||||
|
||||
|
|
@ -219,9 +219,15 @@ If an HTTP client request is explicitly made to an IP address, e.g. `http://x.x.
|
|||
|
||||
**[4]:** If not default (`80` for `http` scheme, `443` for `https`).
|
||||
|
||||
**[5]:** Typically observed from the client side, and represents a proxy or other intermediary domain name.
|
||||
**[5]:** When observed from the client side, this SHOULD represent the immediate server peer address.
|
||||
When observed from the server side, this SHOULD represent the physical server address.
|
||||
|
||||
**[6]:** For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
|
||||
**[6]:** Typically observed from the client side, and represents a proxy or other intermediary domain name.
|
||||
|
||||
**[7]:** When observed from the client side, this SHOULD represent the immediate server peer port.
|
||||
When observed from the server side, this SHOULD represent the physical server port.
|
||||
|
||||
**[8]:** For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
|
||||
`url.full` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case username and password should be redacted and attribute's value should be `https://REDACTED:REDACTED@www.example.com/`.
|
||||
`url.full` SHOULD capture the absolute URL when it is available (or can be reconstructed) and SHOULD NOT be validated or modified except for sanitizing purposes.
|
||||
|
||||
|
|
@ -327,16 +333,16 @@ If the route cannot be determined, the `name` attribute MUST be set as defined i
|
|||
| Attribute | Type | Description | Examples | Requirement Level |
|
||||
|---|---|---|---|---|
|
||||
| `http.route` | string | The matched route (path template in the format used by the respective server framework). See note below [1] | `/users/:userID?`; `{controller}/{action}/{id?}` | Conditionally Required: If and only if it's available |
|
||||
| [`client.address`](../general/attributes.md) | string | Client address - unix domain socket name, IPv4 or IPv6 address. [2] | `83.164.160.102` | Recommended |
|
||||
| [`client.address`](../general/attributes.md) | string | Client address - IP address or Unix domain socket name. [2] | `83.164.160.102` | Recommended |
|
||||
| [`client.port`](../general/attributes.md) | int | The port of the original client behind all proxies, if known (e.g. from [Forwarded](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Forwarded) or a similar header). Otherwise, the immediate client peer port. [3] | `65123` | Recommended |
|
||||
| [`client.socket.address`](../general/attributes.md) | string | Immediate client peer address - unix domain socket name, IPv4 or IPv6 address. | `/tmp/my.sock`; `127.0.0.1` | Recommended: If different than `client.address`. |
|
||||
| [`client.socket.port`](../general/attributes.md) | int | Immediate client peer port number | `35555` | Recommended: If different than `client.port`. |
|
||||
| [`server.address`](../general/attributes.md) | string | Name of the local HTTP server that received the request. [4] | `example.com` | Recommended |
|
||||
| [`server.port`](../general/attributes.md) | int | Port of the local HTTP server that received the request. [5] | `80`; `8080`; `443` | Recommended: [6] |
|
||||
| [`server.socket.address`](../general/attributes.md) | string | Local socket address. Useful in case of a multi-IP host. | `10.5.3.2` | Opt-In |
|
||||
| [`server.socket.port`](../general/attributes.md) | int | Local socket port. Useful in case of a multi-port host. | `16456` | Opt-In |
|
||||
| [`url.path`](../url/url.md) | string | The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component [7] | `/search` | Required |
|
||||
| [`url.query`](../url/url.md) | string | The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component [8] | `q=OpenTelemetry` | Conditionally Required: If and only if one was received/sent. |
|
||||
| [`client.socket.address`](../general/attributes.md) | string | Client address of the socket connection - IP address or Unix domain socket name. [4] | `/tmp/my.sock`; `127.0.0.1` | Recommended: If different than `client.address`. |
|
||||
| [`client.socket.port`](../general/attributes.md) | int | Client port number of the socket connection. [5] | `35555` | Recommended: If different than `client.port`. |
|
||||
| [`server.address`](../general/attributes.md) | string | Name of the local HTTP server that received the request. [6] | `example.com` | Recommended |
|
||||
| [`server.port`](../general/attributes.md) | int | Port of the local HTTP server that received the request. [7] | `80`; `8080`; `443` | Recommended: [8] |
|
||||
| [`server.socket.address`](../general/attributes.md) | string | Local socket address. Useful in case of a multi-IP host. [9] | `10.5.3.2` | Opt-In |
|
||||
| [`server.socket.port`](../general/attributes.md) | int | Local socket port. Useful in case of a multi-port host. [10] | `16456` | Opt-In |
|
||||
| [`url.path`](../url/url.md) | string | The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component [11] | `/search` | Required |
|
||||
| [`url.query`](../url/url.md) | string | The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component [12] | `q=OpenTelemetry` | Conditionally Required: If and only if one was received/sent. |
|
||||
| [`url.scheme`](../url/url.md) | string | The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol. | `http`; `https` | Required |
|
||||
|
||||
**[1]:** MUST NOT be populated when this is not supported by the HTTP server framework as the route attribute should have low-cardinality and the URI path can NOT substitute it.
|
||||
|
|
@ -344,9 +350,15 @@ SHOULD include the [application root](/docs/http/http-spans.md#http-server-defin
|
|||
|
||||
**[2]:** The IP address of the original client behind all proxies, if known (e.g. from [Forwarded](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Forwarded), [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For), or a similar header). Otherwise, the immediate client peer address.
|
||||
|
||||
**[3]:** When observed from the server side, and when communicating through an intermediary, `client.port` SHOULD represent client port behind any intermediaries (e.g. proxies) if it's available.
|
||||
**[3]:** When observed from the server side, and when communicating through an intermediary, `client.port` SHOULD represent the client port behind any intermediaries (e.g. proxies) if it's available.
|
||||
|
||||
**[4]:** Determined by using the first of the following that applies
|
||||
**[4]:** When observed from the server side, this SHOULD represent the immediate client peer address.
|
||||
When observed from the client side, this SHOULD represent the physical client address.
|
||||
|
||||
**[5]:** When observed from the server side, this SHOULD represent the immediate client peer port.
|
||||
When observed from the client side, this SHOULD represent the physical client port.
|
||||
|
||||
**[6]:** Determined by using the first of the following that applies
|
||||
|
||||
- The [primary server name](/docs/http/http-spans.md#http-server-definitions) of the matched virtual host. MUST only
|
||||
include host identifier.
|
||||
|
|
@ -356,18 +368,24 @@ SHOULD include the [application root](/docs/http/http-spans.md#http-server-defin
|
|||
|
||||
SHOULD NOT be set if only IP address is available and capturing name would require a reverse DNS lookup.
|
||||
|
||||
**[5]:** Determined by using the first of the following that applies
|
||||
**[7]:** Determined by using the first of the following that applies
|
||||
|
||||
- Port identifier of the [primary server host](/docs/http/http-spans.md#http-server-definitions) of the matched virtual host.
|
||||
- Port identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource)
|
||||
if it's sent in absolute-form.
|
||||
- Port identifier of the `Host` header
|
||||
|
||||
**[6]:** If not default (`80` for `http` scheme, `443` for `https`).
|
||||
**[8]:** If not default (`80` for `http` scheme, `443` for `https`).
|
||||
|
||||
**[7]:** When missing, the value is assumed to be `/`
|
||||
**[9]:** When observed from the client side, this SHOULD represent the immediate server peer address.
|
||||
When observed from the server side, this SHOULD represent the physical server address.
|
||||
|
||||
**[8]:** Sensitive content provided in query string SHOULD be scrubbed when instrumentations can identify it.
|
||||
**[10]:** When observed from the client side, this SHOULD represent the immediate server peer port.
|
||||
When observed from the server side, this SHOULD represent the physical server port.
|
||||
|
||||
**[11]:** When missing, the value is assumed to be `/`
|
||||
|
||||
**[12]:** Sensitive content provided in query string SHOULD be scrubbed when instrumentations can identify it.
|
||||
|
||||
Following attributes MUST be provided **at span creation time** (when provided at all), so they can be considered for sampling decisions:
|
||||
|
||||
|
|
|
|||
|
|
@ -231,10 +231,10 @@ The following operations related to messages are defined for these semantic conv
|
|||
| [`network.protocol.version`](../general/attributes.md) | string | Version of the application layer protocol used. See note below. [14] | `3.1.1` | Recommended |
|
||||
| [`network.transport`](../general/attributes.md) | string | [OSI Transport Layer](https://osi-model.com/transport-layer/) or [Inter-process Communication method](https://en.wikipedia.org/wiki/Inter-process_communication). The value SHOULD be normalized to lowercase. | `tcp`; `udp` | Recommended |
|
||||
| [`network.type`](../general/attributes.md) | string | [OSI Network Layer](https://osi-model.com/network-layer/) or non-OSI equivalent. The value SHOULD be normalized to lowercase. | `ipv4`; `ipv6` | Recommended |
|
||||
| [`server.address`](../general/attributes.md) | string | Logical server hostname, matches server FQDN if available, and IP or socket address if FQDN is not known. [15] | `example.com` | Conditionally Required: If available. |
|
||||
| [`server.socket.address`](../general/attributes.md) | string | Physical server IP address or Unix socket address. If set from the client, should simply use the socket's peer address, and not attempt to find any actual server IP (i.e., if set from client, this may represent some proxy server instead of the logical server). | `10.5.3.2` | Recommended: If different than `server.address`. |
|
||||
| [`server.socket.domain`](../general/attributes.md) | string | The domain name of an immediate peer. [16] | `proxy.example.com` | Recommended: [17] |
|
||||
| [`server.socket.port`](../general/attributes.md) | int | Physical server port. | `16456` | Recommended: If different than `server.port`. |
|
||||
| [`server.address`](../general/attributes.md) | string | Server address - domain name if available without reverse DNS lookup, otherwise IP address or Unix domain socket name. [15] | `example.com` | Conditionally Required: If available. |
|
||||
| [`server.socket.address`](../general/attributes.md) | string | Server address of the socket connection - IP address or Unix domain socket name. [16] | `10.5.3.2` | Recommended: If different than `server.address`. |
|
||||
| [`server.socket.domain`](../general/attributes.md) | string | Immediate server peer's domain name if available without reverse DNS lookup [17] | `proxy.example.com` | Recommended: [18] |
|
||||
| [`server.socket.port`](../general/attributes.md) | int | Server port number of the socket connection. [19] | `16456` | Recommended: If different than `server.port`. |
|
||||
|
||||
**[1]:** If a custom value is used, it MUST be of low cardinality.
|
||||
|
||||
|
|
@ -267,9 +267,15 @@ the broker does not have such notion, the destination name SHOULD uniquely ident
|
|||
|
||||
**[15]:** This should be the IP/hostname of the broker (or other network-level peer) this specific message is sent to/received from.
|
||||
|
||||
**[16]:** Typically observed from the client side, and represents a proxy or other intermediary domain name.
|
||||
**[16]:** When observed from the client side, this SHOULD represent the immediate server peer address.
|
||||
When observed from the server side, this SHOULD represent the physical server address.
|
||||
|
||||
**[17]:** If different than `server.address` and if `server.socket.address` is set.
|
||||
**[17]:** Typically observed from the client side, and represents a proxy or other intermediary domain name.
|
||||
|
||||
**[18]:** If different than `server.address` and if `server.socket.address` is set.
|
||||
|
||||
**[19]:** When observed from the client side, this SHOULD represent the immediate server peer port.
|
||||
When observed from the server side, this SHOULD represent the physical server port.
|
||||
|
||||
`messaging.operation` 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.
|
||||
|
||||
|
|
|
|||
|
|
@ -196,9 +196,9 @@ measurements.
|
|||
| [`network.transport`](../general/attributes.md) | string | [OSI Transport Layer](https://osi-model.com/transport-layer/) or [Inter-process Communication method](https://en.wikipedia.org/wiki/Inter-process_communication). The value SHOULD be normalized to lowercase. | `tcp`; `udp` | Recommended |
|
||||
| [`network.type`](../general/attributes.md) | string | [OSI Network Layer](https://osi-model.com/network-layer/) or non-OSI equivalent. The value SHOULD be normalized to lowercase. | `ipv4`; `ipv6` | Recommended |
|
||||
| [`server.address`](../general/attributes.md) | string | RPC server [host name](https://grpc.github.io/grpc/core/md_doc_naming.html). [3] | `example.com` | Required |
|
||||
| [`server.port`](../general/attributes.md) | int | Logical server port number | `80`; `8080`; `443` | Conditionally Required: See below |
|
||||
| [`server.socket.address`](../general/attributes.md) | string | Physical server IP address or Unix socket address. If set from the client, should simply use the socket's peer address, and not attempt to find any actual server IP (i.e., if set from client, this may represent some proxy server instead of the logical server). | `10.5.3.2` | See below |
|
||||
| [`server.socket.port`](../general/attributes.md) | int | Physical server port. | `16456` | Recommended: [4] |
|
||||
| [`server.port`](../general/attributes.md) | int | Server port number [4] | `80`; `8080`; `443` | Conditionally Required: See below |
|
||||
| [`server.socket.address`](../general/attributes.md) | string | Server address of the socket connection - IP address or Unix domain socket name. [5] | `10.5.3.2` | See below |
|
||||
| [`server.socket.port`](../general/attributes.md) | int | Server port number of the socket connection. [6] | `16456` | Recommended: [7] |
|
||||
|
||||
**[1]:** 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).
|
||||
|
||||
|
|
@ -206,7 +206,15 @@ measurements.
|
|||
|
||||
**[3]:** 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.
|
||||
|
||||
**[4]:** If different than `server.port` and if `server.socket.address` is set.
|
||||
**[4]:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries (e.g. proxies) if it's available.
|
||||
|
||||
**[5]:** When observed from the client side, this SHOULD represent the immediate server peer address.
|
||||
When observed from the server side, this SHOULD represent the physical server address.
|
||||
|
||||
**[6]:** When observed from the client side, this SHOULD represent the immediate server peer port.
|
||||
When observed from the server side, this SHOULD represent the physical server port.
|
||||
|
||||
**[7]:** If different than `server.port` and if `server.socket.address` is set.
|
||||
|
||||
**Additional attribute requirements:** At least one of the following sets of attributes is required:
|
||||
|
||||
|
|
|
|||
|
|
@ -89,9 +89,9 @@ Examples of span names:
|
|||
| [`network.transport`](../general/attributes.md) | string | [OSI Transport Layer](https://osi-model.com/transport-layer/) or [Inter-process Communication method](https://en.wikipedia.org/wiki/Inter-process_communication). The value SHOULD be normalized to lowercase. | `tcp`; `udp` | Recommended |
|
||||
| [`network.type`](../general/attributes.md) | string | [OSI Network Layer](https://osi-model.com/network-layer/) or non-OSI equivalent. The value SHOULD be normalized to lowercase. | `ipv4`; `ipv6` | Recommended |
|
||||
| [`server.address`](../general/attributes.md) | string | RPC server [host name](https://grpc.github.io/grpc/core/md_doc_naming.html). [3] | `example.com` | Required |
|
||||
| [`server.port`](../general/attributes.md) | int | Logical server port number | `80`; `8080`; `443` | Conditionally Required: See below |
|
||||
| [`server.socket.address`](../general/attributes.md) | string | Physical server IP address or Unix socket address. If set from the client, should simply use the socket's peer address, and not attempt to find any actual server IP (i.e., if set from client, this may represent some proxy server instead of the logical server). | `10.5.3.2` | See below |
|
||||
| [`server.socket.port`](../general/attributes.md) | int | Physical server port. | `16456` | Recommended: [4] |
|
||||
| [`server.port`](../general/attributes.md) | int | Server port number [4] | `80`; `8080`; `443` | Conditionally Required: See below |
|
||||
| [`server.socket.address`](../general/attributes.md) | string | Server address of the socket connection - IP address or Unix domain socket name. [5] | `10.5.3.2` | See below |
|
||||
| [`server.socket.port`](../general/attributes.md) | int | Server port number of the socket connection. [6] | `16456` | Recommended: [7] |
|
||||
|
||||
**[1]:** 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).
|
||||
|
||||
|
|
@ -99,7 +99,15 @@ Examples of span names:
|
|||
|
||||
**[3]:** 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.
|
||||
|
||||
**[4]:** If different than `server.port` and if `server.socket.address` is set.
|
||||
**[4]:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries (e.g. proxies) if it's available.
|
||||
|
||||
**[5]:** When observed from the client side, this SHOULD represent the immediate server peer address.
|
||||
When observed from the server side, this SHOULD represent the physical server address.
|
||||
|
||||
**[6]:** When observed from the client side, this SHOULD represent the immediate server peer port.
|
||||
When observed from the server side, this SHOULD represent the physical server port.
|
||||
|
||||
**[7]:** If different than `server.port` and if `server.socket.address` is set.
|
||||
|
||||
**Additional attribute requirements:** At least one of the following sets of attributes is required:
|
||||
|
||||
|
|
@ -139,7 +147,7 @@ Generally, a user SHOULD NOT set `peer.service` to a fully qualified RPC service
|
|||
<!-- semconv rpc.client -->
|
||||
| Attribute | Type | Description | Examples | Requirement Level |
|
||||
|---|---|---|---|---|
|
||||
| [`server.socket.domain`](../general/attributes.md) | string | The domain name of an immediate peer. [1] | `proxy.example.com` | Recommended: [2] |
|
||||
| [`server.socket.domain`](../general/attributes.md) | string | Immediate server peer's domain name if available without reverse DNS lookup [1] | `proxy.example.com` | Recommended: [2] |
|
||||
|
||||
**[1]:** Typically observed from the client side, and represents a proxy or other intermediary domain name.
|
||||
|
||||
|
|
@ -151,16 +159,22 @@ Generally, a user SHOULD NOT set `peer.service` to a fully qualified RPC service
|
|||
<!-- semconv rpc.server -->
|
||||
| Attribute | Type | Description | Examples | Requirement Level |
|
||||
|---|---|---|---|---|
|
||||
| [`client.address`](../general/attributes.md) | string | Client address - unix domain socket name, IPv4 or IPv6 address. [1] | `/tmp/my.sock`; `10.1.2.80` | Recommended |
|
||||
| [`client.port`](../general/attributes.md) | int | Client port number [2] | `65123` | Recommended |
|
||||
| [`client.socket.address`](../general/attributes.md) | string | Immediate client peer address - unix domain socket name, IPv4 or IPv6 address. | `/tmp/my.sock`; `127.0.0.1` | Recommended: If different than `client.address`. |
|
||||
| [`client.socket.port`](../general/attributes.md) | int | Immediate client peer port number | `35555` | Recommended: If different than `client.port`. |
|
||||
| [`client.address`](../general/attributes.md) | string | Client address - IP address or Unix domain socket name. [1] | `/tmp/my.sock`; `10.1.2.80` | Recommended |
|
||||
| [`client.port`](../general/attributes.md) | int | Client port number. [2] | `65123` | Recommended |
|
||||
| [`client.socket.address`](../general/attributes.md) | string | Client address of the socket connection - IP address or Unix domain socket name. [3] | `/tmp/my.sock`; `127.0.0.1` | Recommended: If different than `client.address`. |
|
||||
| [`client.socket.port`](../general/attributes.md) | int | Client port number of the socket connection. [4] | `35555` | Recommended: If different than `client.port`. |
|
||||
| [`network.transport`](../general/attributes.md) | string | [OSI Transport Layer](https://osi-model.com/transport-layer/) or [Inter-process Communication method](https://en.wikipedia.org/wiki/Inter-process_communication). The value SHOULD be normalized to lowercase. | `tcp`; `udp` | Recommended |
|
||||
| [`network.type`](../general/attributes.md) | string | [OSI Network Layer](https://osi-model.com/network-layer/) or non-OSI equivalent. The value SHOULD be normalized to lowercase. | `ipv4`; `ipv6` | Recommended |
|
||||
|
||||
**[1]:** When observed from the server side, and when communicating through an intermediary, `client.address` SHOULD represent client address behind any intermediaries (e.g. proxies) if it's available.
|
||||
**[1]:** When observed from the server side, and when communicating through an intermediary, `client.address` SHOULD represent the client address behind any intermediaries (e.g. proxies) if it's available.
|
||||
|
||||
**[2]:** When observed from the server side, and when communicating through an intermediary, `client.port` SHOULD represent client port behind any intermediaries (e.g. proxies) if it's available.
|
||||
**[2]:** When observed from the server side, and when communicating through an intermediary, `client.port` SHOULD represent the client port behind any intermediaries (e.g. proxies) if it's available.
|
||||
|
||||
**[3]:** When observed from the server side, this SHOULD represent the immediate client peer address.
|
||||
When observed from the client side, this SHOULD represent the physical client address.
|
||||
|
||||
**[4]:** When observed from the server side, this SHOULD represent the immediate client peer port.
|
||||
When observed from the client side, this SHOULD represent the physical client port.
|
||||
<!-- endsemconv -->
|
||||
|
||||
### Events
|
||||
|
|
|
|||
|
|
@ -12,27 +12,35 @@ groups:
|
|||
attributes:
|
||||
- id: address
|
||||
type: string
|
||||
brief: Client address - unix domain socket name, IPv4 or IPv6 address.
|
||||
brief: Client address - IP address or Unix domain socket name.
|
||||
note: >
|
||||
When observed from the server side, and when communicating through an intermediary, `client.address` SHOULD represent
|
||||
client address behind any intermediaries (e.g. proxies) if it's available.
|
||||
the client address behind any intermediaries (e.g. proxies) if it's available.
|
||||
examples: ['/tmp/my.sock', '10.1.2.80']
|
||||
- id: port
|
||||
type: int
|
||||
brief: 'Client port number'
|
||||
brief: Client port number.
|
||||
examples: [65123]
|
||||
note: >
|
||||
When observed from the server side, and when communicating through an intermediary, `client.port` SHOULD represent
|
||||
client port behind any intermediaries (e.g. proxies) if it's available.
|
||||
the client port behind any intermediaries (e.g. proxies) if it's available.
|
||||
- id: socket.address
|
||||
type: string
|
||||
brief: Immediate client peer address - unix domain socket name, IPv4 or IPv6 address.
|
||||
brief: Client address of the socket connection - IP address or Unix domain socket name.
|
||||
note: >
|
||||
When observed from the server side, this SHOULD represent the immediate client peer address.
|
||||
|
||||
When observed from the client side, this SHOULD represent the physical client address.
|
||||
examples: ['/tmp/my.sock', '127.0.0.1']
|
||||
requirement_level:
|
||||
recommended: If different than `client.address`.
|
||||
- id: socket.port
|
||||
type: int
|
||||
brief: 'Immediate client peer port number'
|
||||
brief: Client port number of the socket connection.
|
||||
note: >
|
||||
When observed from the server side, this SHOULD represent the immediate client peer port.
|
||||
|
||||
When observed from the client side, this SHOULD represent the physical client port.
|
||||
examples: [35555]
|
||||
requirement_level:
|
||||
recommended: If different than `client.port`.
|
||||
|
|
|
|||
|
|
@ -12,30 +12,42 @@ groups:
|
|||
attributes:
|
||||
- id: address
|
||||
type: string
|
||||
brief: 'Logical server hostname, matches server FQDN if available, and IP or socket address if FQDN is not known.'
|
||||
brief: Server address - domain name if available without reverse DNS lookup, otherwise IP address or Unix domain socket name.
|
||||
note: |
|
||||
When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent
|
||||
the server address behind any intermediaries (e.g. proxies) if it's available.
|
||||
examples: ['example.com']
|
||||
- id: port
|
||||
type: int
|
||||
brief: 'Logical server port number'
|
||||
brief: Server port number
|
||||
note: >
|
||||
When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent
|
||||
the server port behind any intermediaries (e.g. proxies) if it's available.
|
||||
examples: [80, 8080, 443]
|
||||
- id: socket.domain
|
||||
type: string
|
||||
brief: The domain name of an immediate peer.
|
||||
brief: Immediate server peer's domain name if available without reverse DNS lookup
|
||||
examples: ['proxy.example.com']
|
||||
note: Typically observed from the client side, and represents a proxy or other intermediary domain name.
|
||||
requirement_level:
|
||||
recommended: If different than `server.address`.
|
||||
- id: socket.address
|
||||
type: string
|
||||
brief: >
|
||||
Physical server IP address or Unix socket address. If set from the client, should simply use the socket's peer address, and not attempt to find any actual server IP (i.e., if set from
|
||||
client, this may represent some proxy server instead of the logical server).
|
||||
brief: Server address of the socket connection - IP address or Unix domain socket name.
|
||||
note: >
|
||||
When observed from the client side, this SHOULD represent the immediate server peer address.
|
||||
|
||||
When observed from the server side, this SHOULD represent the physical server address.
|
||||
examples: ['10.5.3.2']
|
||||
requirement_level:
|
||||
recommended: If different than `server.address`.
|
||||
- id: socket.port
|
||||
type: int
|
||||
brief: Physical server port.
|
||||
brief: Server port number of the socket connection.
|
||||
note: >
|
||||
When observed from the client side, this SHOULD represent the immediate server peer port.
|
||||
|
||||
When observed from the server side, this SHOULD represent the physical server port.
|
||||
examples: [16456]
|
||||
requirement_level:
|
||||
recommended: If different than `server.port`.
|
||||
|
|
|
|||
Loading…
Reference in New Issue