Add http metrics yaml (#3158)
* Add http metrics yaml * Update change log * Fix notes * Fix link * Remove unnecessary field
This commit is contained in:
parent
9170ccaeeb
commit
27e087b3b6
|
|
@ -0,0 +1,283 @@
|
||||||
|
groups:
|
||||||
|
- id: metric.http.server.duration
|
||||||
|
type: metric
|
||||||
|
metric_name: http.server.duration
|
||||||
|
brief: "Measures the duration of inbound HTTP requests."
|
||||||
|
instrument: histogram
|
||||||
|
unit: "ms"
|
||||||
|
attributes:
|
||||||
|
- ref: http.method
|
||||||
|
requirement_level: required
|
||||||
|
- ref: http.scheme
|
||||||
|
requirement_level: required
|
||||||
|
- ref: http.route
|
||||||
|
requirement_level:
|
||||||
|
conditionally_required: If and only if it's available
|
||||||
|
- ref: http.status_code
|
||||||
|
requirement_level:
|
||||||
|
conditionally_required: If and only if one was received/sent.
|
||||||
|
- ref: http.flavor
|
||||||
|
- ref: net.host.name
|
||||||
|
requirement_level: required
|
||||||
|
brief: >
|
||||||
|
Name of the local HTTP server that received the request.
|
||||||
|
note: |
|
||||||
|
Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- The [primary server name](../../trace/semantic_conventions/http.md#http-server-definitions) of the matched virtual host. MUST only
|
||||||
|
include host identifier.
|
||||||
|
- Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource)
|
||||||
|
if it's sent in absolute-form.
|
||||||
|
- Host identifier of the `Host` header
|
||||||
|
|
||||||
|
SHOULD NOT be set if only IP address is available and capturing name would require a reverse DNS lookup.
|
||||||
|
- ref: net.host.port
|
||||||
|
requirement_level:
|
||||||
|
conditionally_required: If not default (`80` for `http` scheme, `443` for `https`).
|
||||||
|
brief: >
|
||||||
|
Port of the local HTTP server that received the request.
|
||||||
|
note: |
|
||||||
|
Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- Port identifier of the [primary server host](../../trace/semantic_conventions/http.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
|
||||||
|
|
||||||
|
- id: metric.http.server.active_requests
|
||||||
|
type: metric
|
||||||
|
metric_name: http.server.active_requests
|
||||||
|
brief: "Measures the number of concurrent HTTP requests that are currently in-flight."
|
||||||
|
instrument: updowncounter
|
||||||
|
unit: "{requests}"
|
||||||
|
attributes:
|
||||||
|
- ref: http.method
|
||||||
|
requirement_level: required
|
||||||
|
- ref: http.scheme
|
||||||
|
requirement_level: required
|
||||||
|
- ref: http.flavor
|
||||||
|
- ref: net.host.name
|
||||||
|
requirement_level: required
|
||||||
|
brief: >
|
||||||
|
Name of the local HTTP server that received the request.
|
||||||
|
note: |
|
||||||
|
Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- The [primary server name](../../trace/semantic_conventions/http.md#http-server-definitions) of the matched virtual host. MUST only
|
||||||
|
include host identifier.
|
||||||
|
- Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource)
|
||||||
|
if it's sent in absolute-form.
|
||||||
|
- Host identifier of the `Host` header
|
||||||
|
|
||||||
|
SHOULD NOT be set if only IP address is available and capturing name would require a reverse DNS lookup.
|
||||||
|
- ref: net.host.port
|
||||||
|
requirement_level:
|
||||||
|
conditionally_required: If not default (`80` for `http` scheme, `443` for `https`).
|
||||||
|
brief: >
|
||||||
|
Port of the local HTTP server that received the request.
|
||||||
|
note: |
|
||||||
|
Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- Port identifier of the [primary server host](../../trace/semantic_conventions/http.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
|
||||||
|
|
||||||
|
- id: metric.http.server.request.size
|
||||||
|
type: metric
|
||||||
|
metric_name: http.server.request.size
|
||||||
|
brief: "Measures the size of HTTP request messages (compressed)."
|
||||||
|
instrument: histogram
|
||||||
|
unit: "By"
|
||||||
|
# TODO (trask) below attributes are identical to above in metric.http.server.duration
|
||||||
|
attributes:
|
||||||
|
- ref: http.method
|
||||||
|
requirement_level: required
|
||||||
|
- ref: http.scheme
|
||||||
|
requirement_level: required
|
||||||
|
- ref: http.route
|
||||||
|
requirement_level:
|
||||||
|
conditionally_required: If and only if it's available
|
||||||
|
- ref: http.status_code
|
||||||
|
requirement_level:
|
||||||
|
conditionally_required: If and only if one was received/sent.
|
||||||
|
- ref: http.flavor
|
||||||
|
- ref: net.host.name
|
||||||
|
requirement_level: required
|
||||||
|
brief: >
|
||||||
|
Name of the local HTTP server that received the request.
|
||||||
|
note: |
|
||||||
|
Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- The [primary server name](../../trace/semantic_conventions/http.md#http-server-definitions) of the matched virtual host. MUST only
|
||||||
|
include host identifier.
|
||||||
|
- Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource)
|
||||||
|
if it's sent in absolute-form.
|
||||||
|
- Host identifier of the `Host` header
|
||||||
|
|
||||||
|
SHOULD NOT be set if only IP address is available and capturing name would require a reverse DNS lookup.
|
||||||
|
- ref: net.host.port
|
||||||
|
requirement_level:
|
||||||
|
conditionally_required: If not default (`80` for `http` scheme, `443` for `https`).
|
||||||
|
brief: >
|
||||||
|
Port of the local HTTP server that received the request.
|
||||||
|
note: |
|
||||||
|
Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- Port identifier of the [primary server host](../../trace/semantic_conventions/http.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
|
||||||
|
|
||||||
|
- id: metric.http.server.response.size
|
||||||
|
type: metric
|
||||||
|
metric_name: http.server.response.size
|
||||||
|
brief: "Measures the size of HTTP response messages (compressed)."
|
||||||
|
instrument: histogram
|
||||||
|
unit: "By"
|
||||||
|
# TODO (trask) below attributes are identical to above in metric.http.server.duration
|
||||||
|
attributes:
|
||||||
|
- ref: http.method
|
||||||
|
requirement_level: required
|
||||||
|
- ref: http.scheme
|
||||||
|
requirement_level: required
|
||||||
|
- ref: http.route
|
||||||
|
requirement_level:
|
||||||
|
conditionally_required: If and only if it's available
|
||||||
|
- ref: http.status_code
|
||||||
|
requirement_level:
|
||||||
|
conditionally_required: If and only if one was received/sent.
|
||||||
|
- ref: http.flavor
|
||||||
|
- ref: net.host.name
|
||||||
|
requirement_level: required
|
||||||
|
brief: >
|
||||||
|
Name of the local HTTP server that received the request.
|
||||||
|
note: |
|
||||||
|
Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- The [primary server name](../../trace/semantic_conventions/http.md#http-server-definitions) of the matched virtual host. MUST only
|
||||||
|
include host identifier.
|
||||||
|
- Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource)
|
||||||
|
if it's sent in absolute-form.
|
||||||
|
- Host identifier of the `Host` header
|
||||||
|
|
||||||
|
SHOULD NOT be set if only IP address is available and capturing name would require a reverse DNS lookup.
|
||||||
|
- ref: net.host.port
|
||||||
|
requirement_level:
|
||||||
|
conditionally_required: If not default (`80` for `http` scheme, `443` for `https`).
|
||||||
|
brief: >
|
||||||
|
Port of the local HTTP server that received the request.
|
||||||
|
note: |
|
||||||
|
Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- Port identifier of the [primary server host](../../trace/semantic_conventions/http.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
|
||||||
|
|
||||||
|
- id: metric.http.client.duration
|
||||||
|
type: metric
|
||||||
|
metric_name: http.client.duration
|
||||||
|
brief: "Measures the duration of outbound HTTP requests."
|
||||||
|
instrument: histogram
|
||||||
|
unit: "ms"
|
||||||
|
attributes:
|
||||||
|
- ref: http.method
|
||||||
|
requirement_level: required
|
||||||
|
- ref: http.status_code
|
||||||
|
requirement_level:
|
||||||
|
conditionally_required: If and only if one was received/sent.
|
||||||
|
- ref: http.flavor
|
||||||
|
- ref: net.peer.name
|
||||||
|
requirement_level: required
|
||||||
|
brief: >
|
||||||
|
Host identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to.
|
||||||
|
note: |
|
||||||
|
Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource)
|
||||||
|
if it's sent in absolute-form
|
||||||
|
- Host identifier of the `Host` header
|
||||||
|
|
||||||
|
SHOULD NOT be set if capturing it would require an extra DNS lookup.
|
||||||
|
- ref: net.peer.port
|
||||||
|
requirement_level:
|
||||||
|
conditionally_required: If not default (`80` for `http` scheme, `443` for `https`).
|
||||||
|
brief: >
|
||||||
|
Port identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to.
|
||||||
|
note: >
|
||||||
|
When [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource) is absolute URI, `net.peer.name` MUST match
|
||||||
|
URI port identifier, otherwise it MUST match `Host` header port identifier.
|
||||||
|
- ref: net.sock.peer.addr
|
||||||
|
|
||||||
|
- id: metric.http.client.request.size
|
||||||
|
type: metric
|
||||||
|
metric_name: http.client.request.size
|
||||||
|
brief: "Measures the size of HTTP request messages (compressed)."
|
||||||
|
instrument: histogram
|
||||||
|
unit: "By"
|
||||||
|
# TODO (trask) below attributes are identical to above in metric.http.client.duration
|
||||||
|
attributes:
|
||||||
|
- ref: http.method
|
||||||
|
requirement_level: required
|
||||||
|
- ref: http.status_code
|
||||||
|
requirement_level:
|
||||||
|
conditionally_required: If and only if one was received/sent.
|
||||||
|
- ref: http.flavor
|
||||||
|
- ref: net.peer.name
|
||||||
|
requirement_level: required
|
||||||
|
brief: >
|
||||||
|
Host identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to.
|
||||||
|
note: |
|
||||||
|
Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource)
|
||||||
|
if it's sent in absolute-form
|
||||||
|
- Host identifier of the `Host` header
|
||||||
|
|
||||||
|
SHOULD NOT be set if capturing it would require an extra DNS lookup.
|
||||||
|
- ref: net.peer.port
|
||||||
|
requirement_level:
|
||||||
|
conditionally_required: If not default (`80` for `http` scheme, `443` for `https`).
|
||||||
|
brief: >
|
||||||
|
Port identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to.
|
||||||
|
note: >
|
||||||
|
When [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource) is absolute URI, `net.peer.name` MUST match
|
||||||
|
URI port identifier, otherwise it MUST match `Host` header port identifier.
|
||||||
|
- ref: net.sock.peer.addr
|
||||||
|
|
||||||
|
- id: metric.http.client.response.size
|
||||||
|
type: metric
|
||||||
|
metric_name: http.client.response.size
|
||||||
|
brief: "Measures the size of HTTP response messages (compressed)."
|
||||||
|
instrument: histogram
|
||||||
|
unit: "By"
|
||||||
|
# TODO (trask) below attributes are identical to above in metric.http.client.duration
|
||||||
|
attributes:
|
||||||
|
- ref: http.method
|
||||||
|
requirement_level: required
|
||||||
|
- ref: http.status_code
|
||||||
|
requirement_level:
|
||||||
|
conditionally_required: If and only if one was received/sent.
|
||||||
|
- ref: http.flavor
|
||||||
|
- ref: net.peer.name
|
||||||
|
requirement_level: required
|
||||||
|
brief: >
|
||||||
|
Host identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to.
|
||||||
|
note: |
|
||||||
|
Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource)
|
||||||
|
if it's sent in absolute-form
|
||||||
|
- Host identifier of the `Host` header
|
||||||
|
|
||||||
|
SHOULD NOT be set if capturing it would require an extra DNS lookup.
|
||||||
|
- ref: net.peer.port
|
||||||
|
requirement_level:
|
||||||
|
conditionally_required: If not default (`80` for `http` scheme, `443` for `https`).
|
||||||
|
brief: >
|
||||||
|
Port identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to.
|
||||||
|
note: >
|
||||||
|
When [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource) is absolute URI, `net.peer.name` MUST match
|
||||||
|
URI port identifier, otherwise it MUST match `Host` header port identifier.
|
||||||
|
- ref: net.sock.peer.addr
|
||||||
|
|
@ -12,61 +12,287 @@ operations. By adding HTTP attributes to metric events it allows for finely tune
|
||||||
|
|
||||||
**Disclaimer:** These are initial HTTP metric instruments and attributes but more may be added in the future.
|
**Disclaimer:** These are initial HTTP metric instruments and attributes but more may be added in the future.
|
||||||
|
|
||||||
## Metric Instruments
|
## HTTP Server
|
||||||
|
|
||||||
The following metric instruments MUST be used to describe HTTP operations. They MUST be of the specified
|
### Metric: `http.server.duration`
|
||||||
type and units.
|
|
||||||
|
|
||||||
### HTTP Server
|
This metric is required.
|
||||||
|
|
||||||
Below is a table of HTTP server metric instruments.
|
<!-- semconv metric.http.server.duration(metric_table) -->
|
||||||
|
| Name | Instrument Type | Unit (UCUM) | Description |
|
||||||
|
| -------- | --------------- | ----------- | -------------- |
|
||||||
|
| `http.server.duration` | Histogram | `ms` | Measures the duration of inbound HTTP requests. |
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
| Name | Instrument Type ([*](README.md#instrument-types)) | Unit | Unit ([UCUM](README.md#instrument-units)) | Description |
|
<!-- semconv metric.http.server.duration -->
|
||||||
|-------------------------------|---------------------------------------------------|--------------|-------------------------------------------|------------------------------------------------------------------------------|
|
| Attribute | Type | Description | Examples | Requirement Level |
|
||||||
| `http.server.duration` | Histogram | milliseconds | `ms` | measures the duration inbound HTTP requests |
|
|---|---|---|---|---|
|
||||||
| `http.server.request.size` | Histogram | bytes | `By` | measures the size of HTTP request messages (compressed) |
|
| [`http.flavor`](../../trace/semantic_conventions/http.md) | string | Kind of HTTP protocol used. [1] | `1.0` | Recommended |
|
||||||
| `http.server.response.size` | Histogram | bytes | `By` | measures the size of HTTP response messages (compressed) |
|
| [`http.method`](../../trace/semantic_conventions/http.md) | string | HTTP request method. | `GET`; `POST`; `HEAD` | Required |
|
||||||
| `http.server.active_requests` | UpDownCounter | requests | `{requests}` | measures the number of concurrent HTTP requests that are currently in-flight |
|
| [`http.route`](../../trace/semantic_conventions/http.md) | string | The matched route (path template in the format used by the respective server framework). See note below [2] | `/users/:userID?`; `{controller}/{action}/{id?}` | Conditionally Required: If and only if it's available |
|
||||||
|
| [`http.scheme`](../../trace/semantic_conventions/http.md) | string | The URI scheme identifying the used protocol. | `http`; `https` | Required |
|
||||||
|
| [`http.status_code`](../../trace/semantic_conventions/http.md) | int | [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). | `200` | Conditionally Required: If and only if one was received/sent. |
|
||||||
|
| [`net.host.name`](../../trace/semantic_conventions/span-general.md) | string | Name of the local HTTP server that received the request. [3] | `localhost` | Required |
|
||||||
|
| [`net.host.port`](../../trace/semantic_conventions/span-general.md) | int | Port of the local HTTP server that received the request. [4] | `8080` | Conditionally Required: [5] |
|
||||||
|
|
||||||
### HTTP Client
|
**[1]:** If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.
|
||||||
|
|
||||||
Below is a table of HTTP client metric instruments.
|
**[2]:** 'http.route' 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.
|
||||||
|
|
||||||
| Name | Instrument Type ([*](README.md#instrument-types)) | Unit | Unit ([UCUM](README.md#instrument-units)) | Description |
|
**[3]:** Determined by using the first of the following that applies
|
||||||
|-----------------------------|---------------------------------------------------|--------------|-------------------------------------------|----------------------------------------------------------|
|
|
||||||
| `http.client.duration` | Histogram | milliseconds | `ms` | measures the duration outbound HTTP requests |
|
|
||||||
| `http.client.request.size` | Histogram | bytes | `By` | measures the size of HTTP request messages (compressed) |
|
|
||||||
| `http.client.response.size` | Histogram | bytes | `By` | measures the size of HTTP response messages (compressed) |
|
|
||||||
|
|
||||||
## Attributes
|
- The [primary server name](../../trace/semantic_conventions/http.md#http-server-definitions) of the matched virtual host. MUST only
|
||||||
|
include host identifier.
|
||||||
|
- Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource)
|
||||||
|
if it's sent in absolute-form.
|
||||||
|
- Host identifier of the `Host` header
|
||||||
|
|
||||||
Below is a table of the attributes that SHOULD be included on `duration` and `size` metric events
|
SHOULD NOT be set if only IP address is available and capturing name would require a reverse DNS lookup.
|
||||||
and whether they should be on server, client, or both types of HTTP metric events:
|
|
||||||
|
|
||||||
| Name | Type | Requirement Level | Notes and examples |
|
**[4]:** Determined by using the first of the following that applies
|
||||||
|----------------------|---------------------|------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------|
|
|
||||||
| `http.method` | `client` & `server` | Required | The HTTP request method. E.g. `"GET"` |
|
|
||||||
| `http.scheme` | `server` | Required | The URI scheme identifying the used protocol in lowercase: `"http"` or `"https"` |
|
|
||||||
| `http.route` | `server` | Conditionally Required: If and only if it's available | The matched route (path template in the format used by the respective server framework). See note below [1]. E.g. `"/path/{id}/?q={}"`. |
|
|
||||||
| `http.status_code` | `client` & `server` | Conditionally Required: if and only if one was received/sent. | [HTTP response status code][]. E.g. `200` (int) |
|
|
||||||
| `http.flavor` | `client` & `server` | Recommended | Kind of HTTP protocol used: `"1.0"`, `"1.1"`, `"2"`, `"SPDY"` or `"QUIC"`. |
|
|
||||||
| `net.peer.name` | `client` | Required | Host identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to. |
|
|
||||||
| `net.peer.port` | `client` | Conditionally Required: If not default (`80` for `http`, `443` for `https`). | Port identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to. |
|
|
||||||
| `net.sock.peer.addr` | `client` | Recommended | See [general network connection attributes](../../trace/semantic_conventions/span-general.md#general-network-connection-attributes) |
|
|
||||||
| `net.host.name` | `server` | Required | Host of the local HTTP server that received the request. |
|
|
||||||
| `net.host.port` | `server` | Conditionally Required: If not default (`80` for `http`, `443` for `https`). | Port of the local HTTP server that received the request. |
|
|
||||||
|
|
||||||
**[1]:** 'http.route' 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.
|
- Port identifier of the [primary server host](../../trace/semantic_conventions/http.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
|
||||||
|
|
||||||
The following attributes SHOULD be included in the `http.server.active_requests` observation:
|
**[5]:** If not default (`80` for `http` scheme, `443` for `https`).
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
| Name | Requirement Level | Notes and examples |
|
### Metric: `http.server.active_requests`
|
||||||
|--------------------|-------------------|----------------------------------------------------------------------------------|
|
|
||||||
| `http.method` | Required | The HTTP request method. E.g. `"GET"` |
|
|
||||||
| `http.scheme` | Required | The URI scheme identifying the used protocol in lowercase: `"http"` or `"https"` |
|
|
||||||
| `http.flavor` | Recommended | Kind of HTTP protocol used: `"1.0"`, `"1.1"`, `"2"`, `"SPDY"` or `"QUIC"` |
|
|
||||||
| `net.host.name` | Required | Host component of the ["origin"](https://www.rfc-editor.org/rfc/rfc9110.html#section-3.6) server HTTP request is sent to. |
|
|
||||||
|
|
||||||
[HTTP host header]: https://www.rfc-editor.org/rfc/rfc9110.html#name-host-and-authority
|
This metric is optional.
|
||||||
[HTTP response status code]: https://www.rfc-editor.org/rfc/rfc9110.html#name-status-codes
|
|
||||||
[HTTP reason phrase]: https://www.rfc-editor.org/rfc/rfc9110.html#section-15.1
|
<!-- semconv metric.http.server.active_requests(metric_table) -->
|
||||||
|
| Name | Instrument Type | Unit (UCUM) | Description |
|
||||||
|
| -------- | --------------- | ----------- | -------------- |
|
||||||
|
| `http.server.active_requests` | UpDownCounter | `{requests}` | Measures the number of concurrent HTTP requests that are currently in-flight. |
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
|
<!-- semconv metric.http.server.active_requests -->
|
||||||
|
| Attribute | Type | Description | Examples | Requirement Level |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| [`http.flavor`](../../trace/semantic_conventions/http.md) | string | Kind of HTTP protocol used. [1] | `1.0` | Recommended |
|
||||||
|
| [`http.method`](../../trace/semantic_conventions/http.md) | string | HTTP request method. | `GET`; `POST`; `HEAD` | Required |
|
||||||
|
| [`http.scheme`](../../trace/semantic_conventions/http.md) | string | The URI scheme identifying the used protocol. | `http`; `https` | Required |
|
||||||
|
| [`net.host.name`](../../trace/semantic_conventions/span-general.md) | string | Name of the local HTTP server that received the request. [2] | `localhost` | Required |
|
||||||
|
| [`net.host.port`](../../trace/semantic_conventions/span-general.md) | int | Port of the local HTTP server that received the request. [3] | `8080` | Conditionally Required: [4] |
|
||||||
|
|
||||||
|
**[1]:** If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.
|
||||||
|
|
||||||
|
**[2]:** Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- The [primary server name](../../trace/semantic_conventions/http.md#http-server-definitions) of the matched virtual host. MUST only
|
||||||
|
include host identifier.
|
||||||
|
- Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource)
|
||||||
|
if it's sent in absolute-form.
|
||||||
|
- Host identifier of the `Host` header
|
||||||
|
|
||||||
|
SHOULD NOT be set if only IP address is available and capturing name would require a reverse DNS lookup.
|
||||||
|
|
||||||
|
**[3]:** Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- Port identifier of the [primary server host](../../trace/semantic_conventions/http.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
|
||||||
|
|
||||||
|
**[4]:** If not default (`80` for `http` scheme, `443` for `https`).
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
|
### Metric: `http.server.request.size`
|
||||||
|
|
||||||
|
This metric is optional.
|
||||||
|
|
||||||
|
<!-- semconv metric.http.server.request.size(metric_table) -->
|
||||||
|
| Name | Instrument Type | Unit (UCUM) | Description |
|
||||||
|
| -------- | --------------- | ----------- | -------------- |
|
||||||
|
| `http.server.request.size` | Histogram | `By` | Measures the size of HTTP request messages (compressed). |
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
|
<!-- semconv metric.http.server.request.size -->
|
||||||
|
| Attribute | Type | Description | Examples | Requirement Level |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| [`http.flavor`](../../trace/semantic_conventions/http.md) | string | Kind of HTTP protocol used. [1] | `1.0` | Recommended |
|
||||||
|
| [`http.method`](../../trace/semantic_conventions/http.md) | string | HTTP request method. | `GET`; `POST`; `HEAD` | Required |
|
||||||
|
| [`http.route`](../../trace/semantic_conventions/http.md) | string | The matched route (path template in the format used by the respective server framework). See note below [2] | `/users/:userID?`; `{controller}/{action}/{id?}` | Conditionally Required: If and only if it's available |
|
||||||
|
| [`http.scheme`](../../trace/semantic_conventions/http.md) | string | The URI scheme identifying the used protocol. | `http`; `https` | Required |
|
||||||
|
| [`http.status_code`](../../trace/semantic_conventions/http.md) | int | [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). | `200` | Conditionally Required: If and only if one was received/sent. |
|
||||||
|
| [`net.host.name`](../../trace/semantic_conventions/span-general.md) | string | Name of the local HTTP server that received the request. [3] | `localhost` | Required |
|
||||||
|
| [`net.host.port`](../../trace/semantic_conventions/span-general.md) | int | Port of the local HTTP server that received the request. [4] | `8080` | Conditionally Required: [5] |
|
||||||
|
|
||||||
|
**[1]:** If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.
|
||||||
|
|
||||||
|
**[2]:** 'http.route' 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.
|
||||||
|
|
||||||
|
**[3]:** Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- The [primary server name](../../trace/semantic_conventions/http.md#http-server-definitions) of the matched virtual host. MUST only
|
||||||
|
include host identifier.
|
||||||
|
- Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource)
|
||||||
|
if it's sent in absolute-form.
|
||||||
|
- Host identifier of the `Host` header
|
||||||
|
|
||||||
|
SHOULD NOT be set if only IP address is available and capturing name would require a reverse DNS lookup.
|
||||||
|
|
||||||
|
**[4]:** Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- Port identifier of the [primary server host](../../trace/semantic_conventions/http.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
|
||||||
|
|
||||||
|
**[5]:** If not default (`80` for `http` scheme, `443` for `https`).
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
|
### Metric: `http.server.response.size`
|
||||||
|
|
||||||
|
This metric is optional.
|
||||||
|
|
||||||
|
<!-- semconv metric.http.server.response.size(metric_table) -->
|
||||||
|
| Name | Instrument Type | Unit (UCUM) | Description |
|
||||||
|
| -------- | --------------- | ----------- | -------------- |
|
||||||
|
| `http.server.response.size` | Histogram | `By` | Measures the size of HTTP response messages (compressed). |
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
|
<!-- semconv metric.http.server.response.size -->
|
||||||
|
| Attribute | Type | Description | Examples | Requirement Level |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| [`http.flavor`](../../trace/semantic_conventions/http.md) | string | Kind of HTTP protocol used. [1] | `1.0` | Recommended |
|
||||||
|
| [`http.method`](../../trace/semantic_conventions/http.md) | string | HTTP request method. | `GET`; `POST`; `HEAD` | Required |
|
||||||
|
| [`http.route`](../../trace/semantic_conventions/http.md) | string | The matched route (path template in the format used by the respective server framework). See note below [2] | `/users/:userID?`; `{controller}/{action}/{id?}` | Conditionally Required: If and only if it's available |
|
||||||
|
| [`http.scheme`](../../trace/semantic_conventions/http.md) | string | The URI scheme identifying the used protocol. | `http`; `https` | Required |
|
||||||
|
| [`http.status_code`](../../trace/semantic_conventions/http.md) | int | [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). | `200` | Conditionally Required: If and only if one was received/sent. |
|
||||||
|
| [`net.host.name`](../../trace/semantic_conventions/span-general.md) | string | Name of the local HTTP server that received the request. [3] | `localhost` | Required |
|
||||||
|
| [`net.host.port`](../../trace/semantic_conventions/span-general.md) | int | Port of the local HTTP server that received the request. [4] | `8080` | Conditionally Required: [5] |
|
||||||
|
|
||||||
|
**[1]:** If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.
|
||||||
|
|
||||||
|
**[2]:** 'http.route' 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.
|
||||||
|
|
||||||
|
**[3]:** Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- The [primary server name](../../trace/semantic_conventions/http.md#http-server-definitions) of the matched virtual host. MUST only
|
||||||
|
include host identifier.
|
||||||
|
- Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource)
|
||||||
|
if it's sent in absolute-form.
|
||||||
|
- Host identifier of the `Host` header
|
||||||
|
|
||||||
|
SHOULD NOT be set if only IP address is available and capturing name would require a reverse DNS lookup.
|
||||||
|
|
||||||
|
**[4]:** Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- Port identifier of the [primary server host](../../trace/semantic_conventions/http.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
|
||||||
|
|
||||||
|
**[5]:** If not default (`80` for `http` scheme, `443` for `https`).
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
|
## HTTP Client
|
||||||
|
|
||||||
|
### Metric: `http.client.duration`
|
||||||
|
|
||||||
|
This metric is required.
|
||||||
|
|
||||||
|
<!-- semconv metric.http.client.duration(metric_table) -->
|
||||||
|
| Name | Instrument Type | Unit (UCUM) | Description |
|
||||||
|
| -------- | --------------- | ----------- | -------------- |
|
||||||
|
| `http.client.duration` | Histogram | `ms` | Measures the duration of outbound HTTP requests. |
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
|
<!-- semconv metric.http.client.duration -->
|
||||||
|
| Attribute | Type | Description | Examples | Requirement Level |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| [`http.flavor`](../../trace/semantic_conventions/http.md) | string | Kind of HTTP protocol used. [1] | `1.0` | Recommended |
|
||||||
|
| [`http.method`](../../trace/semantic_conventions/http.md) | string | HTTP request method. | `GET`; `POST`; `HEAD` | Required |
|
||||||
|
| [`http.status_code`](../../trace/semantic_conventions/http.md) | int | [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). | `200` | Conditionally Required: If and only if one was received/sent. |
|
||||||
|
| [`net.peer.name`](../../trace/semantic_conventions/span-general.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 |
|
||||||
|
| [`net.peer.port`](../../trace/semantic_conventions/span-general.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] |
|
||||||
|
| [`net.sock.peer.addr`](../../trace/semantic_conventions/span-general.md) | string | Remote socket peer address: IPv4 or IPv6 for internet protocols, path for local communication, [etc](https://man7.org/linux/man-pages/man7/address_families.7.html). | `127.0.0.1`; `/tmp/mysql.sock` | Recommended |
|
||||||
|
|
||||||
|
**[1]:** If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.
|
||||||
|
|
||||||
|
**[2]:** Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource)
|
||||||
|
if it's sent in absolute-form
|
||||||
|
- Host identifier of the `Host` header
|
||||||
|
|
||||||
|
SHOULD NOT be set if capturing it would require an extra DNS lookup.
|
||||||
|
|
||||||
|
**[3]:** When [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource) is absolute URI, `net.peer.name` MUST match URI port identifier, otherwise it MUST match `Host` header port identifier.
|
||||||
|
|
||||||
|
**[4]:** If not default (`80` for `http` scheme, `443` for `https`).
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
|
### Metric: `http.client.request.size`
|
||||||
|
|
||||||
|
This metric is optional.
|
||||||
|
|
||||||
|
<!-- semconv metric.http.client.request.size(metric_table) -->
|
||||||
|
| Name | Instrument Type | Unit (UCUM) | Description |
|
||||||
|
| -------- | --------------- | ----------- | -------------- |
|
||||||
|
| `http.client.request.size` | Histogram | `By` | Measures the size of HTTP request messages (compressed). |
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
|
<!-- semconv metric.http.client.request.size -->
|
||||||
|
| Attribute | Type | Description | Examples | Requirement Level |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| [`http.flavor`](../../trace/semantic_conventions/http.md) | string | Kind of HTTP protocol used. [1] | `1.0` | Recommended |
|
||||||
|
| [`http.method`](../../trace/semantic_conventions/http.md) | string | HTTP request method. | `GET`; `POST`; `HEAD` | Required |
|
||||||
|
| [`http.status_code`](../../trace/semantic_conventions/http.md) | int | [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). | `200` | Conditionally Required: If and only if one was received/sent. |
|
||||||
|
| [`net.peer.name`](../../trace/semantic_conventions/span-general.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 |
|
||||||
|
| [`net.peer.port`](../../trace/semantic_conventions/span-general.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] |
|
||||||
|
| [`net.sock.peer.addr`](../../trace/semantic_conventions/span-general.md) | string | Remote socket peer address: IPv4 or IPv6 for internet protocols, path for local communication, [etc](https://man7.org/linux/man-pages/man7/address_families.7.html). | `127.0.0.1`; `/tmp/mysql.sock` | Recommended |
|
||||||
|
|
||||||
|
**[1]:** If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.
|
||||||
|
|
||||||
|
**[2]:** Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource)
|
||||||
|
if it's sent in absolute-form
|
||||||
|
- Host identifier of the `Host` header
|
||||||
|
|
||||||
|
SHOULD NOT be set if capturing it would require an extra DNS lookup.
|
||||||
|
|
||||||
|
**[3]:** When [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource) is absolute URI, `net.peer.name` MUST match URI port identifier, otherwise it MUST match `Host` header port identifier.
|
||||||
|
|
||||||
|
**[4]:** If not default (`80` for `http` scheme, `443` for `https`).
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
|
### Metric: `http.client.response.size`
|
||||||
|
|
||||||
|
This metric is optional.
|
||||||
|
|
||||||
|
<!-- semconv metric.http.client.response.size(metric_table) -->
|
||||||
|
| Name | Instrument Type | Unit (UCUM) | Description |
|
||||||
|
| -------- | --------------- | ----------- | -------------- |
|
||||||
|
| `http.client.response.size` | Histogram | `By` | Measures the size of HTTP response messages (compressed). |
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
|
<!-- semconv metric.http.client.response.size -->
|
||||||
|
| Attribute | Type | Description | Examples | Requirement Level |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| [`http.flavor`](../../trace/semantic_conventions/http.md) | string | Kind of HTTP protocol used. [1] | `1.0` | Recommended |
|
||||||
|
| [`http.method`](../../trace/semantic_conventions/http.md) | string | HTTP request method. | `GET`; `POST`; `HEAD` | Required |
|
||||||
|
| [`http.status_code`](../../trace/semantic_conventions/http.md) | int | [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). | `200` | Conditionally Required: If and only if one was received/sent. |
|
||||||
|
| [`net.peer.name`](../../trace/semantic_conventions/span-general.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 |
|
||||||
|
| [`net.peer.port`](../../trace/semantic_conventions/span-general.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] |
|
||||||
|
| [`net.sock.peer.addr`](../../trace/semantic_conventions/span-general.md) | string | Remote socket peer address: IPv4 or IPv6 for internet protocols, path for local communication, [etc](https://man7.org/linux/man-pages/man7/address_families.7.html). | `127.0.0.1`; `/tmp/mysql.sock` | Recommended |
|
||||||
|
|
||||||
|
**[1]:** If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.
|
||||||
|
|
||||||
|
**[2]:** Determined by using the first of the following that applies
|
||||||
|
|
||||||
|
- Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource)
|
||||||
|
if it's sent in absolute-form
|
||||||
|
- Host identifier of the `Host` header
|
||||||
|
|
||||||
|
SHOULD NOT be set if capturing it would require an extra DNS lookup.
|
||||||
|
|
||||||
|
**[3]:** When [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource) is absolute URI, `net.peer.name` MUST match URI port identifier, otherwise it MUST match `Host` header port identifier.
|
||||||
|
|
||||||
|
**[4]:** If not default (`80` for `http` scheme, `443` for `https`).
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue