Skip to content

Commit

Permalink
Update recommendation applicablility to cloud
Browse files Browse the repository at this point in the history
  • Loading branch information
stevejgordon committed Aug 29, 2023
1 parent 5a667c1 commit dc2bfbd
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 26 deletions.
36 changes: 16 additions & 20 deletions docs/database/elasticsearch.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,28 +39,24 @@ in order to map the path part values to their names.
<!-- semconv db.elasticsearch -->
| Attribute | Type | Description | Examples | Requirement Level |
|---|---|---|---|---|
| `db.elasticsearch.cluster.name` | string | Represents the identifier of an Elasticsearch cluster. [1] | `e9106fc68e3044f0b1475b04bf4ffd5f` | Recommended: [2] |
| `db.elasticsearch.cluster.instance` | string | Represents the identifier of the node/instance to which the request was routed. [3] | `instance-0000000001` | Recommended: [4] |
| [`db.operation`](database-spans.md) | string | The endpoint identifier for the request. [5] | `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: [6] |
| `http.request.method` | string | HTTP request method. [7] | `GET`; `POST`; `HEAD` | 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. [8] | `example.com` | See below |
| [`server.port`](../general/attributes.md) | int | Server port number [9] | `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) [10] | `https://localhost:9200/index/_search?q=user.id:kimchy` | Required |
| `db.elasticsearch.cluster.name` | string | Represents the identifier of an Elasticsearch cluster. | `e9106fc68e3044f0b1475b04bf4ffd5f` | Recommended: [1] |
| `db.elasticsearch.cluster.instance` | string | Represents the identifier of the node/instance to which the request was routed. | `instance-0000000001` | Recommended: [2] |
| [`db.operation`](database-spans.md) | string | The endpoint identifier for the request. [3] | `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: [4] |
| `http.request.method` | string | HTTP request method. [5] | `GET`; `POST`; `HEAD` | 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. [6] | `example.com` | See below |
| [`server.port`](../general/attributes.md) | int | Server port number [7] | `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) [8] | `https://localhost:9200/index/_search?q=user.id:kimchy` | Required |

**[1]:** For Elastic Cloud hosted deployents the "X-Found-Handling-Cluster" HTTP response header contains the cluster ID.
**[1]:** When communicating with an Elastic Cloud deployment, this should be collected from the "X-Found-Handling-Cluster" HTTP response header.

**[2]:** Should be collected from the relevant HTTP response header if available.
**[2]:** When communicating with an Elastic Cloud deployment, this should be collected from the "X-Found-Handling-Instance" HTTP response header.

**[3]:** For Elastic Cloud hosted deployents "X-Found-Handling-Instance" HTTP response header contains the instance identifier.
**[3]:** 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.

**[4]:** Should be collected from the relevant HTTP response header if available.
**[4]:** Should be collected by default for search-type queries and only if there is sanitization that excludes sensitive information.

**[5]:** 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.

**[6]:** Should be collected by default for search-type queries and only if there is sanitization that excludes sensitive information.

**[7]:** HTTP request method value SHOULD be "known" to the instrumentation.
**[5]:** 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)
and the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html).

Expand All @@ -75,12 +71,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.

**[8]:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent
**[6]:** 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.

**[9]:** 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.
**[7]:** 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.

**[10]:** 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.
**[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.
<!-- endsemconv -->
Expand Down
8 changes: 2 additions & 6 deletions model/trace/database.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -458,24 +458,20 @@ groups:
type: string
requirement_level:
recommended: >
Should be collected from the relevant HTTP response header if available.
When communicating with an Elastic Cloud deployment, this should be collected from the "X-Found-Handling-Cluster" HTTP response header.
tag: call-level-tech-specific
brief: >
Represents the identifier of an Elasticsearch cluster.
examples: ["e9106fc68e3044f0b1475b04bf4ffd5f"]
note: >
For Elastic Cloud hosted deployents the "X-Found-Handling-Cluster" HTTP response header contains the cluster ID.
- id: cluster.instance
type: string
requirement_level:
recommended: >
Should be collected from the relevant HTTP response header if available.
When communicating with an Elastic Cloud deployment, this should be collected from the "X-Found-Handling-Instance" HTTP response header.
tag: call-level-tech-specific
brief: >
Represents the identifier of the node/instance to which the request was routed.
examples: ["instance-0000000001"]
note: >
For Elastic Cloud hosted deployents "X-Found-Handling-Instance" HTTP response header contains the instance identifier.

- id: db.sql
prefix: 'db.sql'
Expand Down

0 comments on commit dc2bfbd

Please sign in to comment.