Specificationv1.61.0
since v1.60.05 breaking24 notable30 editorial
From the upstream release notes
- Recommend instead of require global propagators.
- Add view_matching_mode parameter to MeterProvider to support composable View matching.
- Clarify maxExportBatchSize behavior, timeouts, and error handling for
- Mark maxExportBatchSize on Periodic exporting MetricReader as stable.
- Allow the named service resource detector (used via declarative config or explicit detector configuration) to fall back to
- Add AttributeValueDepthLimit for nested array and map attribute values.
- Remove requirement for attribute ordering from compliance matrix.
- Stabilize content negotiation section for the Prometheus exporter.
- Update the OpenTelemetry Exponential Histogram to Prometheus Native Histogram
- Stabilize resource_constant_labels configuration for the Prometheus exporter.
Breaking5
Requirements added to, removed from, or restrengthened in a document marked Stable.
- strengthrequirementcontext/api-propagators.md#get-global-propagatorMUST relaxed to SHOULD: This method SHOULD exist for each supported
Propagatortype. - strengthrequirementcontext/api-propagators.md#set-global-propagatorMUST relaxed to SHOULD: This method SHOULD exist for each supported
Propagatortype. - new rulerequirementcommon/README.md#attribute-limitsMUST added: the SDK MUST start counting depth at 1 for the top-level attribute value, and increment depth when descending into arrays (both homogeneous and heterogeneous) or maps;
- new rulerequirementcommon/README.md#attribute-limitsMUST added: arrays or map at a depth greater than the limit MUST be replaced with an empty value;
- new rulerequirementcommon/README.md#attribute-limitsMUST NOT added: otherwise a value MUST NOT be changed due to the depth limit.
Notable24
- rule droppedrequirementspecification/document-status.md#maturity-levelsMUST removed: They also MUST communicate in which version they will be removed. | | Unmaintained | A component identified as unmaintained does not have an active code owner.
- strengthrequirementsdk_exporters/prometheus.md#resource-attributes-as-metric-labelsSHOULD relaxed to MAY: The option MAY be named
resourceconstant_labels. - strengthrequirementmetrics/sdk.md#forceflush-1SHOULD relaxed to MAY: Language implementations MAY decide how to model ERROR and NO ERROR.
- new rulerequirementcompatibility/prometheus_and_openmetrics.md#exponential-histogramsMUST added: The flavor of the Native Histogram MUST be of the integer and counter flavor.
- new rulerequirementcompatibility/prometheus_and_openmetrics.md#exponential-histogramsMUST added: The
ResetHint(orCounterResetHint) in the Native Histogram MUST be set toUNKNOWN. - new rulerequirementcompatibility/prometheus_and_openmetrics.md#exponential-histogramsMUST added: If
Scaleis < -4, the data point MUST be dropped. - new rulerequirementcompatibility/prometheus_and_openmetrics.md#exponential-histogramsMUST added: All fields of the Native Histogram that are not explicitly referenced here MUST be set to their zero value, such as custom values.
- new rulerequirementcompatibility/prometheus_and_openmetrics.md#exponential-histogramsMUST added: If the
NoRecordedValueflag is set totrue, the Native Histogram MUST be marked as stale: - new rulerequirementcompatibility/prometheus_and_openmetrics.md#exponential-histogramsMUST added: The Native Histogram
SumMUST be set to the Stale NaN value. - new rulerequirementcompatibility/prometheus_and_openmetrics.md#exponential-histogramsMUST added: The Native Histogram
CountMUST be set to zero. - new rulerequirementcompatibility/prometheus_and_openmetrics.md#exponential-histogramsMUST added:
ZeroCount,PositiveSpans,PositiveDeltas,NegativeSpans, andNegativeDeltasMUST be left empty. - new rulerequirementcompatibility/prometheus_and_openmetrics.md#exponential-histogramsMUST added:
Sum, if set, is converted to the Native HistogramSum; otherwise, the metric point MUST be dropped. - new rulerequirementcompatibility/prometheus_and_openmetrics.md#exponential-histogramsMUST added: Non-zero bucket counts MUST be converted into
PositiveDeltas(orNegativeDeltas). - new rulerequirementcompatibility/prometheus_and_openmetrics.md#exponential-histogramsMUST added: OpenTelemetry Exponential Histograms with a delta aggregation temporality MAY be aggregated into a cumulative aggregation temporality and follow the logic above, or MUST be dropped.
- new rulerequirementspecification/maturity-levels.md#deprecatedMUST added: They also MUST communicate in which version they will be removed, either in terms of a concrete version number or the date of a release, like: "the first release after 2023-08-01".
- new rulerequirementspecification/maturity-levels.md#maturity-levelsMUST added: Deliverables of a SIG MUST have a declared maturity level, established by SIG maintainers, likely with the input of the code owners.
- new rulerequirementsdk_exporters/prometheus.md#content-negotiationMUST added: If no
Acceptheader is provided and no fallback protocol is configured, the exporter MUST use Prometheus text format 0.0.4 (text/plain; version=0.0.4) and applyunderscoresescaping. - new rulerequirementmetrics/sdk.md#measurement-processingMUST added: If both the matching Views and Instrument advisory parameters specify the same aspect of the Stream configuration, the setting defined by the Views MUST take precedence over the advisory parameters.
- new rulerequirementmetrics/sdk.md#periodic-exporting-metricreaderMUST added: If an export is still in progress when the next scheduled interval occurs, the reader MUST either delay the subsequent collection and export until the in-progress export finishes, or skip the scheduled collection for th...
- new rulerequirementmetrics/sdk.md#view-matching-modeMUST added: A
MeterProviderthat accepts this parameter MUST support the following values: - new rulerequirementmetrics/sdk.md#view-matching-modeMUST added: If
viewmatchingmodeis not specified, the SDK MUST useindependent. - new rulerequirementmetrics/sdk.md#view-matching-modeMUST added: Any other value MUST be treated as unsupported.
- new rulerequirementmetrics/sdk.md#view-matching-modeMUST added: If an unsupported value is provided, the SDK MUST either fail fast during initialization in accordance with the error handling principles, or emit a warning, ignore the value, and use
independent. - new rulerequirementresource/sdk.md#resource-detector-nameSHOULD added:
service: Populatesservice.namefrom the OTELSERVICENAME environment variable and SHOULD fall back to language- or platform-specific sources (for examplespring.application.name, a JAR manifest, or a Composer/pack...
Editorial30
- rule droppedrequirementspecification/document-status.md#maturity-levelsSHOULD NOT removed: The component SHOULD NOT be used in production.
- rule droppedrequirementspecification/document-status.md#maturity-levelsMAY removed: The component MAY be removed without prior notice. | | Alpha | The component is ready to be used for limited non-critical production workloads, and the authors of this component welcome user feedback.
- rule droppedrequirementspecification/document-status.md#maturity-levelsSHOULD removed: Issues and pull requests for unmaintained components SHOULD be labeled as such.
- rule droppedrequirementspecification/document-status.md#maturity-levelsMAY removed: After 6 months of being unmaintained, these components MAY be deprecated.
- new rulerequirementcompatibility/prometheus_and_openmetrics.md#exponential-histogramsSHOULD added: If set,
StartTimeUnixNanoSHOULD be transformed into PrometheusStartTime, following the appropriate format used by each Prometheus protocol. - new rulerequirementcompatibility/prometheus_and_openmetrics.md#exponential-histogramsMAY added: Zero-count buckets MAY also be included to extend an enclosing span (rather than creating a gap between spans) and reduce the number of
PositiveSpans(orNegativeSpans). - new rulerequirementspecification/maturity-levels.md#developmentSHOULD NOT added: The component SHOULD NOT be used in production.
- new rulerequirementspecification/maturity-levels.md#developmentMAY added: The component MAY be removed without prior notice.
- new rulerequirementspecification/maturity-levels.md#maturity-levelsSHOULD NOT added: Components SHOULD NOT be marked as [Stable][] if their user-visible interfaces are not [Stable][].
- new rulerequirementspecification/maturity-levels.md#unmaintainedSHOULD added: Issues and pull requests for Unmaintained components SHOULD be labeled as such.
- new rulerequirementspecification/maturity-levels.md#unmaintainedMAY added: After 6 months of being Unmaintained, these components MAY be [Deprecated][].
- new rulerequirementmetrics/sdk.md#forceflush-1SHOULD added: If any
Export(batch)call fails or times out, or if the configured exporter'sForceFlush()fails or times out,ForceFlushSHOULD return some ERROR status. - new rulerequirementmetrics/sdk.md#forceflush-1SHOULD added: If all calls succeed,
ForceFlushSHOULD return some NO ERROR status. - new rulerequirementmetrics/sdk.md#measurement-processingSHOULD added: If applying the View would produce semantic errors (for example, configuring an asynchronous instrument to use the Explicit bucket histogram aggregation), the implementation SHOULD emit a warning and proceed as if that ...
- new rulerequirementmetrics/sdk.md#measurement-processingSHOULD added: If a setting selected for the stream would produce semantic errors, the implementation SHOULD emit a warning and use the next valid setting for that aspect from a preceding View in the same group, or the Instrument defa...
- new rulerequirementmetrics/sdk.md#view-matching-modeMAY added: A
MeterProviderMAY accept aviewmatchingmodeparameter which controls how multiple matching Views are applied to an Instrument. - rewordedrequirementcommon/README.md#attribute-limitsMAY reworded: There MAY be a log emitted to indicate to the user that an attribute was truncated, discarded, or replaced due to a limit.
- rewordedrequirementcompatibility/prometheus_and_openmetrics.md#exponential-histogramsMUST reworded: An OpenTelemetry Exponential Histogram with a cumulative aggregation temporality MUST be converted to a Prometheus Native Histogram with standard (exponential) schema as follows:
- rewordedrequirementcompatibility/prometheus_and_openmetrics.md#exponential-histogramsSHOULD reworded: If
Scaleis > 8 then Exponential Histogram data points SHOULD be downscaled to a scale accepted by Prometheus. - rewordedrequirementmetrics/sdk.md#configurationMUST reworded: Configuration ( i.e. MetricExporters, MetricReaders, Views, and (Development) MeterConfigurator and (Development) viewmatchingmode) MUST be owned by the
MeterProvider. - rewordedrequirementmetrics/sdk.md#forceflush-1SHOULD reworded:
ForceFlushSHOULD collect metrics, split into batches if necessary, callExport(batch)on each batch serially, and callForceFlush()on the configured Push Metric Exporter. - rewordedrequirementmetrics/sdk.md#measurement-processingMUST reworded: If both the View and Instrument advisory parameters specify the same aspect of the Stream configuration, the setting defined by the View MUST take precedence over the advisory parameters.
- rewordedrequirementmetrics/sdk.md#periodic-exporting-metricreaderMUST reworded: When
maxExportBatchSizeis configured, the reader MUST ensure no batch provided toExportexceeds themaxExportBatchSizeby splitting the batch of metric data points into smaller batches. - rewordedrequirementmetrics/sdk.md#periodic-exporting-metricreaderMUST reworded: The reader MUST ensure all batches produced from a single
Collect()are provided toExportserially and in-order before metric data points from a subsequentCollect()are provided. - rewordedrequirementresource/sdk.md#mergeMUST reworded: If either resource contains
Entitiesthen merge behavior with Entities MUST be used, otherwise merge behavior without Entities MUST be used. - addeddocumentspecification/maturity-levels.mdNew document: Maturity levels (Unspecified).
- addedsectionmetrics/sdk.md#view-matching-modeNew section "View matching mode".
- rewrittensectioncompatibility/prometheus_and_openmetrics.md#exponential-histograms"Exponential Histograms" substantially rewritten (2189 to 4940 characters).
- rewrittensectionspecification/document-status.md#maturity-levels"Maturity levels" substantially rewritten (3838 to 116 characters).
- rewrittensectionmetrics/sdk.md#measurement-processing"Measurement processing" substantially rewritten (2179 to 4308 characters).