All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
This project adheres to Semantic Versioning.
go.opentelemetry.io/otel/sdk/export/metric/metrictest
. (#2105)WithOSDescription
resource configuration option to set OS (Operating System) description resource attribute (os.description
). (#1840)WithOS
resource configuration option to set all OS (Operating System) resource attributes at once. (#1840)WithRetry
option to the go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp
package.
This option is a replacement for the removed WithMaxAttempts
and WithBackoff
options. (#2095)LinkFromContext
to return Link which encapsulates SpanContext from provided context and also encapsulates attributes. (#2115)Link
type under the SDK otel/sdk/trace
package that counts the number of attributes that were dropped for surpassing the AttributePerLinkCountLimit
configured in the Span's SpanLimits
.
This new type replaces the equal-named API Link
type found in the otel/trace
package for most usages within the SDK.
For example, instances of this type are now returned by the Links()
function of ReadOnlySpan
s provided in places like the OnEnd
function of SpanProcessor
implementations. (#2118)SpanModels
function is now exported from the go.opentelemetry.io/otel/exporters/zipkin
package to convert OpenTelemetry spans into Zipkin model spans. (#2027)"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc".RetrySettings
to RetryConfig
. (#2095)"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp".RetrySettings
to RetryConfig
. (#2095)TextMapCarrier
and TextMapPropagator
from the go.opentelemetry.io/otel/oteltest
package and their associated creation functions (TextMapCarrier
, NewTextMapPropagator
) are deprecated. (#2114)Harness
type from the go.opentelemetry.io/otel/oteltest
package and its associated creation function, NewHarness
are deprecated and will be removed in the next release. (#2123)TraceStateFromKeyValues
function from the go.opentelemetry.io/otel/oteltest
package is deprecated.
Use the trace.ParseTraceState
function instead. (#2122)go.opentelemetry.io/otel/exporters/trace/jaeger
. (#2020)go.opentelemetry.io/otel/exporters/trace/zipkin
. (#2020)"go.opentelemetry.io/otel/sdk/resource".WithBuiltinDetectors
function.
The explicit With*
options for every built-in detector should be used instead. (#2026 #2097)WithMaxAttempts
and WithBackoff
options from the go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp
package.
The retry logic of the package has been updated to match the otlptracegrpc
package and accordingly a WithRetry
option is added that should be used instead. (#2095)DroppedAttributeCount
field from otel/trace.Link
struct. (#2118)oteltest.Tracer
now creates a valid SpanContext
when using WithNewRoot
. (#2073)dragonflybsd
value for DragonFly BSD. (#2092)go.opentelemetry.io/otel/exporters/otlp/otlptrace
package.
This fix will by default set the status to Unset
if it is not explicitly set to Ok
or Error
. (#2099 #2102)Inject
method for the "go.opentelemetry.io/otel/propagation".TraceContext
type no longer injects empty tracestate
values. (#2108)go.opentelemetry.io/otel/exporters/metric/prometheus
. (#2020)With this release we are introducing a split in module versions. The tracing API and SDK are entering the v1.0.0
Release Candidate phase with v1.0.0-RC1
while the experimental metrics API and SDK continue with v0.x
releases at v0.21.0
. Modules at major version 1 or greater will not depend on modules
with major version 0.
otlpgrpc.WithRetry
option for configuring the retry policy for transient errors on the otlp/gRPC exporter. (#1832)
Status
type to the go.opentelemetry.io/otel/sdk/trace
package to represent the status of a span. (#1874)SpanStub
type and its associated functions to the go.opentelemetry.io/otel/sdk/trace/tracetest
package.
This type can be used as a testing replacement for the SpanSnapshot
that was removed from the go.opentelemetry.io/otel/sdk/trace
package. (#1873)OTEL_EXPORTER_OTLP_ENDPOINT
according to the spec. (#1886)trace.WithSchemaURL
option for configuring the tracer with a Schema URL. (#1889)ParseTraceState
is added to the go.opentelemetry.io/otel/trace
package.
It can be used to decode a TraceState
from a tracestate
header string value. (#1937)Len
method to the TraceState
type in the go.opentelemetry.io/otel/trace
package.
This method returns the number of list-members the TraceState
holds. (#1937)go.opentelemetry.io/otel/exporters/otlp/otlptrace
that defines a trace exporter that uses a otlptrace.Client
to send data.
Creates package go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc
implementing a gRPC otlptrace.Client
and offers convenience functions, NewExportPipeline
and InstallNewPipeline
, to setup and install a otlptrace.Exporter
in tracing .(#1922)Baggage
, Member
, and Property
types to the go.opentelemetry.io/otel/baggage
package along with their related functions. (#1967)ContextWithBaggage
, ContextWithoutBaggage
, and FromContext
functions to the go.opentelemetry.io/otel/baggage
package.
These functions replace the Set
, Value
, ContextWithValue
, ContextWithoutValue
, and ContextWithEmpty
functions from that package and directly work with the new Baggage
type. (#1967)OTEL_SERVICE_NAME
environment variable is the preferred source for service.name
, used by the environment resource detector if a service name is present both there and in OTEL_RESOURCE_ATTRIBUTES
. (#1969)go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp
implementing an HTTP otlptrace.Client
and offers convenience functions, NewExportPipeline
and InstallNewPipeline
, to setup and install a otlptrace.Exporter
in tracing. (#1963)go.opentelemetry.io/otel/sdk/resource.NewWithAttributes
to require a schema URL. The old function is still available as resource.NewSchemaless
. This is a breaking change. (#1938)go.opentelemetry.io/otel/exporters/otlp/otlpmetric
that defines a metrics exporter that uses a otlpmetric.Client
to send data.go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc
implementing a gRPC otlpmetric.Client
and offers convenience functions, New
and NewUnstarted
, to create an otlpmetric.Exporter
.(#1991)go.opentelemetry.io/otel/exporters/stdout/stdouttrace
exporter. (#2005)go.opentelemetry.io/otel/exporters/stdout/stdoutmetric
exporter. (#2005)TracerProvider()
method to the "go.opentelemetry.io/otel/trace".Span
interface. This can be used to obtain a TracerProvider
from a given span that utilizes the same trace processing pipeline. (#2009)NewSplitDriver
from go.opentelemetry.io/otel/exporters/otlp
take variadic arguments instead of a SplitConfig
item.
NewSplitDriver
now automatically implements an internal noopDriver
for SplitConfig
fields that are not initialized. (#1798)resource.New()
now creates a Resource without builtin detectors. Previous behavior is now achieved by using WithBuiltinDetectors
Option. (#1810)Event
type from the go.opentelemetry.io/otel
package to the go.opentelemetry.io/otel/sdk/trace
package. (#1846)ForceFlush()
method. (#1860)Set.Encoded(Encoder)
no longer caches the result of an encoding. (#1855)CloudZoneKey
to CloudAvailabilityZoneKey
in Resource semantic conventions according to spec. (#1871)StatusCode
and StatusMessage
methods of the ReadOnlySpan
interface and the Span
produced by the go.opentelemetry.io/otel/sdk/trace
package have been replaced with a single Status
method.
This method returns the status of a span using the new Status
type. (#1874)ExportSpans
method of theSpanExporter
interface type to accept ReadOnlySpan
s instead of the removed SpanSnapshot
.
This brings the export interface into compliance with the specification in that it now accepts an explicitly immutable type instead of just an implied one. (#1873)SpanContext
in Link
. (#1877)Tracer
obtained from go.opentelemetry.io/otel
, prior to a functioning TracerProvider
being set, now propagate the span context from their parent if one exists. (#1901)"go.opentelemetry.io/otel".Tracer
function now accepts tracer options. (#1902)go.opentelemetry.io/otel/unit
package to go.opentelemetry.io/otel/metric/unit
. (#1903)go.opentelemetry.io/otel/trace.TracerConfig
to conform to the Contributing guidelines (#1921)go.opentelemetry.io/otel/trace.SpanConfig
to conform to the Contributing guidelines. (#1921)span.End()
now only accepts Options that are allowed at End()
. (#1921)go.opentelemetry.io/otel/metric.InstrumentConfig
to conform to the Contributing guidelines. (#1921)go.opentelemetry.io/otel/metric.MeterConfig
to conform to the Contributing guidelines. (#1921)go.opentelemetry.io/otel/trace.TraceStateFromKeyValues
function to the go.opentelemetry.io/otel/oteltest
package.
This function is preserved for testing purposes where it may be useful to create a TraceState
from attribute.KeyValue
s, but it is not intended for production use.
The new ParseTraceState
function should be used to create a TraceState
. (#1931)MarshalJSON
method of the go.opentelemetry.io/otel/trace.TraceState
type to marshal the type into the string representation of the TraceState
. (#1931)TraceState.Delete
method from the go.opentelemetry.io/otel/trace
package no longer returns an error in addition to a TraceState
. (#1931)Get
method of the TraceState
type from the go.opentelemetry.io/otel/trace
package to accept a string
instead of an attribute.Key
type. (#1931)Insert
method of the TraceState
type from the go.opentelemetry.io/otel/trace
package to accept a pair of string
s instead of an attribute.KeyValue
type. (#1931)Delete
method of the TraceState
type from the go.opentelemetry.io/otel/trace
package to accept a string
instead of an attribute.Key
type. (#1931)NewExporter
to New
in the go.opentelemetry.io/otel/exporters/stdout
package. (#1985)NewExporter
to New
in the go.opentelemetry.io/otel/exporters/metric/prometheus
package. (#1985)NewExporter
to New
in the go.opentelemetry.io/otel/exporters/trace/jaeger
package. (#1985)NewExporter
to New
in the go.opentelemetry.io/otel/exporters/trace/zipkin
package. (#1985)NewExporter
to New
in the go.opentelemetry.io/otel/exporters/otlp
package. (#1985)NewUnstartedExporter
to NewUnstarted
in the go.opentelemetry.io/otel/exporters/otlp
package. (#1985)go.opentelemetry.io/otel/semconv
package has been moved to go.opentelemetry.io/otel/semconv/v1.4.0
to allow for multiple telemetry schema versions to be used concurrently. (#1987)go.opentelemetry.io/otel/oteltest
have been moved to go.opentelemetry.io/otel/metric/metrictest
. (#1988)go.opentelemetry.io/otel/exporters/metric/prometheus
is deprecated, use go.opentelemetry.io/otel/exporters/prometheus
instead. (#1993)go.opentelemetry.io/otel/exporters/trace/jaeger
is deprecated, use go.opentelemetry.io/otel/exporters/jaeger
instead. (#1993)go.opentelemetry.io/otel/exporters/trace/zipkin
is deprecated, use go.opentelemetry.io/otel/exporters/zipkin
instead. (#1993)resource.WithoutBuiltin()
. Use resource.New()
. (#1810)resource.FromEnv
, resource.Host
, and resource.TelemetrySDK
, Use the corresponding With*()
to use individually. (#1810)Tracer
and IsRecording
method from the ReadOnlySpan
in the go.opentelemetry.io/otel/sdk/trace
.
The Tracer
method is not a required to be included in this interface and given the mutable nature of the tracer that is associated with a span, this method is not appropriate.
The IsRecording
method returns if the span is recording or not.
A read-only span value does not need to know if updates to it will be recorded or not.
By definition, it cannot be updated so there is no point in communicating if an update is recorded. (#1873)SpanSnapshot
type from the go.opentelemetry.io/otel/sdk/trace
package.
The use of this type has been replaced with the use of the explicitly immutable ReadOnlySpan
type.
When a concrete representation of a read-only span is needed for testing, the newly added SpanStub
in the go.opentelemetry.io/otel/sdk/trace/tracetest
package should be used. (#1873)Tracer
method from the Span
interface in the go.opentelemetry.io/otel/trace
package.
Using the same tracer that created a span introduces the error where an instrumentation library's Tracer
is used by other code instead of their own.
The "go.opentelemetry.io/otel".Tracer
function or a TracerProvider
should be used to acquire a library specific Tracer
instead. (#1900)
TracerProvider()
method on the Span
interface may also be used to obtain a TracerProvider
using the same trace processing pipeline. (#2009)http.url
attribute generated by HTTPClientAttributesFromHTTPRequest
will no longer include username or password information. (#1919)IsEmpty
method of the TraceState
type in the go.opentelemetry.io/otel/trace
package in favor of using the added TraceState.Len
method. (#1931)Set
, Value
, ContextWithValue
, ContextWithoutValue
, and ContextWithEmpty
functions in the go.opentelemetry.io/otel/baggage
package.
Handling of baggage is now done using the added Baggage
type and related context functions (ContextWithBaggage
, ContextWithoutBaggage
, and FromContext
) in that package. (#1967)InstallNewPipeline
and NewExportPipeline
creation functions in all the exporters (prometheus, otlp, stdout, jaeger, and zipkin) have been removed.
These functions were deemed premature attempts to provide convenience that did not achieve this aim. (#1985)go.opentelemetry.io/otel/exporters/otlp
exporter has been removed. Use go.opentelemetry.io/otel/exporters/otlp/otlptrace
instead. (#1990)go.opentelemetry.io/otel/exporters/stdout
exporter has been removed. Use go.opentelemetry.io/otel/exporters/stdout/stdouttrace
or go.opentelemetry.io/otel/exporters/stdout/stdoutmetric
instead. (#2005)"go.opentelemetry.io/otel/sdk/resource".Environment
function when they are not nil
. (#1850, #1851)Shutdown
method of the simple SpanProcessor
in the go.opentelemetry.io/otel/sdk/trace
package now honors the context deadline or cancellation. (#1616, #1856)http://localhost:14268/api/traces
as default Jaeger collector endpoint instead of http://localhost:14250
. (#1898)tracestate
header. (#1931)NewExportPipeline
and InstallNewPipeline
, setup and install the exporter in tracing and metrics pipelines. (#1373)OTEL_EXPORTER_JAEGER_AGENT_HOST
, OTEL_EXPORTER_JAEGER_AGENT_PORT
These environment variables can be used to override Jaeger agent hostname and port (#1752)ExportTimeout
was added to batch span processor. (#1755)trace.TraceFlags
is now a defined type over byte
and WithSampled(bool) TraceFlags
and IsSampled() bool
methods have been added to it. (#1770)Event
and Link
struct types from the go.opentelemetry.io/otel
package now include a DroppedAttributeCount
field to record the number of attributes that were not recorded due to configured limits being reached. (#1771)OnEnd
and ForceFlush
post Shutdown
. (#1772)OTEL_RESOURCE_ATTRIBUTES
environment variable and merge them with the resource.Default
resource as well as resources provided to the TracerProvider
and metric Controller
. (#1785)WithOSType
resource configuration option to set OS (Operating System) type resource attribute (os.type
). (#1788)WithProcess*
resource configuration options to set Process resource attributes. (#1788)
process.pid
process.executable.name
process.executable.path
process.command_args
process.owner
process.runtime.name
process.runtime.version
process.runtime.description
k8s.node.name
and k8s.node.uid
attribute keys to the semconv
package. (#1789)OTEL_EXPORTER_OTLP_ENDPOINT
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
OTEL_EXPORTER_OTLP_HEADERS
OTEL_EXPORTER_OTLP_TRACES_HEADERS
OTEL_EXPORTER_OTLP_METRICS_HEADERS
OTEL_EXPORTER_OTLP_COMPRESSION
OTEL_EXPORTER_OTLP_TRACES_COMPRESSION
OTEL_EXPORTER_OTLP_METRICS_COMPRESSION
OTEL_EXPORTER_OTLP_TIMEOUT
OTEL_EXPORTER_OTLP_TRACES_TIMEOUT
OTEL_EXPORTER_OTLP_METRICS_TIMEOUT
OTEL_EXPORTER_OTLP_CERTIFICATE
OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE
OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE
otlpgrpc.WithTimeout
option for configuring timeout to the otlp/gRPC exporter. (#1821)jaeger.WithMaxPacketSize
option for configuring maximum UDP packet size used when connecting to the Jaeger agent. (#1853)Span.IsRecording
implementation from go.opentelemetry.io/otel/sdk/trace
always returns false when not being sampled. (#1750)"otel.status_code"
, "otel.status_description"
) and does not set the status message as a tag unless it is set on the span. (#1761)"event"
key for a tag.
Additionally, this tag is overridden, as specified in the OTel specification, if the event contains an attribute with that key. (#1768)RecordError
now records an exception
event to comply with the semantic convention specification. (#1492)go.opentelemetry.io/proto/otlp
. (#1713)github.com/gogo/protobuf
to google.golang.org/protobuf
to match go.opentelemetry.io/proto/otlp
. (#1713)context.Context
using its SpanContext is unified to store just the current Span.
The Span's SpanContext can now self-identify as being remote or not.
This means that "go.opentelemetry.io/otel/trace".ContextWithRemoteSpanContext
will now overwrite any existing current Span, not just existing remote Spans, and make it the current Span in a context.Context
. (#1731)"go.opentelemetry.io/otel/export/trace".SpanSnapshot
is unified in a new Parent
field.
The existing ParentSpanID
and HasRemoteParent
fields are removed in favor of this. (#1748)ParentContext
field of the "go.opentelemetry.io/otel/sdk/trace".SamplingParameters
is updated to hold a context.Context
containing the parent span.
This changes it to make SamplingParameters
conform with the OpenTelemetry specification. (#1749)JAEGER_ENDPOINT
, JAEGER_USER
, JAEGER_PASSWORD
to OTEL_EXPORTER_JAEGER_ENDPOINT
, OTEL_EXPORTER_JAEGER_USER
, OTEL_EXPORTER_JAEGER_PASSWORD
in compliance with OTel specification. (#1752)BatchSpanProcessor.ForceFlush
to abort after timeout/cancellation. (#1757)DroppedAttributeCount
field of the Span
in the go.opentelemetry.io/otel
package now only represents the number of attributes dropped for the span itself.
It no longer is a conglomerate of itself, events, and link attributes that have been dropped. (#1771)ExportSpans
in Jaeger Exporter honor context deadline. (#1773)go.opentelemetry.io/otel/sdk/export/trace
package is merged into the go.opentelemetry.io/otel/sdk/trace
package. (#1778)TracerProvider
implementation and enable the shutdown of the exporter. (#1800)InstallNewPipeline
and NewExportPipeline
) with the TracerProvider
implementation they create.
This enables the caller to shutdown and flush using the related TracerProvider
methods. (#1822)http://localhost:14250
, for the collector. (#1824)WithCollectorEndpoint
in the Jaeger exporter to no longer accept an endpoint as an argument.
The endpoint can be passed with the CollectorEndpointOption
using the WithEndpoint
function or by setting the OTEL_EXPORTER_JAEGER_ENDPOINT
environment variable value appropriately. (#1824)BatchSpanProcessor
for this functionality. (#1830)NewRawExporter
, NewExportPipeline
, and InstallNewPipeline
) no longer accept the removed Option
type as a variadic argument. (#1830)JAEGER_SERVICE_NAME
, JAEGER_DISABLED
, JAEGER_TAGS
These environment variables will no longer be used to override values of the Jaeger exporter (#1752)Span
in go.opentelemetry.io/otel/sdk/trace
that is configured to be a new root.
This is unspecified behavior that the OpenTelemetry community plans to standardize in the future.
To prevent backwards incompatible changes when it is specified, these links are removed. (#1726)"go.opentelemetry.io/otel/trace".RemoteSpanContextFromContext
is removed as it is no longer needed.
Instead, "go.opentelemetry.io/otel/trace".SpanContextFromContex
can be used to return the current Span.
If needed, that Span's SpanContext.IsRemote()
can then be used to determine if it is remote or not. (#1731)HasRemoteParent
field of the "go.opentelemetry.io/otel/sdk/trace".SamplingParameters
is removed.
This field is redundant to the information returned from the Remote
method of the SpanContext
held in the ParentContext
field. (#1749)trace.FlagsDebug
and trace.FlagsDeferred
constants have been removed and will be localized to the B3 propagator. (#1770)Process
configuration, WithProcessFromEnv
and ProcessFromEnv
, and type from the Jaeger exporter package.
The information that could be configured in the Process
struct should be configured in a Resource
instead. (#1776, #1804)WithDisabled
option from the Jaeger exporter.
To disable the exporter unregister it from the TracerProvider
or use a no-operation TracerProvider
. (#1806)CollectorEndpointFromEnv
and WithCollectorEndpointOptionFromEnv
from the Jaeger exporter.
These functions for retrieving specific environment variable values are redundant of other internal functions and
are not intended for end user use. (#1824)WithSDKOptions
Option
.
This option was used to set SDK options for the exporter creation convenience functions.
These functions are provided as a way to easily setup or install the exporter with what are deemed reasonable SDK settings for common use cases.
If the SDK needs to be configured differently, the NewRawExporter
function and direct setup of the SDK with the desired settings should be used. (#1825)WithBufferMaxCount
and WithBatchMaxCount
Option
s from the Jaeger exporter are removed.
The exporter no longer batches exports, instead relying on the SDK's BatchSpanProcessor
for this functionality. (#1830)Option
type is removed.
The type is no longer used by the exporter to configure anything.
All the previous configurations these options provided were duplicates of SDK configuration.
They have been removed in favor of using the SDK configuration and focuses the exporter configuration to be only about the endpoints it will send telemetry to. (#1830)Marshaler
config option to otlphttp
to enable otlp over json or protobufs. (#1586)ForceFlush
method to the "go.opentelemetry.io/otel/sdk/trace".TracerProvider
to flush all registered SpanProcessor
s. (#1608)WithSampler
and WithSpanLimits
to tracer provider. (#1633, #1702)"go.opentelemetry.io/otel/trace".SpanContext
now has a remote
property, and IsRemote()
predicate, that is true when the SpanContext
has been extracted from remote context data. (#1701)Valid
method to the "go.opentelemetry.io/otel/attribute".KeyValue
type. (#1703)trace.SpanContext
is now immutable and has no exported fields. (#1573)
trace.NewSpanContext()
can be used in conjunction with the trace.SpanContextConfig
struct to initialize a new SpanContext
where all values are known.ForceFlush
method signature to the "go.opentelemetry.io/otel/sdk/trace".SpanProcessor
to accept a context.Context
and return an error. (#1608)Shutdown
method to the "go.opentelemetry.io/otel/sdk/trace".TracerProvider
return an error on shutdown failure. (#1608)SpanExporter
and gracefully ignore subsequent calls to OnEnd
after Shutdown
is called. (#1612)"go.opentelemetry.io/sdk/metric/controller.basic".WithPusher
is replaced with WithExporter
to provide consistent naming across project. (#1656)Attribute
keys. (#1659)description
to SpanStatus only when StatusCode
is set to error. (#1662)resource.Default
's service.name
if the exported Span does not have one. (#1673)LabelSet
method of "go.opentelemetry.io/otel/sdk/resource".Resource
to Set
. (#1692)WithSDK
to WithSDKOptions
to accept variadic arguments of TracerProviderOption
type in go.opentelemetry.io/otel/exporters/trace/jaeger
package. (#1693)WithSDK
to WithSDKOptions
to accept variadic arguments of TracerProviderOption
type in go.opentelemetry.io/otel/exporters/trace/zipkin
package. (#1693)serviceName
parameter from Zipkin exporter and uses resource instead. (#1549)WithConfig
from tracer provider to avoid overriding configuration. (#1633)SimpleSpanProcessor
and BatchSpanProcessor
structs.
These are now returned as a SpanProcessor interface from their respective constructors. (#1638)WithRecord()
from trace.SpanOption
when creating a span. (#1660)Error
while recording an error as a span event in RecordError
. (#1663)jaeger.WithProcess
configuration option. (#1673)ApplyConfig
method from "go.opentelemetry.io/otel/sdk/trace".TracerProvider
and the now unneeded Config
struct. (#1693)SamplingResult.TraceState
is correctly propagated to a newly created span's SpanContext
. (#1655)otel-collector
example now correctly flushes metric events prior to shutting down the exporter. (#1678)SpanStatusFromHTTPStatusCode
if it can be inferred from http.status_code
. (#1681)TracerProvider
. (#1687)resource.Default()
for use with meter and tracer providers. (#1507)AttributePerEventCountLimit
and AttributePerLinkCountLimit
for SpanLimits
. (#1535)Keys()
method to propagation.TextMapCarrier
and propagation.HeaderCarrier
to adapt http.Header
to this interface. (#1544)code
attributes to go.opentelemetry.io/otel/semconv
package. (#1558)oteltest.SpanRecorder
with its existing implementation
StandardSpanRecorder
. (#1542)MaxEventsPerSpan
, MaxAttributesPerSpan
and MaxLinksPerSpan
to EventCountLimit
, AttributeCountLimit
and LinkCountLimit
, and move these fields into SpanLimits
. (#1535)otel/label
package to otel/attribute
. (#1541)WithBatchTimeout(5 * time.Second)
rather than WithBatchTimeout(5)
. (#1621)Prevent end-users from implementing some interfaces (#1575)
"otel/exporters/otlp/otlphttp".Option
"otel/exporters/stdout".Option
"otel/oteltest".Option
"otel/trace".TracerOption
"otel/trace".SpanOption
"otel/trace".EventOption
"otel/trace".LifeCycleOption
"otel/trace".InstrumentationOption
"otel/sdk/resource".Option
"otel/sdk/trace".ParentBasedSamplerOption
"otel/sdk/trace".ReadOnlySpan
"otel/sdk/trace".ReadWriteSpan
span.SetName()
. (#1545)test-benchmark
is no longer a dependency of the precommit
make target. (#1567)test-386
make target.
This was replaced with a full compatibility testing suite (i.e. multi OS/arch) in the CI system. (#1567)master
to main
. (#1505)Resource
attributes are merged, per change in spec. (#1501)go.opentelemetry.io/otel/exporters/otlp
is moved to a compiled example test and used the new WithAddress
instead of WithEndpoint
. (#1513)ReadOnlySpan
and ReadWriteSpan
interfaces to provide better control for accessing span data. (#1360)NewGRPCDriver
function returns a ProtocolDriver
that maintains a single gRPC connection to the collector. (#1369)NewSplitDriver
for OTLP exporter that allows sending traces and metrics to different endpoints. (#1418)exporters/otlp/otlphttp
. Currently it only supports the binary protobuf payloads. (#1420)internal/testing
to internal/internaltest
. (#1449)export.SpanData
to export.SpanSnapshot
and use it only for exporting spans. (#1360)SpanContext
rather than just its span ID in the span
struct. (#1360)array
aggregator renamed exact
to match its aggregation.Kind
(#1412)exact
aggregator includes per-point timestamps (#1412)NewExporter
from exporters/otlp
now takes a ProtocolDriver
as a parameter. (#1369)uint64
. (1430)SamplingResult
now passed a Tracestate
from the parent SpanContext
(#1432)exporters/otlp/otlpgrpc
. (#1420)TraceContext
propagator now correctly propagates TraceState
through the SpanContext
. (#1447)WithExporter()
and Start()
to configure Push behaviorStart()
is optional; use Collect()
and ForEach()
for Pull behaviorStart()
and Stop()
accept Context. (#1378)Event
type is moved from the otel/sdk/export/trace
package to the otel/trace
API package. (#1452)errUninitializedSpan
as its only usage is now obsolete. (#1360)BatchSpanProcessor.Shutdown()
will now shutdown underlying export.SpanExporter
. (#1443)WithIDGenerator
TracerProviderOption
is added to the go.opentelemetry.io/otel/trace
package to configure an IDGenerator
for the TracerProvider
. (#1363)NewExporter
and Start
functions in go.opentelemetry.io/otel/exporters/otlp
now receive context.Context
as a first parameter. (#1357)example
directory. (#1359)internal.IDGenerator
interface in to the sdk/trace
package to enable support for externally-defined ID generators. (#1363)github.com/google/go-cmp
from 0.5.3 to 0.5.4 (#1374)github.com/golangci/golangci-lint
in /internal/tools
(#1375)SumObserver
and UpDownSumObserver
instruments correctness fixes. (#1381)EventOption
and the related NewEventConfig
function are added to the go.opentelemetry.io/otel
package to configure Span events. (#1254)TextMapPropagator
and associated TextMapCarrier
are added to the go.opentelemetry.io/otel/oteltest
package to test TextMap
type propagators and their use. (#1259)SpanContextFromContext
returns SpanContext
from context. (#1255)TraceState
has been added to SpanContext
. (#1340)DeploymentEnvironmentKey
added to go.opentelemetry.io/otel/semconv
package. (#1323)SpanProcessor.OnStart
to follow the specification. (#1333)sdk/trace/attributes_map.go
. (#1337)go.opentelemetry.io/otel/api/trace
package into go.opentelemetry.io/otel/trace
with the following changes. (#1229) (#1307)
ID
has been renamed to TraceID
.IDFromHex
has been renamed to TraceIDFromHex
.EmptySpanContext
is removed.go.opentelemetry.io/otel/api/trace/tracetest
package into go.opentelemetry.io/otel/oteltest
. (#1229)Kind
type from the go.opentelemetry.io/otel/api/metric
package was renamed to InstrumentKind
to more specifically describe what it is and avoid semantic ambiguity. (#1240)MetricKind
method of the Descriptor
type in the go.opentelemetry.io/otel/api/metric
package was renamed to Descriptor.InstrumentKind
.
This matches the returned type and fixes misuse of the term metric. (#1240)go.opentelemetry.io/otel/api/apitest
package into go.opentelemetry.io/otel/oteltest
. (#1241)go.opentelemetry.io/otel/api/metric/metrictest
package into go.opentelemetry.io/oteltest
as part of #964. (#1252)go.opentelemetry.io/otel/api/metric
package into go.opentelemetry.io/otel/metric
as part of #1303. (#1321)go.opentelemetry.io/otel/api/metric/registry
package into go.opentelemetry.io/otel/metric/registry
as a part of #1303. (#1316)Number
type (together with related functions) from go.opentelemetry.io/otel/api/metric
package into go.opentelemetry.io/otel/metric/number
as a part of #1303. (#1316)AddEvent
method in go.opentelemetry.io/otel
is updated to no longer take an unused context and instead take a required name and a variable number of EventOption
s. (#1254)RecordError
method in go.opentelemetry.io/otel
is updated to no longer take an unused context and instead take a required error value and a variable number of EventOption
s. (#1254)go.opentelemetry.io/otel/api/global
package to go.opentelemetry.io/otel
. (#1262) (#1330)Version
function from go.opentelemetry.io/otel/sdk
to go.opentelemetry.io/otel
. (#1330)"otcorrelations"
to "baggage"
to match the OpenTelemetry specification. (#1267)Code.UnmarshalJSON
to work with valid JSON only. (#1276)resource.New()
method changes signature to support builtin attributes and functional options, including telemetry.sdk.*
and
host.name
semantic conventions; the former method is renamed resource.NewWithAttributes
. (#1235)UpDownCounter
s) as gauges. (#1210)Span.End
method documentation in the otel
API to state updates are not allowed on a span after it has ended. (#1310)semconv.HTTPUrlKey
to semconv.HTTPURLKey
. (#1338)ErrInvalidHexID
, ErrInvalidTraceIDLength
, ErrInvalidSpanIDLength
, ErrInvalidSpanIDLength
, or ErrNilSpanID
from the go.opentelemetry.io/otel
package are unexported now. (#1243)AddEventWithTimestamp
method on the Span
interface in go.opentelemetry.io/otel
is removed due to its redundancy.
It is replaced by using the AddEvent
method with a WithTimestamp
option. (#1254)MockSpan
and MockTracer
types are removed from go.opentelemetry.io/otel/oteltest
.
Tracer
and Span
from the same module should be used in their place instead. (#1306)WorkerCount
option is removed from go.opentelemetry.io/otel/exporters/otlp
. (#1350)MergeItererator
to MergeIterator
in the go.opentelemetry.io/otel/label
package. (#1244)go.opentelemetry.io/otel/api/global
packages global TextMapPropagator now delegates functionality to a globally set delegate for all previously returned propagators. (#1258)label.Any
. (#1299)TracerProvider
to pass options to its configured provider. (#1329)ExactKind
aggregator in OTLP metrics transformer (#1309)Code
struct from the go.opentelemetry.io/otel/codes
package now supports JSON marshaling and unmarshaling as well as implements the Stringer
interface. (#1214)HTTPSupplier
, HTTPExtractor
, HTTPInjector
, and HTTPPropagator
from the go.opentelemetry.io/otel/api/propagation
package were replaced with unified TextMapCarrier
and TextMapPropagator
in the go.opentelemetry.io/otel/propagation
package. (#1212) (#1325)New
function from the go.opentelemetry.io/otel/api/propagation
package was replaced with NewCompositeTextMapPropagator
in the go.opentelemetry.io/otel
package. (#1212)go.opentelemetry.io/otel/codes
package have been updated to match the latest OpenTelemetry specification.
They now are Unset
, Error
, and Ok
.
They no longer track the gRPC codes. (#1214)StatusCode
field of the SpanData
struct in the go.opentelemetry.io/otel/sdk/export/trace
package now uses the codes package from this package instead of the gRPC project. (#1214)go.opentelemetry.io/otel/api/baggage
package into go.opentelemetry.io/otel/baggage
. (#1217) (#1325)Shutdown
method of SpanProcessor
and all its implementations receives a context and returns an error. (#1264)go.opentelemetry.io/otel/label.ArrayValue()
are now used in the returned Value
instead of using the mutable data itself. (#1226)ExtractHTTP
and InjectHTTP
functions from the go.opentelemetry.io/otel/api/propagation
package were removed. (#1212)Propagators
interface from the go.opentelemetry.io/otel/api/propagation
package was removed to conform to the OpenTelemetry specification.
The explicit TextMapPropagator
type can be used in its place as this is the Propagator
type the specification defines. (#1212)SetAttribute
method of the Span
from the go.opentelemetry.io/otel/api/trace
package was removed given its redundancy with the SetAttributes
method. (#1216)HostHostNameKey
in Resource semantic conventions. (#1219)SpanConfigure
function in go.opentelemetry.io/otel/api/trace
to create a new SpanConfig
from SpanOption
s. (#1108)go.opentelemetry.io/otel/api/trace
package, NewTracerConfig
was added to construct new TracerConfig
s.
This addition was made to conform with our project option conventions. (#1155)SpanProcessor
interface now has a ForceFlush()
method. (#1166)StartOption
and EndOption
in go.opentelemetry.io/otel/api/trace
with SpanOption
.
This change is matched by replacing the StartConfig
and EndConfig
with a unified SpanConfig
. (#1108)LinkedTo
span option in go.opentelemetry.io/otel/api/trace
with WithLinks
.
This is be more consistent with our other option patterns, i.e. passing the item to be configured directly instead of its component parts, and provides a cleaner function signature. (#1108)go.opentelemetry.io/otel/api/trace
TracerOption
was changed to an interface to conform to project option conventions. (#1109)B3
and TraceContext
from within the go.opentelemetry.io/otel/api/trace
package to their own go.opentelemetry.io/otel/propagators
package.
This removal of the propagators is reflective of the OpenTelemetry specification for these propagators as well as cleans up the go.opentelemetry.io/otel/api/trace
API. (#1118)ProbabilitySampler
to TraceIDRatioBased
and change semantics to ignore parent span sampling status. (#1115)tools
package under internal
. (#1141)go.opentelemetry.io/otel/api/correlation
package to go.opentelemetry.io/otel/api/baggage
. (#1142)
The correlation.CorrelationContext
propagator has been renamed baggage.Baggage
. Other exported functions and types are unchanged.ParentOrElse
sampler to ParentBased
and allow setting samplers depending on parent span. (#1153)go.opentelemetry.io/otel/api/trace
package, SpanConfigure
was renamed to NewSpanConfig
. (#1155)dependabot.yml
to add a Skip Changelog
label to dependabot-sourced PRs. (#1161)newConfig()
instead of configure()
. (#1163)otlp.Config
type has been unexported and changed to otlp.config
, along with its initializer. (#1163)go.opentelemetry.io/otel/api/metric.ConfigureInstrument
to NewInstrumentConfig
and
go.opentelemetry.io/otel/api/metric.ConfigureMeter
to NewMeterConfig
.go.opentelemetry.io/otel/api/unit
package to go.opentelemetry.io/otel/unit
. (#1185)Provider
to MeterProvider
in the go.opentelemetry.io/otel/api/metric
package. (#1190)NoopProvider
to NoopMeterProvider
in the go.opentelemetry.io/otel/api/metric
package. (#1190)NewProvider
to NewMeterProvider
in the go.opentelemetry.io/otel/api/metric/metrictest
package. (#1190)Provider
to MeterProvider
in the go.opentelemetry.io/otel/api/metric/registry
package. (#1190)NewProvider
to NewMeterProvider
in the go.opentelemetry.io/otel/api/metri/registryc
package. (#1190)Provider
to TracerProvider
in the go.opentelemetry.io/otel/api/trace
package. (#1190)NoopProvider
to NoopTracerProvider
in the go.opentelemetry.io/otel/api/trace
package. (#1190)Provider
to TracerProvider
in the go.opentelemetry.io/otel/api/trace/tracetest
package. (#1190)NewProvider
to NewTracerProvider
in the go.opentelemetry.io/otel/api/trace/tracetest
package. (#1190)WrapperProvider
to WrapperTracerProvider
in the go.opentelemetry.io/otel/bridge/opentracing
package. (#1190)NewWrapperProvider
to NewWrapperTracerProvider
in the go.opentelemetry.io/otel/bridge/opentracing
package. (#1190)Provider
method of the pull controller to MeterProvider
in the go.opentelemetry.io/otel/sdk/metric/controller/pull
package. (#1190)Provider
method of the push controller to MeterProvider
in the go.opentelemetry.io/otel/sdk/metric/controller/push
package. (#1190)ProviderOptions
to TracerProviderConfig
in the go.opentelemetry.io/otel/sdk/trace
package. (#1190)ProviderOption
to TracerProviderOption
in the go.opentelemetry.io/otel/sdk/trace
package. (#1190)Provider
to TracerProvider
in the go.opentelemetry.io/otel/sdk/trace
package. (#1190)NewProvider
to NewTracerProvider
in the go.opentelemetry.io/otel/sdk/trace
package. (#1190)SamplingDecision
values to comply with OpenTelemetry specification change. (#1192)ot.status_code & ot.status_description
to otel.status_code & otel.status_description
. (#1201)SpanProcessor
s in the order they were registered with the TracerProvider
. (#1195)SpanProcessor
s in the order they were registered. (#1203)go.opentelemetry.io/otel/propagators
. It is now located in the
go.opentelemetry.io/contrib/propagators/
module. (#1191)HTTPStatusTextKey
from package go.opentelemetry.io/otel/semconv
. (#1194)ParentSampler
, corrected to ParentBased
. (#1171)Noop
and InMemory
SpanBatcher
implementations to help with testing integrations. (#994)WithSpanProcessor
ProviderOption
is added to the go.opentelemetry.io/otel/sdk/trace
package to create a Provider
and automatically register the SpanProcessor
. (#1078)sdk/metric/processor/test
to sdk/metric/processor/processortest
. (#1049)sdk/metric/controller/test
to sdk/metric/controller/controllertest
. (#1049)api/testharness
to api/apitest
. (#1049)api/trace/testtrace
to api/trace/tracetest
. (#1049)go.opentelemetry.io/otel/bridge/opentracing
bridge package has been made into its own module.
This removes the package dependencies of this bridge from the rest of the OpenTelemetry based project. (#1038)go.opentelemetry.io/otel/api/standard
package to go.opentelemetry.io/otel/semconv
to avoid the ambiguous and generic name standard
and better describe the package as containing OpenTelemetry semantic conventions. (#1016)OTEL_RESOURCE_LABELS
to OTEL_RESOURCE_ATTRIBUTES
(#1042)WithSyncer
with WithBatcher
in examples. (#1044)google.golang.org/grpc/codes
dependency in the API with an equivalent go.opentelemetry.io/otel/codes
package. (#1046)go.opentelemetry.io/otel/api/label
and go.opentelemetry.io/otel/api/kv
into the new go.opentelemetry.io/otel/label
package. (#1060)*Callback
with *Func
. (#1061)go.opentelemetry.io/otel/sdk/export/trace
interfaces SpanSyncer
and SpanBatcher
have been replaced with a specification compliant Exporter
interface.
This interface still supports the export of SpanData
, but only as a slice.
Implementation are also required now to return any error from ExportSpans
if one occurs as well as implement a Shutdown
method for exporter clean-up. (#1078)go.opentelemetry.io/otel/sdk/trace
NewBatchSpanProcessor
function no longer returns an error.
If a nil
exporter is passed as an argument to this function, instead of it returning an error, it now returns a BatchSpanProcessor
that handles the export of SpanData
by not taking any action. (#1078)go.opentelemetry.io/otel/sdk/trace
NewProvider
function to create a Provider
no longer returns an error, instead only a *Provider
.
This change is related to NewBatchSpanProcessor
not returning an error which was the only error this function would return. (#1078)Sampler
interface provided by the SDK instead.grpctrace
instrumentation was moved to the go.opentelemetry.io/contrib
repository and out of this repository.
This move includes moving the grpc
example to the go.opentelemetry.io/contrib
as well. (#1027)WithSpan
method of the Tracer
interface.
The functionality this method provided was limited compared to what a user can provide themselves.
It was removed with the understanding that if there is sufficient user need it can be added back based on actual user usage. (#1043)RegisterSpanProcessor
and UnregisterSpanProcessor
functions.
These were holdovers from an approach prior to the TracerProvider design. They were not used anymore. (#1077)oterror
package. (#1026)othttp
and httptrace
instrumentations were moved to go.opentelemetry.io/contrib
. (#1032)semconv.HTTPServerMetricAttributesFromHTTPRequest()
function no longer generates the high-cardinality http.request.content.length
label. (#1031)End
method is called during a panic (i.e. it was deferred). (#1043)go.opentelemetry.io/otel
to the OTLP exporter to reduce dependency overhead. (#1050)otel-collector
example referenced outdated collector processors. (#1006)This release migrates the default OpenTelemetry SDK into its own Go module, decoupling the SDK from the API and reducing dependencies for instrumentation packages.
NewExportPipeline
and InstallNewPipeline
constructor functions to match the common pattern.
These function build a new exporter with default SDK options and register the exporter with the global
package respectively. (#944)testtrace
package now tracks the trace.SpanKind
for each span. (#987)RegisterGlobal
Option
in the Jaeger exporter with an InstallNewPipeline
constructor function.
This matches the other exporter constructor patterns and will register a new exporter after building it with default configuration. (#944)go.opentelemetry.io/otel/exporters/trace/stdout
) and metric (go.opentelemetry.io/otel/exporters/metric/stdout
) stdout
exporters are now merged into a single exporter at go.opentelemetry.io/otel/exporters/stdout
.
This new exporter was made into its own Go module to follow the pattern of all exporters and decouple it from the go.opentelemetry.io/otel
module. (#956, #963)go.opentelemetry.io/otel/exporters/test
test package to go.opentelemetry.io/otel/sdk/export/metric/metrictest
. (#962)go.opentelemetry.io/otel/api/kv/value
package was merged into the parent go.opentelemetry.io/otel/api/kv
package. (#968)
value.Bool
was replaced with kv.BoolValue
.value.Int64
was replaced with kv.Int64Value
.value.Uint64
was replaced with kv.Uint64Value
.value.Float64
was replaced with kv.Float64Value
.value.Int32
was replaced with kv.Int32Value
.value.Uint32
was replaced with kv.Uint32Value
.value.Float32
was replaced with kv.Float32Value
.value.String
was replaced with kv.StringValue
.value.Int
was replaced with kv.IntValue
.value.Uint
was replaced with kv.UintValue
.value.Array
was replaced with kv.ArrayValue
.Infer
to Any
in the go.opentelemetry.io/otel/api/kv
package. (#972)othttp
to use the httpsnoop
package to wrap the ResponseWriter
so that optional interfaces (http.Hijacker
, http.Flusher
, etc.) that are implemented by the original ResponseWriter
are also implemented by the wrapped ResponseWriter
. (#979)go.opentelemetry.io/otel/sdk/metric/aggregator/test
package to go.opentelemetry.io/otel/sdk/metric/aggregator/aggregatortest
. (#980)go.opentelemetry.io/otel/sdk
. (#985)Sampler
from AlwaysOn
to ParentOrElse(AlwaysOn)
. (#989)IndexedAttribute
function from the go.opentelemetry.io/otel/api/label
package was removed in favor of IndexedLabel
which it was synonymous with. (#970)global.Handle
for span export errors in the OTLP exporter. (#946)go.opentelemetry.io/otel/api
package. (#977)go.opentelemetry.io/otel/instrumentation
package. (#983)go.opentelemetry.io/otel/instrumentation/grpctrace
interceptors into Go example tests. (#984)internal/opentelemetry-proto-gen
. (#938)open-telemetry/opentelemetry-proto
imported as a git submodule under internal/opentelemetry-proto
.
References to github.com/open-telemetry/opentelemetry-proto
changed to go.opentelemetry.io/otel/internal/opentelemetry-proto-gen
. (#942)struct
s for key-value pairs will be marshalled using JSON rather than Sprintf
. (#948)github.com/open-telemetry/opentelemetry-collector
. (#943)B3Encoding
type to represent the B3 encoding(s) the B3 propagator can inject.
A value for HTTP supported encodings (Multiple Header: MultipleHeader
, Single Header: SingleHeader
) are included. (#882)FlagsDeferred
trace flag to indicate if the trace sampling decision has been deferred. (#882)FlagsDebug
trace flag to indicate if the trace is a debug trace. (#882)peer.service
semantic attribute. (#898)faas.coldstart
and container.id
. (#909)http.request_content_length
in HTTP request basic attributes. (#905)WithBatchMaxCount
option to specify the maximum number of spans sent in a batch. (#931)CONTRIBUTING.md
to ask for updates to CHANGELOG.md
with each pull request. (#879)SingleHeader
field has been replaced with InjectEncoding
.
This new field can be set to combinations of the B3Encoding
bitmasks and will inject trace information in these encodings.
If no encoding is set, the propagator will default to MultipleHeader
encoding. (#882)api/standard
package, the FaaS*
key names are appended with a suffix of Key
. (#920)
"api/standard".FaaSName
-> FaaSNameKey
"api/standard".FaaSID
-> FaaSIDKey
"api/standard".FaaSVersion
-> FaaSVersionKey
"api/standard".FaaSInstance
-> FaaSInstanceKey
FlagsUnused
trace flag is removed.
The purpose of this flag was to act as the inverse of FlagsSampled
, the inverse of FlagsSampled
is used instead. (#882)B3SingleHeader
, B3DebugFlagHeader
, B3TraceIDHeader
, B3SpanIDHeader
, B3SampledHeader
, B3ParentSpanIDHeader
) are removed.
If B3 header keys are needed the authoritative OpenZipkin package constants should be used instead. (#882)b3
instead of the previous X-B3
. (#881)b3: 0
, b3: 1
, or b3: d
) for a Single B3 Header. (#882)X-B3-Sampling
header. (#882)X-B3-Sampling
header when injecting. (#882)a7454ce595
to v1.2.0. (#885)UnixNano
. (#896)Unknown
when no HTTP status code is provided as it is assumed to be 200 OK
. (#908)httptrace.clientTracer
closes http.headers
span. (#912)HTTPClientAttributesFromHTTPRequest
. (#905)grpctrace
instrumentation uses a span name conforming to the OpenTelemetry semantic conventions (does not contain a leading slash (/
)). (#922)grpctrace
instrumentation includes an rpc.method
attribute now set to the gRPC method name. (#900, #922)grpctrace
instrumentation rpc.service
attribute now contains the package name if one exists.
This is in accordance with OpenTelemetry semantic conventions. (#922)This release implements the v0.5.0 version of the OpenTelemetry specification.
Accumulation
type to metric SDK to transport telemetry from Accumulator
s to Processor
s.
This replaces the prior Record
struct
use for this purpose. (#835)Meter
and Tracer
implementations accept instrumentation version version as an optional argument.
This instrumentation version is passed on to exporters. (#811) (#805) (#802)aggregation.Kind
in the export metric API. (#808)SetName
during span initialization. (#791)go.opentelemetry.io/otel/api/oterror
package to uniformly support error handling and definitions for the project. (#778)global
default implementation of the go.opentelemetry.io/otel/api/oterror.Handler
interface to be used to handle errors prior to an user defined Handler
.
There is also functionality for the user to register their Handler
as well as a convenience function Handle
to handle an error with this global Handler
(#778)application/json
header for the Zipkin exporter is included in all exports. (#774)api/standard
package. #769Integrator
to Processor
in the metric SDK. (#863)AggregationSelector
to AggregatorSelector
. (#859)SynchronizedCopy
to SynchronizedMove
. (#858)simple
integrator to basic
integrator. (#857)Aggregator.Checkpoint
API is renamed to SynchronizedCopy
and adds an argument, a different Aggregator
into which the copy is stored. (#812)export.Aggregator
contract is that Update()
and SynchronizedCopy()
are synchronized with each other.
All the aggregation interfaces (Sum
, LastValue
, ...) are not meant to be synchronized, as the caller is expected to synchronize aggregators at a higher level after the Accumulator
.
Some of the Aggregators
used unnecessary locking and that has been cleaned up. (#812)metric.Number
was replaced by int64
now that we use sync.Mutex
in the MinMaxSumCount
and Histogram
Aggregators
. (#812)AlwaysParentSample
with ParentSample(fallback)
to match the OpenTelemetry v0.5.0 specification. (#810)sdk/export/metric/aggregator
to sdk/export/metric/aggregation
. #808global.Handle
function. (#791)plugin
directory to instrumentation
to match the OpenTelemetry specification. (#779)New()
consistent. (#781)Uint64NumberKind
and related functions from the API. (#864)Aggregator.Checkpoint
and Integrator.Process
as they were unused. (#803)SpanID
is no longer included in parameters for sampling decision to match the OpenTelemetry specification. (#775)go.sum
and go.mod
when running dependabot tidy-up. (#871)Aggregator
testing has been updated and cleaned. (#812)metric.Number(0)
expressions are replaced by 0
where possible. (#812)global
handler_test.go
test failure. #804BatchSpanProcessor.Shutdown
to wait until all spans are processed. (#766)api/standard
keys instead of custom keys. (#782)Resource
s in the prometheus exporter. (#757)UpDownSumObserver
instrument. (#750)SumObserver
instrument. (#747)UpDownCounter
instrument. (#745)Option
and configuration function WithTimeout
to the push controller. (#742)api/standards
package to implement semantic conventions and standard key-value generation. (#731)Register*
functions in the metric API to New*
for all Observer
instruments. (#761)[]float64
for histogram boundaries, not []metric.Number
. (#758)Syncer
instead of as an unneeded Batcher
. (#756)WithResourceAttributes()
with WithResource()
in the trace SDK. (#754)ScheduleDelayMillis
to BatchTimeout
in the trace BatchSpanProcessor
.(#752)Resource
from the Export
method parameter into the metric export Record
. (#739)Observer
instrument to ValueObserver
. (#734)Provider()
) to return a metric.Provider
instead of the old Meter
method that acted as a metric.Provider
. (#738)Measure
instrument by ValueRecorder
instrument. (#732)"Correlation-Context"
to "otcorrelations"
to match the OpenTelemetry specification. (#727)ClientStream
override methods do not panic in grpctrace package. (#755)BatchSpanProcessor
test until a fix is found. (#743)string
case in kv
Infer
function. (#746)api/metrics
push controller and add CheckpointSet
synchronization. (#737)golang-1.14
for examples. (#733)UnaryInterceptorClient
. (#695)api/metric
code layout. (#724)Observer
callback support. (#717)api
types to root package of project. (#696)othttp.Transport
for simple client instrumentation. (#678)SetAttribute(string, interface{})
to the trace API. (#674)Stringer
and Infer
methods to key
s. (#662)NewKey
in the kv
package to just Key
. (#721)core
and key
to kv
package. (#720)Meter
a struct
so the abstract MeterImpl
can be passed and simplify implementation. (#709)Batcher
to Integrator
to match draft OpenTelemetry SDK specification. (#710)Ungrouped
integrator to simple.Integrator
to match draft OpenTelemetry SDK specification. (#710)SDK
struct
to Accumulator
to match draft OpenTelemetry SDK specification. (#710)Number
from core
to api/metric
package. (#706)SpanContext
from core
to trace
package. (#692)Traceparent
to traceparent
to implement the W3C specification. (#681)const
for padding 64-bit B3 trace IDs. (#701)mockZipkin
listen address from :0
to 127.0.0.1:0
. (#700)StateLocker
implementation. (#688)key
benchmark and use reflection in key.Infer()
. (#679)global
test by using global.Meter
with RecordBatch()
. (#680)StateLocker
. (#669)MinMaxSumCount
to a mutex lock implementation instead of StateLocker
. (#667)WithKeys
. (#672)golangci-lint
and work around the corrupting bug. (#666) (#670)Dockerfile
and docker-compose.yml
to run example code. (#635)grpctrace
package that provides gRPC client and server interceptors for both unary and stream connections. (#621)api/label
package, providing common label set implementation. (#651)Resources
. (#654)TraceID
and SpanID
implementations for Stringer
interface. (#642)RemoteAddrKey
in the othttp plugin to include the HTTP client address in top-level spans. (#627)WithSpanFormatter
option to the othttp plugin. (#617)String
method to the Resource
to return a hashable identifier for a now unique resource. (#613)Iter
method to the Resource
to return an array AttributeIterator
. (#613)Equal
method to the Resource
test the equivalence of resources. (#613)AttributeIterator
) for Resource
attributes.NewExporter
now requires a serviceName
argument to ensure this needed values is provided. (#644)Resources
through the metrics export pipeline. (#659)WithKeys
option from the metric API. (#639)label.Set.Equivalent
value instead of an encoding in the batcher. (#658)trace.Exporter
to trace.SpanSyncer
in comments. (#653)api/key
package by updating comments and fixing usages locally. (#650)Checkpoint
only after Update
; Keep records in the sync.Map
longer. (#647)reflect.ValueOf()
in metric Labels. (#649)Resource
and labels. (#626)string
representation of an associated Resource
as the batching key. (#623)SpanData
transform to only include the ParentSpanID
if one exists. (#614)Resource
internal representation to uniquely and reliably identify resources. (#613)CheckpointSet.ForEach
in prometheus exporter. (#622)pre_release.sh
to update version in sdk/opentelemetry.go
. (#607)tag.sh
to create signed tags. (#604)api/metric/registry
that exposes a MeterImpl
wrapper for use by SDKs to generate unique instruments. (#580)LabelSet
from the metric API.
This is replaced by a []core.KeyValue
slice. (#595)Labels
from the metric API's Meter
interface. (#595)export.Labels
became an interface which the SDK implements and the export
package provides a simple, immutable implementation of this interface intended for testing purposes. (#574)internal/metric.Meter
to MeterImpl
. (#580)api/global/internal.obsImpl
to asyncImpl
. (#580)RecordBatch
benchmark. (#594)BatchedSpanProcessor
to process the queue until no data but respect max batch size. (#599)This is a first official beta release, which provides almost fully complete metrics, tracing, and context propagation functionality. There is still a possibility of breaking changes.
Observer
metric instrument. (#474)Propagators
functionality to enable deferred initialization for propagators registered before the first Meter SDK is installed. (#494)StatusMessage
field to the trace Span
. (#524)Resource
type was added to the SDK. (#528)Tracer
and Meter
function as shortcuts to getting a global *Provider
and calling these methods directly. (#538)MeterImpl
interface to support general purpose Meter
construction.
Additionally, SyncImpl
and AsyncImpl
are added to support general purpose instrument construction. (#560)Kind
is added to represent the MeasureKind
, ObserverKind
, and CounterKind
. (#560)AlwaysSampler
instead of ProbabilitySampler
to match OpenTelemetry specification. (#506)AlwaysSampleSampler
to AlwaysOnSampler
in the trace API. (#511)NeverSampleSampler
to AlwaysOffSampler
in the trace API. (#511)Status
field of the Span
was changed to StatusCode
to disambiguate with the added StatusMessage
. (#524)Sampler
interface conform to the OpenTelemetry specification. (#531)Options
to Config
. (#541)Counter
aggregator to be Sum
. (#541)Option
from instrument specific options. (#541)TraceProvider
now support Resource
s. (#545)Resource
s. (#551)Resource
s.
The WithResource
option was added to configure a Resource
on creation and the Resource
method was added to the metric Descriptor
to return the associated Resource
. (#552)ErrNoLastValue
and ErrEmptyDataSet
by ErrNoData
in the metric SDK. (#557)Resource
s. (#558)Descriptor
is now included at the API instead of the SDK. (#560)Ordered
with an iterator in export.Labels
. (#567)Unregister
method for metric observers as it is not in the OpenTelemetry specification. (#560)GetDescriptor
from the metric SDK. (#575)Gauge
instrument from the metric API. (#537)NewRoot
in the othttp plugin for public endpoints. (#513)BatchedSpanProcessor
. (#518)StateLocker
implementation in MinMaxSumCount
. (#546)Header*
filters that do not depend on Go 1.14. (#565)COVERAGE_MOD_DIR
. (#573)RecordError
method on Span
s in the trace API to Simplify adding error events to spans. (#473)exporter
directory to exporters
.
The go.opentelemetry.io/otel/exporter/trace/jaeger
package was mistakenly released with a v1.0.0
tag instead of v0.1.0
.
This resulted in all subsequent releases not becoming the default latest.
A consequence of this was that all go get
s pulled in the incompatible v0.1.0
release of that package when pulling in more recent packages from other otel packages.
Renaming the exporter
directory to exporters
fixes this issue by renaming the package and therefore clearing any existing dependency tags.
Consequentially, this action also renames all exporter packages. (#502)CorrelationContextHeader
constant in the correlation
package is no longer exported. (#503)HTTPSupplier
interface in the propagation API to specify methods to retrieve and store a single value for a key to be associated with a carrier. (#467)HTTPExtractor
interface in the propagation API to extract information from an HTTPSupplier
into a context. (#467)HTTPInjector
interface in the propagation API to inject information into an HTTPSupplier.
(#467)Config
and configuring Option
to the propagator API. (#467)Propagators
interface in the propagation API to contain the set of injectors and extractors for all supported carrier formats. (#467)HTTPPropagator
interface in the propagation API to inject and extract from an HTTPSupplier.
(#467)WithInjectors
and WithExtractors
functions to the propagator API to configure injectors and extractors to use. (#467)ExtractHTTP
and InjectHTTP
functions to apply configured HTTP extractors and injectors to a passed context. (#467)DefaultPropagator
function and have it return trace.TraceContext
as the default context propagator. (#456)AlwaysParentSample
sampler to the trace API. (#455)WithNewRoot
option function to the trace API to specify the created span should be considered a root span. (#451)WithMap
to ContextWithMap
in the correlation package. (#481)FromContext
to MapFromContext
in the correlation package. (#481)Tracer.WithSpan
updated to accept StartOptions
. (#472)MetricKind
to Kind
to not stutter in the type usage. (#432)export
package to metric
to match directory structure. (#432)api/distributedcontext
package to api/correlation
. (#444)api/propagators
package to api/propagation
. (#444)propagators
package into the trace
API package. (#444)Float64Gauge
, Int64Gauge
, Float64Counter
, Int64Counter
, Float64Measure
, and Int64Measure
metric methods to use value receivers instead of pointers. (#462)github.com/golangci/golangci-lint
from v1.21.0
to v1.23.6
in tools/
. (#492)InstallNewPipeline
in the stdout exporter. (#483)InstallNewPipeline
in the dogstatsd exporter. (#484)InstallNewPipeline
in the prometheus exporter. (#482)onError
based on Config
in prometheus exporter. (#486)aggregator_test.go
import package comment. (#431)precommit
target so we generate files and build the code before doing linting, so we can get much nicer errors about syntax errors from the compiler. (#442)span.kind
tag to Jaeger from the jaeger exporter. (#441)metadataSupplier
in the jaeger exporter to overwrite the header if existing instead of appending to it. (#441)runtime.Gosched
in instrument acquireHandle
logic to not block the collector. (#469)propagation
package to propagators
. (#362)B3Propagator
propagator to B3
. (#362)TextFormatPropagator
propagator to TextFormat
. (#362)BinaryPropagator
propagator to Binary
. (#362)BinaryFormatPropagator
propagator to BinaryFormat
. (#362)NoopTextFormatPropagator
propagator to NoopTextFormat
. (#362)TraceContextPropagator
propagator to TraceContext
. (#362)SpanOption
to StartOption
in the trace API. (#369)StartOptions
to StartConfig
in the trace API. (#369)EndOptions
to EndConfig
in the trace API. (#369)Number
now has a pointer receiver for its methods. (#375)CurrentSpan
to SpanFromContext
in the trace API. (#379)SetCurrentSpan
to ContextWithSpan
in the trace API. (#379)Message
in Event to Name
in the trace API. (#389)HandleImpl
to BoundInstrumentImpl
in the metric API. (#400)Float64CounterHandle
to Float64CounterBoundInstrument
in the metric API. (#400)Int64CounterHandle
to Int64CounterBoundInstrument
in the metric API. (#400)Float64GaugeHandle
to Float64GaugeBoundInstrument
in the metric API. (#400)Int64GaugeHandle
to Int64GaugeBoundInstrument
in the metric API. (#400)Float64MeasureHandle
to Float64MeasureBoundInstrument
in the metric API. (#400)Int64MeasureHandle
to Int64MeasureBoundInstrument
in the metric API. (#400)Release
method for bound instruments in the metric API to Unbind
. (#400)AcquireHandle
method for bound instruments in the metric API to Bind
. (#400)File
option in the stdout exporter to Writer
. (#404)Options
to Config
for all metric exports where this wasn't already the case.http.request
span in httptrace
package. (#397)MaxSumCount
aggregation to MinMaxSumCount
and add the Min
interface for this aggregation. (#352)GetMeter
to Meter
. (#357)HTTPTraceContextPropagator
to TraceContextPropagator
. (#355)HTTPB3Propagator
to B3Propagator
. (#355)HTTPTraceContextPropagator
to TraceContextPropagator
. (#355)/global
package to /api/global
. (#356)GetTracer
to Tracer
. (#347)SetAttribute
from the Span
interface in the trace API. (#361)AddLink
from the Span
interface in the trace API. (#349)Link
from the Span
interface in the trace API. (#349)golangci-lint
before a second run to report the remaining issues. (#360)GO111MODULE
environment variable in Makefile as Go 1.13 is the project specified minimum version and this is environment variable is not needed for that version of Go. (#359)generate
and lint
targets of the Makefile. (#354)circle-ci
target to more generic ci
in Makefile. (#354)MaxSumCount
. (#335)push_test.go
identified in #339. (#340)/usr/bin/env bash
as a shebang in scripts rather than /bin/bash
. (#336)AlwaysSample
and NeverSample
.
Previously it was testing AlwaysSample
twice. (#325)[]byte
for TraceID
to fix failing test. (#325)setAttribute
vs setAttributes
(#325)defaultkeys
batcher was only using the encoded label set as its map key while building a checkpoint.
This allowed distinct label sets through, but any metrics sharing a label set could be overwritten or merged incorrectly.
This was corrected. (#333)simplelru
map for attributes to reduce the number of allocations. (#328)This release contains a Metrics SDK with stdout exporter and supports basic aggregations such as counter, gauges, array, maxsumcount, and ddsketch.
MarshalJSON
method. (#281)WithService
, WithResources
, and WithComponent
methods of tracers. (#314)Tracer.Start()
for the Jaeger example. (#292)trace.WithAttributes
to append values instead of replacing (#315)SpanKind
back to being based on an int
type. (#288)ExportSpans
for the stackdriver exporter now handles nil
context. (#294)LoadOrStore
and the assignment rec.recorder = i.meter.exporter.AggregatorFor(rec)
. (#293)This is the first release of open-telemetry go library. It contains api and sdk for trace and meter.