Add SDK span telemetry metrics (#1631)
Co-authored-by: Alexander Wert <AlexanderWert@users.noreply.github.com> Co-authored-by: Joao Grassi <5938087+joaopgrassi@users.noreply.github.com>
This commit is contained in:
parent
67f0516049
commit
87bd2c191e
|
|
@ -0,0 +1,22 @@
|
||||||
|
# Use this changelog template to create an entry for release notes.
|
||||||
|
#
|
||||||
|
# If your change doesn't affect end users you should instead start
|
||||||
|
# your pull request title with [chore] or use the "Skip Changelog" label.
|
||||||
|
|
||||||
|
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
|
||||||
|
change_type: 'enhancement'
|
||||||
|
|
||||||
|
# The name of the area of concern in the attributes-registry, (e.g. http, cloud, db)
|
||||||
|
component: 'otel'
|
||||||
|
|
||||||
|
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
|
||||||
|
note: Adds SDK self-monitoring metrics for span processing
|
||||||
|
|
||||||
|
# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
|
||||||
|
# The values here must be integers.
|
||||||
|
issues: [1631]
|
||||||
|
|
||||||
|
# (Optional) One or more lines of additional information to render under the primary note.
|
||||||
|
# These lines will be padded with 2 spaces and then inserted directly into the document.
|
||||||
|
# Use pipe (|) for multiline entries.
|
||||||
|
subtext:
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
# OTel
|
# OTel
|
||||||
|
|
||||||
- [OTel Attributes](#otel-attributes)
|
- [OTel Attributes](#otel-attributes)
|
||||||
|
- [OTel Component Attributes](#otel-component-attributes)
|
||||||
- [OTel Scope Attributes](#otel-scope-attributes)
|
- [OTel Scope Attributes](#otel-scope-attributes)
|
||||||
- [Deprecated OTel Library Attributes](#deprecated-otel-library-attributes)
|
- [Deprecated OTel Library Attributes](#deprecated-otel-library-attributes)
|
||||||
|
|
||||||
|
|
@ -13,11 +14,22 @@ Attributes reserved for OpenTelemetry
|
||||||
|
|
||||||
| Attribute | Type | Description | Examples | Stability |
|
| Attribute | Type | Description | Examples | Stability |
|
||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
|
| <a id="otel-span-sampling-result" href="#otel-span-sampling-result">`otel.span.sampling_result`</a> | string | The result value of the sampler for this span | `DROP`; `RECORD_ONLY`; `RECORD_AND_SAMPLE` |  |
|
||||||
| <a id="otel-status-code" href="#otel-status-code">`otel.status_code`</a> | string | Name of the code, either "OK" or "ERROR". MUST NOT be set if the status code is UNSET. | `OK`; `ERROR` |  |
|
| <a id="otel-status-code" href="#otel-status-code">`otel.status_code`</a> | string | Name of the code, either "OK" or "ERROR". MUST NOT be set if the status code is UNSET. | `OK`; `ERROR` |  |
|
||||||
| <a id="otel-status-description" href="#otel-status-description">`otel.status_description`</a> | string | Description of the Status if it has a value, otherwise not set. | `resource not found` |  |
|
| <a id="otel-status-description" href="#otel-status-description">`otel.status_description`</a> | string | Description of the Status if it has a value, otherwise not set. | `resource not found` |  |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
`otel.span.sampling_result` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||||
|
|
||||||
|
| Value | Description | Stability |
|
||||||
|
|---|---|---|
|
||||||
|
| `DROP` | The span is not sampled and not recording |  |
|
||||||
|
| `RECORD_AND_SAMPLE` | The span is sampled and recording |  |
|
||||||
|
| `RECORD_ONLY` | The span is not sampled, but recording |  |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
`otel.status_code` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
`otel.status_code` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||||
|
|
||||||
| Value | Description | Stability |
|
| Value | Description | Stability |
|
||||||
|
|
@ -25,6 +37,44 @@ Attributes reserved for OpenTelemetry
|
||||||
| `ERROR` | The operation contains an error. |  |
|
| `ERROR` | The operation contains an error. |  |
|
||||||
| `OK` | The operation has been validated by an Application developer or Operator to have completed successfully. |  |
|
| `OK` | The operation has been validated by an Application developer or Operator to have completed successfully. |  |
|
||||||
|
|
||||||
|
## OTel Component Attributes
|
||||||
|
|
||||||
|
Attributes used for OpenTelemetry component self-monitoring
|
||||||
|
|
||||||
|
| Attribute | Type | Description | Examples | Stability |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| <a id="otel-component-name" href="#otel-component-name">`otel.component.name`</a> | string | A name uniquely identifying the instance of the OpenTelemetry component within its containing SDK instance. [1] | `otlp_grpc_span_exporter/0`; `custom-name` |  |
|
||||||
|
| <a id="otel-component-type" href="#otel-component-type">`otel.component.type`</a> | string | A name identifying the type of the OpenTelemetry component. [2] | `batching_span_processor`; `com.example.MySpanExporter` |  |
|
||||||
|
|
||||||
|
**[1] `otel.component.name`:** Implementations SHOULD ensure a low cardinality for this attribute, even across application or SDK restarts.
|
||||||
|
E.g. implementations MUST NOT use UUIDs as values for this attribute.
|
||||||
|
|
||||||
|
Implementations MAY achieve these goals by following a `<otel.component.type>/<instance-counter>` pattern, e.g. `batching_span_processor/0`.
|
||||||
|
Hereby `otel.component.type` refers to the corresponding attribute value of the component.
|
||||||
|
|
||||||
|
The value of `instance-counter` MAY be automatically assigned by the component and uniqueness within the enclosing SDK instance MUST be guaranteed.
|
||||||
|
For example, `<instance-counter>` MAY be implemented by using a monotonically increasing counter (starting with `0`), which is incremented every time an
|
||||||
|
instance of the given component type is started.
|
||||||
|
|
||||||
|
With this implementation, for example the first Batching Span Processor would have `batching_span_processor/0`
|
||||||
|
as `otel.component.name`, the second one `batching_span_processor/1` and so on.
|
||||||
|
These values will therefore be reused in the case of an application restart.
|
||||||
|
|
||||||
|
**[2] `otel.component.type`:** If none of the standardized values apply, implementations SHOULD use the language-defined name of the type.
|
||||||
|
E.g. for Java the fully qualified classname SHOULD be used in this case.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
`otel.component.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||||
|
|
||||||
|
| Value | Description | Stability |
|
||||||
|
|---|---|---|
|
||||||
|
| `batching_span_processor` | The builtin SDK Batching Span Processor |  |
|
||||||
|
| `otlp_grpc_span_exporter` | OTLP span exporter over gRPC with protobuf serialization |  |
|
||||||
|
| `otlp_http_json_span_exporter` | OTLP span exporter over HTTP with JSON serialization |  |
|
||||||
|
| `otlp_http_span_exporter` | OTLP span exporter over HTTP with protobuf serialization |  |
|
||||||
|
| `simple_span_processor` | The builtin SDK Simple Span Processor |  |
|
||||||
|
|
||||||
## OTel Scope Attributes
|
## OTel Scope Attributes
|
||||||
|
|
||||||
Attributes used by non-OTLP exporters to represent OpenTelemetry Scope's concepts.
|
Attributes used by non-OTLP exporters to represent OpenTelemetry Scope's concepts.
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ The following semantic conventions surrounding metrics are defined:
|
||||||
* [K8s](/docs/system/k8s-metrics.md): For K8s metrics.
|
* [K8s](/docs/system/k8s-metrics.md): For K8s metrics.
|
||||||
* [Process](/docs/system/process-metrics.md): For standard process metrics.
|
* [Process](/docs/system/process-metrics.md): For standard process metrics.
|
||||||
* [Runtime Environment](/docs/runtime/README.md#metrics): For runtime environment metrics.
|
* [Runtime Environment](/docs/runtime/README.md#metrics): For runtime environment metrics.
|
||||||
|
* [OTel SDK Telemetry](/docs/otel/sdk-metrics.md): Metrics emitted by the OpenTelemetry SDK components.
|
||||||
|
|
||||||
Apart from semantic conventions for metrics, [traces](trace.md), [logs](logs.md), and [events](events.md), OpenTelemetry also
|
Apart from semantic conventions for metrics, [traces](trace.md), [logs](logs.md), and [events](events.md), OpenTelemetry also
|
||||||
defines the concept of overarching [Resources](https://github.com/open-telemetry/opentelemetry-specification/tree/v1.41.0/specification/resource/sdk.md) with
|
defines the concept of overarching [Resources](https://github.com/open-telemetry/opentelemetry-specification/tree/v1.41.0/specification/resource/sdk.md) with
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,456 @@
|
||||||
|
<!--- Hugo front matter used to generate the website version of this page:
|
||||||
|
linkTitle: SDK Metrics
|
||||||
|
--->
|
||||||
|
|
||||||
|
# Semantic Conventions for OpenTelemetry SDK metrics
|
||||||
|
|
||||||
|
**Status**: [Development][DocumentStatus]
|
||||||
|
|
||||||
|
This document describes metrics emitted by the OpenTelemetry SDK components themselves about their internal state.
|
||||||
|
|
||||||
|
<!-- Re-generate TOC with `make markdown-toc` -->
|
||||||
|
|
||||||
|
<!-- toc -->
|
||||||
|
|
||||||
|
- [Span Metrics](#span-metrics)
|
||||||
|
- [Metric: `otel.sdk.span.live.count`](#metric-otelsdkspanlivecount)
|
||||||
|
- [Metric: `otel.sdk.span.ended.count`](#metric-otelsdkspanendedcount)
|
||||||
|
- [Metric: `otel.sdk.processor.span.queue.size`](#metric-otelsdkprocessorspanqueuesize)
|
||||||
|
- [Metric: `otel.sdk.processor.span.queue.capacity`](#metric-otelsdkprocessorspanqueuecapacity)
|
||||||
|
- [Metric: `otel.sdk.processor.span.processed.count`](#metric-otelsdkprocessorspanprocessedcount)
|
||||||
|
- [Metric: `otel.sdk.exporter.span.inflight.count`](#metric-otelsdkexporterspaninflightcount)
|
||||||
|
- [Metric: `otel.sdk.exporter.span.exported.count`](#metric-otelsdkexporterspanexportedcount)
|
||||||
|
|
||||||
|
<!-- tocstop -->
|
||||||
|
|
||||||
|
## Span Metrics
|
||||||
|
|
||||||
|
### Metric: `otel.sdk.span.live.count`
|
||||||
|
|
||||||
|
This metric is [recommended][MetricRecommended].
|
||||||
|
|
||||||
|
<!-- semconv metric.otel.sdk.span.live.count -->
|
||||||
|
<!-- NOTE: THIS TEXT IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
|
||||||
|
<!-- see templates/registry/markdown/snippet.md.j2 -->
|
||||||
|
<!-- prettier-ignore-start -->
|
||||||
|
<!-- markdownlint-capture -->
|
||||||
|
<!-- markdownlint-disable -->
|
||||||
|
|
||||||
|
| Name | Instrument Type | Unit (UCUM) | Description | Stability |
|
||||||
|
| -------- | --------------- | ----------- | -------------- | --------- |
|
||||||
|
| `otel.sdk.span.live.count` | UpDownCounter | `{span}` | The number of created spans for which the end operation has not been called yet [1] |  |
|
||||||
|
|
||||||
|
**[1]:** For spans with `recording=true`: Implementations MUST record both `otel.sdk.span.live.count` and `otel.sdk.span.ended.count`.
|
||||||
|
For spans with `recording=false`: If implementations decide to record this metric, they MUST also record `otel.sdk.span.ended.count`.
|
||||||
|
|
||||||
|
| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| [`otel.span.sampling_result`](/docs/attributes-registry/otel.md) | string | The result value of the sampler for this span | `DROP`; `RECORD_ONLY`; `RECORD_AND_SAMPLE` | `Recommended` |  |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
`otel.span.sampling_result` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||||
|
|
||||||
|
| Value | Description | Stability |
|
||||||
|
|---|---|---|
|
||||||
|
| `DROP` | The span is not sampled and not recording |  |
|
||||||
|
| `RECORD_AND_SAMPLE` | The span is sampled and recording |  |
|
||||||
|
| `RECORD_ONLY` | The span is not sampled, but recording |  |
|
||||||
|
|
||||||
|
<!-- markdownlint-restore -->
|
||||||
|
<!-- prettier-ignore-end -->
|
||||||
|
<!-- END AUTOGENERATED TEXT -->
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
|
### Metric: `otel.sdk.span.ended.count`
|
||||||
|
|
||||||
|
This metric is [recommended][MetricRecommended].
|
||||||
|
|
||||||
|
<!-- semconv metric.otel.sdk.span.ended.count -->
|
||||||
|
<!-- NOTE: THIS TEXT IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
|
||||||
|
<!-- see templates/registry/markdown/snippet.md.j2 -->
|
||||||
|
<!-- prettier-ignore-start -->
|
||||||
|
<!-- markdownlint-capture -->
|
||||||
|
<!-- markdownlint-disable -->
|
||||||
|
|
||||||
|
| Name | Instrument Type | Unit (UCUM) | Description | Stability |
|
||||||
|
| -------- | --------------- | ----------- | -------------- | --------- |
|
||||||
|
| `otel.sdk.span.ended.count` | Counter | `{span}` | The number of created spans for which the end operation was called [1] |  |
|
||||||
|
|
||||||
|
**[1]:** For spans with `recording=true`: Implementations MUST record both `otel.sdk.span.live.count` and `otel.sdk.span.ended.count`.
|
||||||
|
For spans with `recording=false`: If implementations decide to record this metric, they MUST also record `otel.sdk.span.live.count`.
|
||||||
|
|
||||||
|
| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| [`otel.span.sampling_result`](/docs/attributes-registry/otel.md) | string | The result value of the sampler for this span | `DROP`; `RECORD_ONLY`; `RECORD_AND_SAMPLE` | `Recommended` |  |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
`otel.span.sampling_result` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||||
|
|
||||||
|
| Value | Description | Stability |
|
||||||
|
|---|---|---|
|
||||||
|
| `DROP` | The span is not sampled and not recording |  |
|
||||||
|
| `RECORD_AND_SAMPLE` | The span is sampled and recording |  |
|
||||||
|
| `RECORD_ONLY` | The span is not sampled, but recording |  |
|
||||||
|
|
||||||
|
<!-- markdownlint-restore -->
|
||||||
|
<!-- prettier-ignore-end -->
|
||||||
|
<!-- END AUTOGENERATED TEXT -->
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
|
### Metric: `otel.sdk.processor.span.queue.size`
|
||||||
|
|
||||||
|
This metric is [recommended][MetricRecommended].
|
||||||
|
|
||||||
|
<!-- semconv metric.otel.sdk.processor.span.queue.size -->
|
||||||
|
<!-- NOTE: THIS TEXT IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
|
||||||
|
<!-- see templates/registry/markdown/snippet.md.j2 -->
|
||||||
|
<!-- prettier-ignore-start -->
|
||||||
|
<!-- markdownlint-capture -->
|
||||||
|
<!-- markdownlint-disable -->
|
||||||
|
|
||||||
|
| Name | Instrument Type | Unit (UCUM) | Description | Stability |
|
||||||
|
| -------- | --------------- | ----------- | -------------- | --------- |
|
||||||
|
| `otel.sdk.processor.span.queue.size` | UpDownCounter | `{span}` | The number of spans in the queue of a given instance of an SDK span processor [1] |  |
|
||||||
|
|
||||||
|
**[1]:** Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor.
|
||||||
|
|
||||||
|
| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| [`otel.component.name`](/docs/attributes-registry/otel.md) | string | A name uniquely identifying the instance of the OpenTelemetry component within its containing SDK instance. [1] | `otlp_grpc_span_exporter/0`; `custom-name` | `Recommended` |  |
|
||||||
|
| [`otel.component.type`](/docs/attributes-registry/otel.md) | string | A name identifying the type of the OpenTelemetry component. [2] | `batching_span_processor`; `com.example.MySpanExporter` | `Recommended` |  |
|
||||||
|
|
||||||
|
**[1] `otel.component.name`:** Implementations SHOULD ensure a low cardinality for this attribute, even across application or SDK restarts.
|
||||||
|
E.g. implementations MUST NOT use UUIDs as values for this attribute.
|
||||||
|
|
||||||
|
Implementations MAY achieve these goals by following a `<otel.component.type>/<instance-counter>` pattern, e.g. `batching_span_processor/0`.
|
||||||
|
Hereby `otel.component.type` refers to the corresponding attribute value of the component.
|
||||||
|
|
||||||
|
The value of `instance-counter` MAY be automatically assigned by the component and uniqueness within the enclosing SDK instance MUST be guaranteed.
|
||||||
|
For example, `<instance-counter>` MAY be implemented by using a monotonically increasing counter (starting with `0`), which is incremented every time an
|
||||||
|
instance of the given component type is started.
|
||||||
|
|
||||||
|
With this implementation, for example the first Batching Span Processor would have `batching_span_processor/0`
|
||||||
|
as `otel.component.name`, the second one `batching_span_processor/1` and so on.
|
||||||
|
These values will therefore be reused in the case of an application restart.
|
||||||
|
|
||||||
|
**[2] `otel.component.type`:** If none of the standardized values apply, implementations SHOULD use the language-defined name of the type.
|
||||||
|
E.g. for Java the fully qualified classname SHOULD be used in this case.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
`otel.component.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||||
|
|
||||||
|
| Value | Description | Stability |
|
||||||
|
|---|---|---|
|
||||||
|
| `batching_span_processor` | The builtin SDK Batching Span Processor |  |
|
||||||
|
| `otlp_grpc_span_exporter` | OTLP span exporter over gRPC with protobuf serialization |  |
|
||||||
|
| `otlp_http_json_span_exporter` | OTLP span exporter over HTTP with JSON serialization |  |
|
||||||
|
| `otlp_http_span_exporter` | OTLP span exporter over HTTP with protobuf serialization |  |
|
||||||
|
| `simple_span_processor` | The builtin SDK Simple Span Processor |  |
|
||||||
|
|
||||||
|
<!-- markdownlint-restore -->
|
||||||
|
<!-- prettier-ignore-end -->
|
||||||
|
<!-- END AUTOGENERATED TEXT -->
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
|
### Metric: `otel.sdk.processor.span.queue.capacity`
|
||||||
|
|
||||||
|
This metric is [recommended][MetricRecommended].
|
||||||
|
|
||||||
|
<!-- semconv metric.otel.sdk.processor.span.queue.capacity -->
|
||||||
|
<!-- NOTE: THIS TEXT IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
|
||||||
|
<!-- see templates/registry/markdown/snippet.md.j2 -->
|
||||||
|
<!-- prettier-ignore-start -->
|
||||||
|
<!-- markdownlint-capture -->
|
||||||
|
<!-- markdownlint-disable -->
|
||||||
|
|
||||||
|
| Name | Instrument Type | Unit (UCUM) | Description | Stability |
|
||||||
|
| -------- | --------------- | ----------- | -------------- | --------- |
|
||||||
|
| `otel.sdk.processor.span.queue.capacity` | UpDownCounter | `{span}` | The maximum number of spans the queue of a given instance of an SDK span processor can hold [1] |  |
|
||||||
|
|
||||||
|
**[1]:** Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor.
|
||||||
|
|
||||||
|
| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| [`otel.component.name`](/docs/attributes-registry/otel.md) | string | A name uniquely identifying the instance of the OpenTelemetry component within its containing SDK instance. [1] | `otlp_grpc_span_exporter/0`; `custom-name` | `Recommended` |  |
|
||||||
|
| [`otel.component.type`](/docs/attributes-registry/otel.md) | string | A name identifying the type of the OpenTelemetry component. [2] | `batching_span_processor`; `com.example.MySpanExporter` | `Recommended` |  |
|
||||||
|
|
||||||
|
**[1] `otel.component.name`:** Implementations SHOULD ensure a low cardinality for this attribute, even across application or SDK restarts.
|
||||||
|
E.g. implementations MUST NOT use UUIDs as values for this attribute.
|
||||||
|
|
||||||
|
Implementations MAY achieve these goals by following a `<otel.component.type>/<instance-counter>` pattern, e.g. `batching_span_processor/0`.
|
||||||
|
Hereby `otel.component.type` refers to the corresponding attribute value of the component.
|
||||||
|
|
||||||
|
The value of `instance-counter` MAY be automatically assigned by the component and uniqueness within the enclosing SDK instance MUST be guaranteed.
|
||||||
|
For example, `<instance-counter>` MAY be implemented by using a monotonically increasing counter (starting with `0`), which is incremented every time an
|
||||||
|
instance of the given component type is started.
|
||||||
|
|
||||||
|
With this implementation, for example the first Batching Span Processor would have `batching_span_processor/0`
|
||||||
|
as `otel.component.name`, the second one `batching_span_processor/1` and so on.
|
||||||
|
These values will therefore be reused in the case of an application restart.
|
||||||
|
|
||||||
|
**[2] `otel.component.type`:** If none of the standardized values apply, implementations SHOULD use the language-defined name of the type.
|
||||||
|
E.g. for Java the fully qualified classname SHOULD be used in this case.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
`otel.component.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||||
|
|
||||||
|
| Value | Description | Stability |
|
||||||
|
|---|---|---|
|
||||||
|
| `batching_span_processor` | The builtin SDK Batching Span Processor |  |
|
||||||
|
| `otlp_grpc_span_exporter` | OTLP span exporter over gRPC with protobuf serialization |  |
|
||||||
|
| `otlp_http_json_span_exporter` | OTLP span exporter over HTTP with JSON serialization |  |
|
||||||
|
| `otlp_http_span_exporter` | OTLP span exporter over HTTP with protobuf serialization |  |
|
||||||
|
| `simple_span_processor` | The builtin SDK Simple Span Processor |  |
|
||||||
|
|
||||||
|
<!-- markdownlint-restore -->
|
||||||
|
<!-- prettier-ignore-end -->
|
||||||
|
<!-- END AUTOGENERATED TEXT -->
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
|
### Metric: `otel.sdk.processor.span.processed.count`
|
||||||
|
|
||||||
|
This metric is [recommended][MetricRecommended].
|
||||||
|
|
||||||
|
<!-- semconv metric.otel.sdk.processor.span.processed.count -->
|
||||||
|
<!-- NOTE: THIS TEXT IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
|
||||||
|
<!-- see templates/registry/markdown/snippet.md.j2 -->
|
||||||
|
<!-- prettier-ignore-start -->
|
||||||
|
<!-- markdownlint-capture -->
|
||||||
|
<!-- markdownlint-disable -->
|
||||||
|
|
||||||
|
| Name | Instrument Type | Unit (UCUM) | Description | Stability |
|
||||||
|
| -------- | --------------- | ----------- | -------------- | --------- |
|
||||||
|
| `otel.sdk.processor.span.processed.count` | Counter | `{span}` | The number of spans for which the processing has finished, either successful or failed [1] |  |
|
||||||
|
|
||||||
|
**[1]:** For successful processing, `error.type` MUST NOT be set. For failed processing, `error.type` must contain the failure cause.
|
||||||
|
For the SDK Simple and Batching Span Processor a span is considered to be processed already when it has been submitted to the exporter, not when the corresponding export call has finished.
|
||||||
|
|
||||||
|
| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| [`error.type`](/docs/attributes-registry/error.md) | string | A low-cardinality description of the failure reason. SDK Batching Span Processors MUST use `queue_full` for spans dropped due to a full queue. [1] | `queue_full` | `Recommended` |  |
|
||||||
|
| [`otel.component.name`](/docs/attributes-registry/otel.md) | string | A name uniquely identifying the instance of the OpenTelemetry component within its containing SDK instance. [2] | `otlp_grpc_span_exporter/0`; `custom-name` | `Recommended` |  |
|
||||||
|
| [`otel.component.type`](/docs/attributes-registry/otel.md) | string | A name identifying the type of the OpenTelemetry component. [3] | `batching_span_processor`; `com.example.MySpanExporter` | `Recommended` |  |
|
||||||
|
|
||||||
|
**[1] `error.type`:** The `error.type` SHOULD be predictable, and SHOULD have low cardinality.
|
||||||
|
|
||||||
|
When `error.type` is set to a type (e.g., an exception type), its
|
||||||
|
canonical class name identifying the type within the artifact SHOULD be used.
|
||||||
|
|
||||||
|
Instrumentations SHOULD document the list of errors they report.
|
||||||
|
|
||||||
|
The cardinality of `error.type` within one instrumentation library SHOULD be low.
|
||||||
|
Telemetry consumers that aggregate data from multiple instrumentation libraries and applications
|
||||||
|
should be prepared for `error.type` to have high cardinality at query time when no
|
||||||
|
additional filters are applied.
|
||||||
|
|
||||||
|
If the operation has completed successfully, instrumentations SHOULD NOT set `error.type`.
|
||||||
|
|
||||||
|
If a specific domain defines its own set of error identifiers (such as HTTP or gRPC status codes),
|
||||||
|
it's RECOMMENDED to:
|
||||||
|
|
||||||
|
- Use a domain-specific attribute
|
||||||
|
- Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not.
|
||||||
|
|
||||||
|
**[2] `otel.component.name`:** Implementations SHOULD ensure a low cardinality for this attribute, even across application or SDK restarts.
|
||||||
|
E.g. implementations MUST NOT use UUIDs as values for this attribute.
|
||||||
|
|
||||||
|
Implementations MAY achieve these goals by following a `<otel.component.type>/<instance-counter>` pattern, e.g. `batching_span_processor/0`.
|
||||||
|
Hereby `otel.component.type` refers to the corresponding attribute value of the component.
|
||||||
|
|
||||||
|
The value of `instance-counter` MAY be automatically assigned by the component and uniqueness within the enclosing SDK instance MUST be guaranteed.
|
||||||
|
For example, `<instance-counter>` MAY be implemented by using a monotonically increasing counter (starting with `0`), which is incremented every time an
|
||||||
|
instance of the given component type is started.
|
||||||
|
|
||||||
|
With this implementation, for example the first Batching Span Processor would have `batching_span_processor/0`
|
||||||
|
as `otel.component.name`, the second one `batching_span_processor/1` and so on.
|
||||||
|
These values will therefore be reused in the case of an application restart.
|
||||||
|
|
||||||
|
**[3] `otel.component.type`:** If none of the standardized values apply, implementations SHOULD use the language-defined name of the type.
|
||||||
|
E.g. for Java the fully qualified classname SHOULD be used in this case.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
`error.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||||
|
|
||||||
|
| Value | Description | Stability |
|
||||||
|
|---|---|---|
|
||||||
|
| `_OTHER` | A fallback error value to be used when the instrumentation doesn't define a custom value. |  |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
`otel.component.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||||
|
|
||||||
|
| Value | Description | Stability |
|
||||||
|
|---|---|---|
|
||||||
|
| `batching_span_processor` | The builtin SDK Batching Span Processor |  |
|
||||||
|
| `otlp_grpc_span_exporter` | OTLP span exporter over gRPC with protobuf serialization |  |
|
||||||
|
| `otlp_http_json_span_exporter` | OTLP span exporter over HTTP with JSON serialization |  |
|
||||||
|
| `otlp_http_span_exporter` | OTLP span exporter over HTTP with protobuf serialization |  |
|
||||||
|
| `simple_span_processor` | The builtin SDK Simple Span Processor |  |
|
||||||
|
|
||||||
|
<!-- markdownlint-restore -->
|
||||||
|
<!-- prettier-ignore-end -->
|
||||||
|
<!-- END AUTOGENERATED TEXT -->
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
|
### Metric: `otel.sdk.exporter.span.inflight.count`
|
||||||
|
|
||||||
|
This metric is [recommended][MetricRecommended].
|
||||||
|
|
||||||
|
<!-- semconv metric.otel.sdk.exporter.span.inflight.count -->
|
||||||
|
<!-- NOTE: THIS TEXT IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
|
||||||
|
<!-- see templates/registry/markdown/snippet.md.j2 -->
|
||||||
|
<!-- prettier-ignore-start -->
|
||||||
|
<!-- markdownlint-capture -->
|
||||||
|
<!-- markdownlint-disable -->
|
||||||
|
|
||||||
|
| Name | Instrument Type | Unit (UCUM) | Description | Stability |
|
||||||
|
| -------- | --------------- | ----------- | -------------- | --------- |
|
||||||
|
| `otel.sdk.exporter.span.inflight.count` | UpDownCounter | `{span}` | The number of spans which were passed to the exporter, but that have not been exported yet (neither successful, nor failed) [1] |  |
|
||||||
|
|
||||||
|
**[1]:** For successful exports, `error.type` MUST NOT be set. For failed exports, `error.type` must contain the failure cause.
|
||||||
|
|
||||||
|
| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| [`otel.component.name`](/docs/attributes-registry/otel.md) | string | A name uniquely identifying the instance of the OpenTelemetry component within its containing SDK instance. [1] | `otlp_grpc_span_exporter/0`; `custom-name` | `Recommended` |  |
|
||||||
|
| [`otel.component.type`](/docs/attributes-registry/otel.md) | string | A name identifying the type of the OpenTelemetry component. [2] | `batching_span_processor`; `com.example.MySpanExporter` | `Recommended` |  |
|
||||||
|
| [`server.address`](/docs/attributes-registry/server.md) | string | Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. [3] | `example.com`; `10.1.2.80`; `/tmp/my.sock` | `Recommended` when applicable |  |
|
||||||
|
| [`server.port`](/docs/attributes-registry/server.md) | int | Server port number. [4] | `80`; `8080`; `443` | `Recommended` when applicable |  |
|
||||||
|
|
||||||
|
**[1] `otel.component.name`:** Implementations SHOULD ensure a low cardinality for this attribute, even across application or SDK restarts.
|
||||||
|
E.g. implementations MUST NOT use UUIDs as values for this attribute.
|
||||||
|
|
||||||
|
Implementations MAY achieve these goals by following a `<otel.component.type>/<instance-counter>` pattern, e.g. `batching_span_processor/0`.
|
||||||
|
Hereby `otel.component.type` refers to the corresponding attribute value of the component.
|
||||||
|
|
||||||
|
The value of `instance-counter` MAY be automatically assigned by the component and uniqueness within the enclosing SDK instance MUST be guaranteed.
|
||||||
|
For example, `<instance-counter>` MAY be implemented by using a monotonically increasing counter (starting with `0`), which is incremented every time an
|
||||||
|
instance of the given component type is started.
|
||||||
|
|
||||||
|
With this implementation, for example the first Batching Span Processor would have `batching_span_processor/0`
|
||||||
|
as `otel.component.name`, the second one `batching_span_processor/1` and so on.
|
||||||
|
These values will therefore be reused in the case of an application restart.
|
||||||
|
|
||||||
|
**[2] `otel.component.type`:** If none of the standardized values apply, implementations SHOULD use the language-defined name of the type.
|
||||||
|
E.g. for Java the fully qualified classname SHOULD be used in this case.
|
||||||
|
|
||||||
|
**[3] `server.address`:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent the server address behind any intermediaries, for example proxies, if it's available.
|
||||||
|
|
||||||
|
**[4] `server.port`:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries, for example proxies, if it's available.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
`otel.component.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||||
|
|
||||||
|
| Value | Description | Stability |
|
||||||
|
|---|---|---|
|
||||||
|
| `batching_span_processor` | The builtin SDK Batching Span Processor |  |
|
||||||
|
| `otlp_grpc_span_exporter` | OTLP span exporter over gRPC with protobuf serialization |  |
|
||||||
|
| `otlp_http_json_span_exporter` | OTLP span exporter over HTTP with JSON serialization |  |
|
||||||
|
| `otlp_http_span_exporter` | OTLP span exporter over HTTP with protobuf serialization |  |
|
||||||
|
| `simple_span_processor` | The builtin SDK Simple Span Processor |  |
|
||||||
|
|
||||||
|
<!-- markdownlint-restore -->
|
||||||
|
<!-- prettier-ignore-end -->
|
||||||
|
<!-- END AUTOGENERATED TEXT -->
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
|
### Metric: `otel.sdk.exporter.span.exported.count`
|
||||||
|
|
||||||
|
This metric is [recommended][MetricRecommended].
|
||||||
|
|
||||||
|
<!-- semconv metric.otel.sdk.exporter.span.exported.count -->
|
||||||
|
<!-- NOTE: THIS TEXT IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
|
||||||
|
<!-- see templates/registry/markdown/snippet.md.j2 -->
|
||||||
|
<!-- prettier-ignore-start -->
|
||||||
|
<!-- markdownlint-capture -->
|
||||||
|
<!-- markdownlint-disable -->
|
||||||
|
|
||||||
|
| Name | Instrument Type | Unit (UCUM) | Description | Stability |
|
||||||
|
| -------- | --------------- | ----------- | -------------- | --------- |
|
||||||
|
| `otel.sdk.exporter.span.exported.count` | Counter | `{span}` | The number of spans for which the export has finished, either successful or failed [1] |  |
|
||||||
|
|
||||||
|
**[1]:** For successful exports, `error.type` MUST NOT be set. For failed exports, `error.type` must contain the failure cause.
|
||||||
|
For exporters with partial success semantics (e.g. OTLP with `rejected_spans`), rejected spans must count as failed and only non-rejected spans count as success.
|
||||||
|
If no rejection reason is available, `rejected` SHOULD be used as value for `error.type`.
|
||||||
|
|
||||||
|
| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| [`error.type`](/docs/attributes-registry/error.md) | string | Describes a class of error the operation ended with. [1] | `rejected`; `timeout`; `500`; `java.net.UnknownHostException` | `Recommended` |  |
|
||||||
|
| [`otel.component.name`](/docs/attributes-registry/otel.md) | string | A name uniquely identifying the instance of the OpenTelemetry component within its containing SDK instance. [2] | `otlp_grpc_span_exporter/0`; `custom-name` | `Recommended` |  |
|
||||||
|
| [`otel.component.type`](/docs/attributes-registry/otel.md) | string | A name identifying the type of the OpenTelemetry component. [3] | `batching_span_processor`; `com.example.MySpanExporter` | `Recommended` |  |
|
||||||
|
| [`server.address`](/docs/attributes-registry/server.md) | string | Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. [4] | `example.com`; `10.1.2.80`; `/tmp/my.sock` | `Recommended` when applicable |  |
|
||||||
|
| [`server.port`](/docs/attributes-registry/server.md) | int | Server port number. [5] | `80`; `8080`; `443` | `Recommended` when applicable |  |
|
||||||
|
|
||||||
|
**[1] `error.type`:** The `error.type` SHOULD be predictable, and SHOULD have low cardinality.
|
||||||
|
|
||||||
|
When `error.type` is set to a type (e.g., an exception type), its
|
||||||
|
canonical class name identifying the type within the artifact SHOULD be used.
|
||||||
|
|
||||||
|
Instrumentations SHOULD document the list of errors they report.
|
||||||
|
|
||||||
|
The cardinality of `error.type` within one instrumentation library SHOULD be low.
|
||||||
|
Telemetry consumers that aggregate data from multiple instrumentation libraries and applications
|
||||||
|
should be prepared for `error.type` to have high cardinality at query time when no
|
||||||
|
additional filters are applied.
|
||||||
|
|
||||||
|
If the operation has completed successfully, instrumentations SHOULD NOT set `error.type`.
|
||||||
|
|
||||||
|
If a specific domain defines its own set of error identifiers (such as HTTP or gRPC status codes),
|
||||||
|
it's RECOMMENDED to:
|
||||||
|
|
||||||
|
- Use a domain-specific attribute
|
||||||
|
- Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not.
|
||||||
|
|
||||||
|
**[2] `otel.component.name`:** Implementations SHOULD ensure a low cardinality for this attribute, even across application or SDK restarts.
|
||||||
|
E.g. implementations MUST NOT use UUIDs as values for this attribute.
|
||||||
|
|
||||||
|
Implementations MAY achieve these goals by following a `<otel.component.type>/<instance-counter>` pattern, e.g. `batching_span_processor/0`.
|
||||||
|
Hereby `otel.component.type` refers to the corresponding attribute value of the component.
|
||||||
|
|
||||||
|
The value of `instance-counter` MAY be automatically assigned by the component and uniqueness within the enclosing SDK instance MUST be guaranteed.
|
||||||
|
For example, `<instance-counter>` MAY be implemented by using a monotonically increasing counter (starting with `0`), which is incremented every time an
|
||||||
|
instance of the given component type is started.
|
||||||
|
|
||||||
|
With this implementation, for example the first Batching Span Processor would have `batching_span_processor/0`
|
||||||
|
as `otel.component.name`, the second one `batching_span_processor/1` and so on.
|
||||||
|
These values will therefore be reused in the case of an application restart.
|
||||||
|
|
||||||
|
**[3] `otel.component.type`:** If none of the standardized values apply, implementations SHOULD use the language-defined name of the type.
|
||||||
|
E.g. for Java the fully qualified classname SHOULD be used in this case.
|
||||||
|
|
||||||
|
**[4] `server.address`:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent the server address behind any intermediaries, for example proxies, if it's available.
|
||||||
|
|
||||||
|
**[5] `server.port`:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries, for example proxies, if it's available.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
`error.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||||
|
|
||||||
|
| Value | Description | Stability |
|
||||||
|
|---|---|---|
|
||||||
|
| `_OTHER` | A fallback error value to be used when the instrumentation doesn't define a custom value. |  |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
`otel.component.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||||
|
|
||||||
|
| Value | Description | Stability |
|
||||||
|
|---|---|---|
|
||||||
|
| `batching_span_processor` | The builtin SDK Batching Span Processor |  |
|
||||||
|
| `otlp_grpc_span_exporter` | OTLP span exporter over gRPC with protobuf serialization |  |
|
||||||
|
| `otlp_http_json_span_exporter` | OTLP span exporter over HTTP with JSON serialization |  |
|
||||||
|
| `otlp_http_span_exporter` | OTLP span exporter over HTTP with protobuf serialization |  |
|
||||||
|
| `simple_span_processor` | The builtin SDK Simple Span Processor |  |
|
||||||
|
|
||||||
|
<!-- markdownlint-restore -->
|
||||||
|
<!-- prettier-ignore-end -->
|
||||||
|
<!-- END AUTOGENERATED TEXT -->
|
||||||
|
<!-- endsemconv -->
|
||||||
|
|
||||||
|
[DocumentStatus]: https://opentelemetry.io/docs/specs/otel/document-status
|
||||||
|
[MetricRecommended]: /docs/general/metric-requirement-level.md#recommended
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
groups:
|
groups:
|
||||||
- id: otel_span
|
- id: otel_span
|
||||||
type: attribute_group
|
type: attribute_group
|
||||||
brief: Span attributes used by non-OTLP exporters to represent OpenTelemetry Span's concepts.
|
brief: Span attributes used by non-OTLP exporters or on metrics to represent OpenTelemetry Span's concepts.
|
||||||
attributes:
|
attributes:
|
||||||
- ref: otel.status_code
|
- ref: otel.status_code
|
||||||
requirement_level: recommended
|
requirement_level: recommended
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,112 @@
|
||||||
|
groups:
|
||||||
|
- id: metric.otel.sdk.span.live.count
|
||||||
|
type: metric
|
||||||
|
metric_name: otel.sdk.span.live.count
|
||||||
|
stability: development
|
||||||
|
brief: "The number of created spans for which the end operation has not been called yet"
|
||||||
|
instrument: updowncounter
|
||||||
|
unit: "{span}"
|
||||||
|
note: |
|
||||||
|
For spans with `recording=true`: Implementations MUST record both `otel.sdk.span.live.count` and `otel.sdk.span.ended.count`.
|
||||||
|
For spans with `recording=false`: If implementations decide to record this metric, they MUST also record `otel.sdk.span.ended.count`.
|
||||||
|
attributes:
|
||||||
|
- ref: otel.span.sampling_result
|
||||||
|
|
||||||
|
- id: metric.otel.sdk.span.ended.count
|
||||||
|
type: metric
|
||||||
|
metric_name: otel.sdk.span.ended.count
|
||||||
|
stability: development
|
||||||
|
brief: "The number of created spans for which the end operation was called"
|
||||||
|
instrument: counter
|
||||||
|
unit: "{span}"
|
||||||
|
note: |
|
||||||
|
For spans with `recording=true`: Implementations MUST record both `otel.sdk.span.live.count` and `otel.sdk.span.ended.count`.
|
||||||
|
For spans with `recording=false`: If implementations decide to record this metric, they MUST also record `otel.sdk.span.live.count`.
|
||||||
|
attributes:
|
||||||
|
- ref: otel.span.sampling_result
|
||||||
|
|
||||||
|
- id: metric.otel.sdk.processor.span.queue.size
|
||||||
|
type: metric
|
||||||
|
metric_name: otel.sdk.processor.span.queue.size
|
||||||
|
stability: development
|
||||||
|
brief: "The number of spans in the queue of a given instance of an SDK span processor"
|
||||||
|
note: |
|
||||||
|
Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor.
|
||||||
|
instrument: updowncounter
|
||||||
|
unit: "{span}"
|
||||||
|
attributes:
|
||||||
|
- ref: otel.component.type
|
||||||
|
- ref: otel.component.name
|
||||||
|
|
||||||
|
- id: metric.otel.sdk.processor.span.queue.capacity
|
||||||
|
type: metric
|
||||||
|
metric_name: otel.sdk.processor.span.queue.capacity
|
||||||
|
stability: development
|
||||||
|
brief: "The maximum number of spans the queue of a given instance of an SDK span processor can hold"
|
||||||
|
note: |
|
||||||
|
Only applies to span processors which use a queue, e.g. the SDK Batching Span Processor.
|
||||||
|
instrument: updowncounter
|
||||||
|
unit: "{span}"
|
||||||
|
attributes:
|
||||||
|
- ref: otel.component.type
|
||||||
|
- ref: otel.component.name
|
||||||
|
|
||||||
|
- id: metric.otel.sdk.processor.span.processed.count
|
||||||
|
type: metric
|
||||||
|
metric_name: otel.sdk.processor.span.processed.count
|
||||||
|
stability: development
|
||||||
|
brief: "The number of spans for which the processing has finished, either successful or failed"
|
||||||
|
note: |
|
||||||
|
For successful processing, `error.type` MUST NOT be set. For failed processing, `error.type` must contain the failure cause.
|
||||||
|
For the SDK Simple and Batching Span Processor a span is considered to be processed already when it has been submitted to the exporter, not when the corresponding export call has finished.
|
||||||
|
instrument: counter
|
||||||
|
unit: "{span}"
|
||||||
|
attributes:
|
||||||
|
- ref: otel.component.type
|
||||||
|
- ref: otel.component.name
|
||||||
|
- ref: error.type
|
||||||
|
brief: >
|
||||||
|
A low-cardinality description of the failure reason. SDK Batching Span Processors MUST use `queue_full` for spans dropped due to a full queue.
|
||||||
|
examples: ["queue_full"]
|
||||||
|
|
||||||
|
- id: metric.otel.sdk.exporter.span.inflight.count
|
||||||
|
type: metric
|
||||||
|
metric_name: otel.sdk.exporter.span.inflight.count
|
||||||
|
stability: development
|
||||||
|
brief: "The number of spans which were passed to the exporter, but that have not been exported yet (neither successful, nor failed)"
|
||||||
|
note: |
|
||||||
|
For successful exports, `error.type` MUST NOT be set. For failed exports, `error.type` must contain the failure cause.
|
||||||
|
instrument: updowncounter
|
||||||
|
unit: "{span}"
|
||||||
|
attributes:
|
||||||
|
- ref: otel.component.type
|
||||||
|
- ref: otel.component.name
|
||||||
|
- ref: server.address
|
||||||
|
requirement_level:
|
||||||
|
recommended: when applicable
|
||||||
|
- ref: server.port
|
||||||
|
requirement_level:
|
||||||
|
recommended: when applicable
|
||||||
|
|
||||||
|
- id: metric.otel.sdk.exporter.span.exported.count
|
||||||
|
type: metric
|
||||||
|
metric_name: otel.sdk.exporter.span.exported.count
|
||||||
|
stability: development
|
||||||
|
brief: "The number of spans for which the export has finished, either successful or failed"
|
||||||
|
note: |
|
||||||
|
For successful exports, `error.type` MUST NOT be set. For failed exports, `error.type` must contain the failure cause.
|
||||||
|
For exporters with partial success semantics (e.g. OTLP with `rejected_spans`), rejected spans must count as failed and only non-rejected spans count as success.
|
||||||
|
If no rejection reason is available, `rejected` SHOULD be used as value for `error.type`.
|
||||||
|
instrument: counter
|
||||||
|
unit: "{span}"
|
||||||
|
attributes:
|
||||||
|
- ref: otel.component.type
|
||||||
|
- ref: otel.component.name
|
||||||
|
- ref: server.address
|
||||||
|
requirement_level:
|
||||||
|
recommended: when applicable
|
||||||
|
- ref: server.port
|
||||||
|
requirement_level:
|
||||||
|
recommended: when applicable
|
||||||
|
- ref: error.type
|
||||||
|
examples: ["rejected", "timeout", "500", "java.net.UnknownHostException"]
|
||||||
|
|
@ -22,6 +22,23 @@ groups:
|
||||||
brief: "Description of the Status if it has a value, otherwise not set."
|
brief: "Description of the Status if it has a value, otherwise not set."
|
||||||
examples: ['resource not found']
|
examples: ['resource not found']
|
||||||
stability: stable
|
stability: stable
|
||||||
|
- id: otel.span.sampling_result
|
||||||
|
type:
|
||||||
|
members:
|
||||||
|
- id: drop
|
||||||
|
value: DROP
|
||||||
|
brief: 'The span is not sampled and not recording'
|
||||||
|
stability: development
|
||||||
|
- id: record_only
|
||||||
|
value: RECORD_ONLY
|
||||||
|
brief: 'The span is not sampled, but recording'
|
||||||
|
stability: development
|
||||||
|
- id: record_and_sample
|
||||||
|
value: RECORD_AND_SAMPLE
|
||||||
|
brief: 'The span is sampled and recording'
|
||||||
|
stability: development
|
||||||
|
brief: "The result value of the sampler for this span"
|
||||||
|
stability: development
|
||||||
- id: registry.otel.scope
|
- id: registry.otel.scope
|
||||||
type: attribute_group
|
type: attribute_group
|
||||||
display_name: OTel Scope Attributes
|
display_name: OTel Scope Attributes
|
||||||
|
|
@ -37,3 +54,63 @@ groups:
|
||||||
brief: The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP).
|
brief: The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP).
|
||||||
examples: ['1.0.0']
|
examples: ['1.0.0']
|
||||||
stability: stable
|
stability: stable
|
||||||
|
- id: registry.otel.component
|
||||||
|
type: attribute_group
|
||||||
|
display_name: OTel Component Attributes
|
||||||
|
brief: Attributes used for OpenTelemetry component self-monitoring
|
||||||
|
attributes:
|
||||||
|
- id: otel.component.type
|
||||||
|
type:
|
||||||
|
members:
|
||||||
|
- id: batching_span_processor
|
||||||
|
value: "batching_span_processor"
|
||||||
|
brief: >
|
||||||
|
The builtin SDK Batching Span Processor
|
||||||
|
stability: development
|
||||||
|
- id: simple_span_processor
|
||||||
|
value: "simple_span_processor"
|
||||||
|
brief: >
|
||||||
|
The builtin SDK Simple Span Processor
|
||||||
|
stability: development
|
||||||
|
- id: otlp_grpc_span_exporter
|
||||||
|
value: "otlp_grpc_span_exporter"
|
||||||
|
brief: >
|
||||||
|
OTLP span exporter over gRPC with protobuf serialization
|
||||||
|
stability: development
|
||||||
|
- id: otlp_http_span_exporter
|
||||||
|
value: "otlp_http_span_exporter"
|
||||||
|
brief: >
|
||||||
|
OTLP span exporter over HTTP with protobuf serialization
|
||||||
|
stability: development
|
||||||
|
- id: otlp_http_json_span_exporter
|
||||||
|
value: "otlp_http_json_span_exporter"
|
||||||
|
brief: >
|
||||||
|
OTLP span exporter over HTTP with JSON serialization
|
||||||
|
stability: development
|
||||||
|
stability: development
|
||||||
|
brief: >
|
||||||
|
A name identifying the type of the OpenTelemetry component.
|
||||||
|
note: |
|
||||||
|
If none of the standardized values apply, implementations SHOULD use the language-defined name of the type.
|
||||||
|
E.g. for Java the fully qualified classname SHOULD be used in this case.
|
||||||
|
examples: ["batching_span_processor", "com.example.MySpanExporter"]
|
||||||
|
- id: otel.component.name
|
||||||
|
type: string
|
||||||
|
stability: development
|
||||||
|
brief: >
|
||||||
|
A name uniquely identifying the instance of the OpenTelemetry component within its containing SDK instance.
|
||||||
|
note: |
|
||||||
|
Implementations SHOULD ensure a low cardinality for this attribute, even across application or SDK restarts.
|
||||||
|
E.g. implementations MUST NOT use UUIDs as values for this attribute.
|
||||||
|
|
||||||
|
Implementations MAY achieve these goals by following a `<otel.component.type>/<instance-counter>` pattern, e.g. `batching_span_processor/0`.
|
||||||
|
Hereby `otel.component.type` refers to the corresponding attribute value of the component.
|
||||||
|
|
||||||
|
The value of `instance-counter` MAY be automatically assigned by the component and uniqueness within the enclosing SDK instance MUST be guaranteed.
|
||||||
|
For example, `<instance-counter>` MAY be implemented by using a monotonically increasing counter (starting with `0`), which is incremented every time an
|
||||||
|
instance of the given component type is started.
|
||||||
|
|
||||||
|
With this implementation, for example the first Batching Span Processor would have `batching_span_processor/0`
|
||||||
|
as `otel.component.name`, the second one `batching_span_processor/1` and so on.
|
||||||
|
These values will therefore be reused in the case of an application restart.
|
||||||
|
examples: ["otlp_grpc_span_exporter/0", "custom-name"]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue