Releases: open-telemetry/opentelemetry-go
Release v1.6.3
Release v1.6.2
1.6.2 - 2022-04-06
Changed
- Don't panic anymore when setting a global TracerProvider or TextMapPropagator to itself. (#2749)
- Upgrade
go.opentelemetry.io/proto/otlp
ingo.opentelemetry.io/otel/exporters/otlp/otlptrace
fromv0.12.1
tov0.15.0
.
This replaces the use of the now deprecatedInstrumentationLibrary
andInstrumentationLibrarySpans
types and fields in the proto library with the equivalentInstrumentationScope
andScopeSpans
. (#2748)
Release v1.6.1
Fixed
- The
go.opentelemetry.io/otel/schema/*
packages now use the correct schema URL for theirSchemaURL
constant. Instead of using"https://opentelemetry.io/schemas/v<version>"
they now use the correct URL without av
prefix,"https://opentelemetry.io/schemas/<version>"
. (#2743, #2744)
Security
- Upgrade
go.opentelemetry.io/proto/otlp
fromv0.12.0
tov0.12.1
. This includes an indirect upgrade ofgithub.com/grpc-ecosystem/grpc-gateway
which resolves a vulnerability fromgopkg.in/yaml.v2
in versionv2.2.3
. (#2724, #2728)
Release v1.6.0/v0.28.0
⚠️ Notice ⚠️
This update is a breaking change of the unstable Metrics API.
Code instrumented with the go.opentelemetry.io/otel/metric
will need to be modified.
Added
- Add metrics exponential histogram support.
New mapping functions have been made available insdk/metric/aggregator/exponential/mapping
for other OpenTelemetry projects to take dependencies on. (#2502) - Add Go 1.18 to our compatibility tests. (#2679)
- Allow configuring the Sampler with the
OTEL_TRACES_SAMPLER
andOTEL_TRACES_SAMPLER_ARG
environment variables. (#2305, #2517) - Add the
metric/global
for obtaining and setting the globalMeterProvider
. (#2660)
Changed
-
The metrics API has been significantly changed to match the revised OpenTelemetry specification.
High-level changes include:- Synchronous and asynchronous instruments are now handled by independent
InstrumentProvider
s.
TheseInstrumentProvider
s are managed with aMeter
. - Synchronous and asynchronous instruments are grouped into their own packages based on value types.
- Asynchronous callbacks can now be registered with a
Meter
.
Be sure to check out the metric module documentation for more information on how to use the revised API. (#2587, #2660)
- Synchronous and asynchronous instruments are now handled by independent
Fixed
Release v1.5.0
Added
-
Log the Exporters configuration in the TracerProviders message. (#2578)
-
Added support to configure the span limits with environment variables.
The following environment variables are supported. (#2606, #2637)OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT
OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT
OTEL_SPAN_EVENT_COUNT_LIMIT
OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT
OTEL_SPAN_LINK_COUNT_LIMIT
OTEL_LINK_ATTRIBUTE_COUNT_LIMIT
If the provided environment variables are invalid (negative), the default values would be used.
-
Rename the
gc
runtime name togo
(#2560) -
Add resource container ID detection. (#2418)
-
Add span attribute value length limit.
The newAttributeValueLengthLimit
field is added to the"go.opentelemetry.io/otel/sdk/trace".SpanLimits
type to configure this limit for aTracerProvider
.
The default limit for this resource is "unlimited". (#2637) -
Add the
WithRawSpanLimits
option togo.opentelemetry.io/otel/sdk/trace
.
This option replaces theWithSpanLimits
option.
Zero or negative values will not be changed to the default value likeWithSpanLimits
does.
Setting a limit to zero will effectively disable the related resource it limits and setting to a negative value will mean that resource is unlimited.
Consequentially, limits should be constructed usingNewSpanLimits
and updated accordingly. (#2637)
Changed
- Drop oldest tracestate
Member
when capacity is reached. (#2592) - Add event and link drop counts to the exported data from the
oltptrace
exporter. (#2601) - Unify path cleaning functionally in the
otlpmetric
andotlptrace
configuration. (#2639) - Change the debug message from the
sdk/trace.BatchSpanProcessor
to reflect the count is cumulative. (#2640) - Introduce new internal
envconfig
package for OTLP exporters. (#2608) - If
http.Request.Host
is empty, fall back to useURL.Host
when populatinghttp.host
in thesemconv
packages. (#2661)
Fixed
- Remove the OTLP trace exporter limit of SpanEvents when exporting. (#2616)
- Default to port
4318
instead of4317
for theotlpmetrichttp
andotlptracehttp
client. (#2614, #2625) - Unlimited span limits are now supported (negative values). (#2636, #2637)
Deprecated
- Deprecated
"go.opentelemetry.io/otel/sdk/trace".WithSpanLimits
.
UseWithRawSpanLimits
instead.
That option allows setting unlimited and zero limits, this option does not.
This option will be kept until the next major version incremented release. (#2637)
Release v1.4.1
Fixed
- Fix race condition in reading the dropped spans number for the
BatchSpanProcessor
. (#2615)
Release v1.4.0/v0.27.0
Added
- Use
OTEL_EXPORTER_ZIPKIN_ENDPOINT
environment variable to specify zipkin collector endpoint. (#2490) - Log the configuration of
TracerProvider
s, andTracer
s for debugging.
To enable use a logger with Verbosity (V level)>=1
. (#2500) - Added support to configure the batch span-processor with environment variables.
The following environment variables are used. (#2515)OTEL_BSP_SCHEDULE_DELAY
OTEL_BSP_EXPORT_TIMEOUT
OTEL_BSP_MAX_QUEUE_SIZE
.OTEL_BSP_MAX_EXPORT_BATCH_SIZE
Changed
- Zipkin exporter exports
Resource
attributes in theTags
field. (#2589)
Deprecated
- Deprecate module the
go.opentelemetry.io/otel/sdk/export/metric
.
Use thego.opentelemetry.io/otel/sdk/metric
module instead. (#2382) - Deprecate
"go.opentelemetry.io/otel/sdk/metric".AtomicFieldOffsets
. (#2445)
Fixed
- Fixed the instrument kind for noop async instruments to correctly report an implementation. (#2461)
- Fix UDP packets overflowing with Jaeger payloads. (#2489, #2512)
- Change the
otlpmetric.Client
interface'sUploadMetrics
method to accept a singleResourceMetrics
instead of a slice of them. (#2491) - Specify explicit buckets in Prometheus example, fixing issue where example only has
+inf
bucket. (#2419, #2493) - W3C baggage will now decode urlescaped values. (#2529)
- Baggage members are now only validated once, when calling
NewMember
and not also when adding it to the baggage itself. (#2522) - The order attributes are dropped from spans in the
go.opentelemetry.io/otel/sdk/trace
package when capacity is reached is fixed to be in compliance with the OpenTelemetry specification.
Instead of dropping the least-recently-used attribute, the last added attribute is dropped.
This drop order still only applies to attributes with unique keys not already contained in the span.
If an attribute is added with a key already contained in the span, that attribute is updated to the new value being added. (#2576)
Removed
- Updated
go.opentelemetry.io/proto/otlp
fromv0.11.0
tov0.12.0
. This version removes a number of deprecated methods. (#2546)
Release v1.3.0/v0.26.0
⚠️ Notice ⚠️
We have updated the project minimum supported Go version to 1.16
Added
- Added an internal Logger.
This can be used by the SDK and API to provide users with feedback of the internal state.
To enable verbose logs configure the logger which will print V(1) logs. For debugging information configure to print V(5) logs. (#2343) - Add the
WithRetry
Option
and theRetryConfig
type to thego.opentelemetry.io/otel/exporter/otel/otlpmetric/otlpmetrichttp
package to specify retry behavior consistently. (#2425) - Add
SpanStatusFromHTTPStatusCodeAndSpanKind
to allsemconv
packages to return a span status code similar toSpanStatusFromHTTPStatusCode
, but exclude4XX
HTTP errors as span errors if the span is of server kind. (#2296)
Changed
- The
"go.opentelemetry.io/otel/exporter/otel/otlptrace/otlptracegrpc".Client
now uses the underlying gRPCClientConn
to handle name resolution, TCP connection establishment (with retries and backoff) and TLS handshakes, and handling errors on established connections by re-resolving the name and reconnecting. (#2329) - The
"go.opentelemetry.io/otel/exporter/otel/otlpmetric/otlpmetricgrpc".Client
now uses the underlying gRPCClientConn
to handle name resolution, TCP connection establishment (with retries and backoff) and TLS handshakes, and handling errors on established connections by re-resolving the name and reconnecting. (#2425) - The
"go.opentelemetry.io/otel/exporter/otel/otlpmetric/otlpmetricgrpc".RetrySettings
type is renamed toRetryConfig
. (#2425) - The
go.opentelemetry.io/otel/exporter/otel/*
gRPC exporters now default to using the host's root CA set if none are provided by the user andWithInsecure
is not specified. (#2432) - Change
resource.Default
to be evaluated the first time it is called, rather than on import. This allows the caller the option to updateOTEL_RESOURCE_ATTRIBUTES
first, such as withos.Setenv
. (#2371)
Fixed
- The
go.opentelemetry.io/otel/exporter/otel/*
exporters are updated to handle per-signal and universal endpoints according to the OpenTelemetry specification.
Any per-signal endpoint set via anOTEL_EXPORTER_OTLP_<signal>_ENDPOINT
environment variable is now used without modification of the path.
WhenOTEL_EXPORTER_OTLP_ENDPOINT
is set, if it contains a path, that path is used as a base path which per-signal paths are appended to. (#2433) - Basic metric controller updated to use sync.Map to avoid blocking calls (#2381)
- The
go.opentelemetry.io/otel/exporter/jaeger
correctly sets theotel.status_code
value to be a string ofERROR
orOK
instead of an integer code. (#2439, #2440)
Deprecated
- Deprecated the
"go.opentelemetry.io/otel/exporter/otel/otlpmetric/otlpmetrichttp".WithMaxAttempts
Option
, use the newWithRetry
Option
instead. (#2425) - Deprecated the
"go.opentelemetry.io/otel/exporter/otel/otlpmetric/otlpmetrichttp".WithBackoff
Option
, use the newWithRetry
Option
instead. (#2425)
Removed
- Remove the metric Processor's ability to convert cumulative to delta aggregation temporality. (#2350)
- Remove the metric Bound Instruments interface and implementations. (#2399)
- Remove the metric MinMaxSumCount kind aggregation and the corresponding OTLP export path. (#2423)
- Metric SDK removes the "exact" aggregator for histogram instruments, as it performed a non-standard aggregation for OTLP export (creating repeated Gauge points) and worked its way into a number of confusing examples. (#2348)
Release v1.2.0/v0.25.0
Changed
- Metric SDK
export.ExportKind
,export.ExportKindSelector
types have been renamed toaggregation.Temporality
andaggregation.TemporalitySelector
respectively to keep in line with current specification and protocol along with built-in selectors (e.g.,aggregation.CumulativeTemporalitySelector
, ...). (#2274) - The Metric
Exporter
interface now requires aTemporalitySelector
method instead of anExportKindSelector
. (#2274) - Metrics API cleanup. The
metric/sdkapi
package has been created to relocate the API-to-SDK interface:- The following interface types simply moved from
metric
tometric/sdkapi
:Descriptor
,MeterImpl
,InstrumentImpl
,SyncImpl
,BoundSyncImpl
,AsyncImpl
,AsyncRunner
,AsyncSingleRunner
, andAsyncBatchRunner
- The following struct types moved and are replaced with type aliases, since they are exposed to the user:
Observation
,Measurement
. - The No-op implementations of sync and async instruments are no longer exported, new functions
sdkapi.NewNoopAsyncInstrument()
andsdkapi.NewNoopSyncInstrument()
are provided instead. (#2271)
- The following interface types simply moved from
- Update the SDK
BatchSpanProcessor
to export all queued spans whenForceFlush
is called. (#2080, #2335)
Added
- Add the
"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc".WithGRPCConn
option so the exporter can reuse an existing gRPC connection. (#2002) - Added a new
schema
module to help parse Schema Files in OTEP 0152 format. (#2267) - Added a new
MapCarrier
to thego.opentelemetry.io/otel/propagation
package to hold propagated coss-cutting concerns as amap[string]string
held in memory. (#2334)
Release v1.1.0
Added
- Add the
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc".WithGRPCConn
option so the exporter can reuse an existing gRPC connection. (#2002) - Add the
go.opentelemetry.io/otel/semconv/v1.7.0
package.
The package contains semantic conventions from thev1.7.0
version of the OpenTelemetry specification. (#2320) - Add the
go.opentelemetry.io/otel/semconv/v1.6.1
package.
The package contains semantic conventions from thev1.6.1
version of the OpenTelemetry specification. (#2321) - Add the
go.opentelemetry.io/otel/semconv/v1.5.0
package.
The package contains semantic conventions from thev1.5.0
version of the OpenTelemetry specification. (#2322)- When upgrading from the
semconv/v1.4.0
package note the following name changes:K8SReplicasetUIDKey
->K8SReplicaSetUIDKey
K8SReplicasetNameKey
->K8SReplicaSetNameKey
K8SStatefulsetUIDKey
->K8SStatefulSetUIDKey
k8SStatefulsetNameKey
->K8SStatefulSetNameKey
K8SDaemonsetUIDKey
->K8SDaemonSetUIDKey
K8SDaemonsetNameKey
->K8SDaemonSetNameKey
- When upgrading from the
Changed
- Links added to a span will be dropped by the SDK if they contain an invalid span context (#2275).
Fixed
- The
"go.opentelemetry.io/otel/semconv/v1.4.0".HTTPServerAttributesFromHTTPRequest
now correctly only sets the HTTP client IP attribute even if the connection was routed with proxies and there are multiple addresses in theX-Forwarded-For
header. (#2282, #2284) - The
"go.opentelemetry.io/otel/semconv/v1.4.0".NetAttributesFromHTTPRequest
function correctly handles IPv6 addresses as IP addresses and sets the correct net peer IP instead of the net peer hostname attribute. (#2283, #2285) - The simple span processor shutdown method deterministically returns the exporter error status if it simultaneously finishes when the deadline is reached. (#2290, #2289)