Specificationv1.57.0
since v1.56.05 breaking22 notable22 editorial
From the upstream release notes
- Add in-development Bind API to synchronous instruments.
- Clarify that View-provided metric stream name is not subject to instrument
- Define the Core packages term.
- Rework contributing guide to reflect current process.
- Stabilize sections of Prometheus and OpenMetrics Compatibility.
- Stabilize sections of Prometheus Metrics Exporter.
- Change Prometheus Metric Exporter config property recommended names
- Clarify that OTel SDKs should not use unofficial Prometheus clients.
- Add OTEP for Semantic Convention Schema v2 with support for multiple convention
Breaking5
Requirements added to, removed from, or restrengthened in a document marked Stable.
- new rulerequirementmetrics/api.md#bindMUST added: This API MUST accept the following parameter:
- new rulerequirementmetrics/api.md#bindMUST added: Therefore, this API MUST be structured to accept a variable number of attributes, including none.
- new rulerequirementmetrics/api.md#bindMUST added: This API MUST return a language-idiomatic type representing the instrument bound to those attributes.
- new rulerequirementmetrics/api.md#bindMUST added: The returned bound instrument MUST support the instrument's core recording operation.
- new rulerequirementmetrics/api.md#bindMUST added: If the existing instrument interface is reused, the
BindAPI MUST be documented to communicate to users that invoking attribute-bearing recording operations on the returned bound instrument negates the performance ben...
Notable22
- rule droppedrequirementcompatibility/prometheus_and_openmetrics.md#gauges-1MUST removed: Otherwise, it MUST be converted to a Prometheus Gauge.
- rule droppedrequirementcompatibility/prometheus_and_openmetrics.md#instrumentation-scope-1MUST removed: Scope attributes with names 'name', 'version', or 'schemaurl' MUST be dropped to avoid conflicts with the already existing
otelscopename,otelscopeversion, andotelscopeschema_urllabels. - rule droppedrequirementcompatibility/prometheus_and_openmetrics.md#sumsMUST removed: If the aggregation temporality is cumulative and the sum is non-monotonic and the
prometheus.typekey of [metric.metadata][metricMetadata] isstateset, it MUST be converted to an OpenMetrics StateSet metric. - rule droppedrequirementcompatibility/prometheus_and_openmetrics.md#sumsMUST removed: If the aggregation temporality is cumulative and the sum is non-monotonic, it MUST be converted to a Prometheus Gauge.
- rule droppedrequirementcompatibility/prometheus_and_openmetrics.md#sumsMUST removed: Otherwise, it MUST be dropped.
- strengthrequirementcompatibility/prometheus_and_openmetrics.md#sumsMUST relaxed to MAY: If the aggregation temporality is delta and the sum is monotonic, it MAY be converted to a cumulative temporality and become a Prometheus Counter.
- strengthrequirementsdk_exporters/prometheus.md#client-librariesSHOULD relaxed to SHOULD NOT: A Prometheus Exporter SHOULD use an official Prometheus client library when one exists for the implementation language and it is practical to do so (e.g., dependency concerns) for serving Prometheus ...
- strengthrequirementsdk_exporters/prometheus.md#version-and-formatMUST NOT relaxed to SHOULD NOT: A Prometheus Exporter for an OpenTelemetry metrics SDK SHOULD NOT add explicit timestamps on Metric points.
- new rulerequirementcompatibility/prometheus_and_openmetrics.md#gauges-1MUST added: If the
prometheus.typekey is absent, or its value is equal togauge, the datapoint MUST be transformed to a Prometheus Gauge. - new rulerequirementcompatibility/prometheus_and_openmetrics.md#gauges-1MUST added: If the
prometheus.typekey has value equal tounkown, the datapoint MUST be transformed to a Prometheus Unknown. - new rulerequirementcompatibility/prometheus_and_openmetrics.md#instrumentation-scope-1MUST added: Scope attributes that, after adding the
otelscopeprefix and applying the label-name conversion described inMetric Attributes, would conflict withotelscopename,otelscopeversion, orotelscopeschemaurlMUST b... - new rulerequirementcompatibility/prometheus_and_openmetrics.md#sumsMUST added: An OpenTelemetry Sum MUST be converted following the rules below:
- new rulerequirementmetrics/api.md#bindMAY added: This MAY be achieved by introducing a dedicated bound instrument type, or by reusing the existing instrument interface.
- new rulerequirementmetrics/api.md#general-operationsMAY added: All synchronous instruments MAY provide:
- new rulerequirementmetrics/sdk.md#instrument-bindMUST added: A bound instrument MUST behave identically to calling the equivalent unbound recording operation with the pre-bound Attributes on each measurement.
- new rulerequirementmetrics/sdk.md#instrument-bindMUST added: Attribute processing and cardinality limit evaluation MUST be performed at bind time.
- new rulerequirementmetrics/sdk.md#instrument-bindMUST added: Each call to
BindMUST be independently evaluated against the cardinality state at that moment. - new rulerequirementmetrics/sdk.md#instrument-bindMUST added: The resolved aggregator MUST be fixed and not change across collection cycles.
- new rulerequirementmetrics/sdk.md#instrument-bindMUST added: Measurements recorded on a bound instrument MUST be candidates for Exemplar sampling.
- new rulerequirementmetrics/sdk.md#instrument-bindMUST added: The Context associated with each recording, whether implicit or explicit, MUST be used for exemplar TraceBased filtering and passed to the ExemplarReservoir offer method.
- new rulerequirementmetrics/sdk.md#instrument-bindMUST added: The SDK MUST ensure attribute-free recordings on a bound instrument bypass per-recording map lookup.
- new rulerequirementmetrics/sdk.md#stream-configurationMUST NOT added: The
nameprovided via stream configuration is NOT REQUIRED to conform to the instrument name syntax, and the SDK MUST NOT validate it against that syntax.
Editorial22
- rule droppedrequirementcompatibility/prometheus_and_openmetrics.md#sumsSHOULD removed: If the aggregation temporality is delta and the sum is monotonic, it SHOULD be converted to a cumulative temporality and become a Prometheus Counter.
- rule droppedrequirementcompatibility/prometheus_and_openmetrics.md#sumsSHOULD removed: Exporters SHOULD provide a configuration option to disable the addition of
totalsuffixes. - new rulerequirementcompatibility/prometheus_and_openmetrics.md#gauges-1SHOULD added: If the
prometheus.typekey has value equal toinfo, the datapoint SHOULD be transformed to a Prometheus Info. - new rulerequirementcompatibility/prometheus_and_openmetrics.md#gauges-1SHOULD added: If the
prometheus.typekey has value equal tostateset, the datapoint SHOULD be transformed to a Prometheus Stateset. - new rulerequirementcompatibility/prometheus_and_openmetrics.md#sumsSHOULD added: Monotonic Sum metric points with
StartTimeUnixNanoSHOULD transformStartTimeUnixNanointo PrometheusStartTime, following the appropriate format used by each Prometheus protocol. - new rulerequirementmetrics/sdk.md#stream-configurationSHOULD added: SDK documentation SHOULD inform users that attributes excluded from a metric stream by View configuration may still be exported on Exemplars as filtered attributes, and describe how to disable or otherwise configure Exe...
- rewordedrequirementcompatibility/prometheus_and_openmetrics.md#gauges-1MUST reworded: An OpenTelemetry Gauge MUST be converted following a hint present in [metric.metadata][metricMetadata]:
- rewordedrequirementcontext/api-propagators.md#propagators-distributionMUST reworded: The official list of propagators that MUST be maintained by the OpenTelemetry organization and MUST be distributed as OpenTelemetry Core packages:
- rewordedrequirementcontext/api-propagators.md#propagators-distributionMAY reworded: This is a list of additional propagators that MAY be maintained and distributed as OpenTelemetry Core packages:
- rewordedrequirementcontext/api-propagators.md#propagators-distributionMUST NOT reworded: Additional
Propagators implementing vendor-specific protocols such as AWS X-Ray trace header protocol MUST NOT be maintained or distributed as part of the OpenTelemetry Core packages. - rewordedrequirementcontext/env-carriers.md#propagator-mechanismsMUST NOT reworded: The environment variable carrier MUST be format-agnostic and MUST treat values as opaque strings and MUST NOT apply propagation-format-specific logic such as validating, parsing values, or enforcing ...
- rewordedrequirementsdk_exporters/prometheus.md#resource-attributes-as-metric-attributesMAY reworded: The option MAY be named
resourceconstantlabels. - rewordedrequirementsdk_exporters/prometheus.md#scope-infoMAY reworded: A Prometheus Exporter MAY support configuration to specify whether metrics include scope labels.
- rewordedrequirementsdk_exporters/prometheus.md#scope-infoMUST reworded: The option MAY be named
scopeinfoenabled, and MUST betrueby default. - rewordedrequirementsdk_exporters/prometheus.md#target-infoMAY reworded: A Prometheus Exporter MAY support a configuration to specify whether to produce a target info metric.
- rewordedrequirementsdk_exporters/prometheus.md#target-infoMUST reworded: The option MAY be named
targetinfoenabled, and MUST betrueby default. - rewordedrequirementresource/sdk.md#sdk-provided-resource-attributesMUST reworded: This resource MUST be associated with a
TracerProvider,MeterProvider, orLoggerProviderif another resource was not explicitly specified. - rewordedrequirementtrace/sdk.md#id-generatorsMUST NOT reworded: Additional
IdGeneratorimplementing vendor-specific protocols such as AWS X-Ray trace ID generator MUST NOT be maintained or distributed as part of the OpenTelemetry Core packages. - addedsectionmetrics/api.md#bindNew section "Bind".
- addedsectionmetrics/sdk.md#instrument-bindNew section "Instrument bind".
- addedsectionspecification/overview.md#core-packagesNew section "Core Packages".
- rewrittensectioncompatibility/prometheus_and_openmetrics.md#gauges-1"Gauges" substantially rewritten (350 to 729 characters).