Remove .count suffix from span health metrics (#2042)

Co-authored-by: Liudmila Molkova <limolkova@microsoft.com>
This commit is contained in:
Jonas Kunz 2025-04-09 06:06:33 +02:00 committed by GitHub
parent e4d26b262b
commit 87cef1eb5b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 113 additions and 38 deletions

View File

@ -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: 'breaking'
# 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: Rename span health metrics to remove the .count suffixes
# 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: [1979]
# (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:

View File

@ -13,13 +13,14 @@ This document describes metrics emitted by the OpenTelemetry SDK components them
<!-- toc -->
- [Span metrics](#span-metrics)
- [Metric: `otel.sdk.span.live.count`](#metric-otelsdkspanlivecount)
- [Metric: `otel.sdk.span.ended.count`](#metric-otelsdkspanendedcount)
- [Metric: `otel.sdk.span.live`](#metric-otelsdkspanlive)
- [Metric: `otel.sdk.span.ended`](#metric-otelsdkspanended)
- [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)
- [Metric: `otel.sdk.processor.span.processed`](#metric-otelsdkprocessorspanprocessed)
- [Metric: `otel.sdk.exporter.span.inflight`](#metric-otelsdkexporterspaninflight)
- [Metric: `otel.sdk.exporter.span.exported`](#metric-otelsdkexporterspanexported)
- [Log metrics](#log-metrics)
- [Metric: `otel.sdk.log.created`](#metric-otelsdklogcreated)
- [Metric: `otel.sdk.processor.log.queue.size`](#metric-otelsdkprocessorlogqueuesize)
- [Metric: `otel.sdk.processor.log.queue.capacity`](#metric-otelsdkprocessorlogqueuecapacity)
@ -31,11 +32,11 @@ This document describes metrics emitted by the OpenTelemetry SDK components them
## Span metrics
### Metric: `otel.sdk.span.live.count`
### Metric: `otel.sdk.span.live`
This metric is [recommended][MetricRecommended].
<!-- semconv metric.otel.sdk.span.live.count -->
<!-- semconv metric.otel.sdk.span.live -->
<!-- NOTE: THIS TEXT IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
<!-- see templates/registry/markdown/snippet.md.j2 -->
<!-- prettier-ignore-start -->
@ -44,10 +45,10 @@ This metric is [recommended][MetricRecommended].
| 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] | ![Development](https://img.shields.io/badge/-development-blue) |
| `otel.sdk.span.live` | UpDownCounter | `{span}` | The number of created spans for which the end operation has not been called yet [1] | ![Development](https://img.shields.io/badge/-development-blue) |
**[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`.
**[1]:** For spans with `recording=true`: Implementations MUST record both `otel.sdk.span.live` and `otel.sdk.span.ended`.
For spans with `recording=false`: If implementations decide to record this metric, they MUST also record `otel.sdk.span.ended`.
| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
|---|---|---|---|---|---|
@ -68,11 +69,11 @@ For spans with `recording=false`: If implementations decide to record this metri
<!-- END AUTOGENERATED TEXT -->
<!-- endsemconv -->
### Metric: `otel.sdk.span.ended.count`
### Metric: `otel.sdk.span.ended`
This metric is [recommended][MetricRecommended].
<!-- semconv metric.otel.sdk.span.ended.count -->
<!-- semconv metric.otel.sdk.span.ended -->
<!-- NOTE: THIS TEXT IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
<!-- see templates/registry/markdown/snippet.md.j2 -->
<!-- prettier-ignore-start -->
@ -81,10 +82,10 @@ This metric is [recommended][MetricRecommended].
| 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] | ![Development](https://img.shields.io/badge/-development-blue) |
| `otel.sdk.span.ended` | Counter | `{span}` | The number of created spans for which the end operation was called [1] | ![Development](https://img.shields.io/badge/-development-blue) |
**[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`.
**[1]:** For spans with `recording=true`: Implementations MUST record both `otel.sdk.span.live` and `otel.sdk.span.ended`.
For spans with `recording=false`: If implementations decide to record this metric, they MUST also record `otel.sdk.span.live`.
| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
|---|---|---|---|---|---|
@ -227,11 +228,11 @@ E.g. for Java the fully qualified classname SHOULD be used in this case.
<!-- END AUTOGENERATED TEXT -->
<!-- endsemconv -->
### Metric: `otel.sdk.processor.span.processed.count`
### Metric: `otel.sdk.processor.span.processed`
This metric is [recommended][MetricRecommended].
<!-- semconv metric.otel.sdk.processor.span.processed.count -->
<!-- semconv metric.otel.sdk.processor.span.processed -->
<!-- NOTE: THIS TEXT IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
<!-- see templates/registry/markdown/snippet.md.j2 -->
<!-- prettier-ignore-start -->
@ -240,7 +241,7 @@ This metric is [recommended][MetricRecommended].
| 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] | ![Development](https://img.shields.io/badge/-development-blue) |
| `otel.sdk.processor.span.processed` | Counter | `{span}` | The number of spans for which the processing has finished, either successful or failed [1] | ![Development](https://img.shields.io/badge/-development-blue) |
**[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.
@ -318,11 +319,11 @@ E.g. for Java the fully qualified classname SHOULD be used in this case.
<!-- END AUTOGENERATED TEXT -->
<!-- endsemconv -->
### Metric: `otel.sdk.exporter.span.inflight.count`
### Metric: `otel.sdk.exporter.span.inflight`
This metric is [recommended][MetricRecommended].
<!-- semconv metric.otel.sdk.exporter.span.inflight.count -->
<!-- semconv metric.otel.sdk.exporter.span.inflight -->
<!-- NOTE: THIS TEXT IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
<!-- see templates/registry/markdown/snippet.md.j2 -->
<!-- prettier-ignore-start -->
@ -331,7 +332,7 @@ This metric is [recommended][MetricRecommended].
| 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] | ![Development](https://img.shields.io/badge/-development-blue) |
| `otel.sdk.exporter.span.inflight` | UpDownCounter | `{span}` | The number of spans which were passed to the exporter, but that have not been exported yet (neither successful, nor failed) [1] | ![Development](https://img.shields.io/badge/-development-blue) |
**[1]:** For successful exports, `error.type` MUST NOT be set. For failed exports, `error.type` must contain the failure cause.
@ -385,11 +386,11 @@ E.g. for Java the fully qualified classname SHOULD be used in this case.
<!-- END AUTOGENERATED TEXT -->
<!-- endsemconv -->
### Metric: `otel.sdk.exporter.span.exported.count`
### Metric: `otel.sdk.exporter.span.exported`
This metric is [recommended][MetricRecommended].
<!-- semconv metric.otel.sdk.exporter.span.exported.count -->
<!-- semconv metric.otel.sdk.exporter.span.exported -->
<!-- NOTE: THIS TEXT IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
<!-- see templates/registry/markdown/snippet.md.j2 -->
<!-- prettier-ignore-start -->
@ -398,7 +399,7 @@ This metric is [recommended][MetricRecommended].
| 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] | ![Development](https://img.shields.io/badge/-development-blue) |
| `otel.sdk.exporter.span.exported` | Counter | `{span}` | The number of spans for which the export has finished, either successful or failed [1] | ![Development](https://img.shields.io/badge/-development-blue) |
**[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.
@ -483,6 +484,8 @@ E.g. for Java the fully qualified classname SHOULD be used in this case.
<!-- END AUTOGENERATED TEXT -->
<!-- endsemconv -->
## Log metrics
### Metric: `otel.sdk.log.created`
This metric is [recommended][MetricRecommended].

View File

@ -0,0 +1,41 @@
groups:
- id: metric.otel.sdk.span.live.count
type: metric
metric_name: otel.sdk.span.live.count
stability: development
deprecated: "Renamed to `otel.sdk.span.live`."
brief: "Deprecated, use `otel.sdk.span.live` instead."
instrument: updowncounter
unit: "{span}"
- id: metric.otel.sdk.span.ended.count
type: metric
metric_name: otel.sdk.span.ended.count
stability: development
deprecated: "Renamed to `otel.sdk.span.ended`."
brief: "Deprecated, use `otel.sdk.span.ended` instead."
instrument: counter
unit: "{span}"
- id: metric.otel.sdk.processor.span.processed.count
type: metric
metric_name: otel.sdk.processor.span.processed.count
stability: development
deprecated: "Renamed to `otel.sdk.processor.span.processed`."
brief: "Deprecated, use `otel.sdk.processor.span.processed` instead."
instrument: updowncounter
unit: "{span}"
- id: metric.otel.sdk.exporter.span.inflight.count
type: metric
metric_name: otel.sdk.exporter.span.inflight.count
stability: development
deprecated: "Renamed to `otel.sdk.exporter.span.inflight`."
brief: "Deprecated, use `otel.sdk.exporter.span.inflight` instead."
instrument: updowncounter
unit: "{span}"
- id: metric.otel.sdk.exporter.span.exported.count
type: metric
metric_name: otel.sdk.exporter.span.exported.count
stability: development
deprecated: "Renamed to `otel.sdk.exporter.span.exported`."
brief: "Deprecated, use `otel.sdk.exporter.span.exported` instead."
instrument: updowncounter
unit: "{span}"

View File

@ -1,27 +1,27 @@
groups:
- id: metric.otel.sdk.span.live.count
- id: metric.otel.sdk.span.live
type: metric
metric_name: otel.sdk.span.live.count
metric_name: otel.sdk.span.live
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`.
For spans with `recording=true`: Implementations MUST record both `otel.sdk.span.live` and `otel.sdk.span.ended`.
For spans with `recording=false`: If implementations decide to record this metric, they MUST also record `otel.sdk.span.ended`.
attributes:
- ref: otel.span.sampling_result
- id: metric.otel.sdk.span.ended.count
- id: metric.otel.sdk.span.ended
type: metric
metric_name: otel.sdk.span.ended.count
metric_name: otel.sdk.span.ended
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`.
For spans with `recording=true`: Implementations MUST record both `otel.sdk.span.live` and `otel.sdk.span.ended`.
For spans with `recording=false`: If implementations decide to record this metric, they MUST also record `otel.sdk.span.live`.
attributes:
- ref: otel.span.sampling_result
@ -51,9 +51,9 @@ groups:
- ref: otel.component.type
- ref: otel.component.name
- id: metric.otel.sdk.processor.span.processed.count
- id: metric.otel.sdk.processor.span.processed
type: metric
metric_name: otel.sdk.processor.span.processed.count
metric_name: otel.sdk.processor.span.processed
stability: development
brief: "The number of spans for which the processing has finished, either successful or failed"
note: |
@ -69,9 +69,9 @@ groups:
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
- id: metric.otel.sdk.exporter.span.inflight
type: metric
metric_name: otel.sdk.exporter.span.inflight.count
metric_name: otel.sdk.exporter.span.inflight
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: |
@ -88,9 +88,9 @@ groups:
requirement_level:
recommended: when applicable
- id: metric.otel.sdk.exporter.span.exported.count
- id: metric.otel.sdk.exporter.span.exported
type: metric
metric_name: otel.sdk.exporter.span.exported.count
metric_name: otel.sdk.exporter.span.exported
stability: development
brief: "The number of spans for which the export has finished, either successful or failed"
note: |

View File

@ -16,6 +16,15 @@ versions:
attribute_map:
feature_flag.evaluation.reason: feature_flag.result.reason
feature_flag.variant: feature_flag.result.variant
metrics:
changes:
# https://github.com/open-telemetry/semantic-conventions/pull/2042
- rename_metrics:
otel.sdk.span.live.count: otel.sdk.span.live
otel.sdk.span.ended.count: otel.sdk.span.ended
otel.sdk.processor.span.processed.count: otel.sdk.processor.span.processed
otel.sdk.exporter.span.inflight.count: otel.sdk.exporter.span.inflight
otel.sdk.exporter.span.exported.count: otel.sdk.exporter.span.exported
1.31.0:
all:
changes: