* Deprecate Array attribute in favor of *Slice types * Use new attr types in Jaeger exporter * Use slice attr types in otlpmetric * Use slice attr types in otlptrace * Use slice attr types in zipkin exporter * Remove array attr test from deprectated oteltest func * Use StringSlice for cmd arg resource attr * Add changes to the changelog * Remove use of deprecated Array func
		
			
				
	
	
	
		
			104 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	Changelog
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.
Unreleased
Added
- Added ErrorHandlerFuncto use a function as an"go.opentelemetry.io/otel".ErrorHandler. (#2149)
- Added typed slice attribute types and functionality to the go.opentelemetry.io/otel/attributepackage to replace the existing array type and functions. (#2162)- BoolSlice,- IntSlice,- Int64Slice,- Float64Slice, and- StringSlicereplace the use of the- Arrayfunction in the package.
 
Changed
- Metric SDK/API implementation type InstrumentKindmoves intosdkapisub-package. (#2091)
Deprecated
- The go.opentelemetry.io/otel/bridge/opencensus/utilspackage is deprecated. All functionality from this package now exists in thego.opentelemetry.io/otel/bridge/opencensuspackage. The functions from that package should be used instead. (#2166)
- The "go.opentelemetry.io/otel/attribute".Arrayfunction and the relatedARRAYvalue type is deprecated. Use the typed*Slicefunctions and types added to the package instead. (#2162)
Removed
- Removed metrics test package go.opentelemetry.io/otel/sdk/export/metric/metrictest. (#2105)
Fixed
- The fromEnvdetector no longer throws an error whenOTEL_RESOURCE_ATTRIBUTESenvironment variable is not set or empty. (#2138)
- Setting the global ErrorHandlerwith"go.opentelemetry.io/otel".SetErrorHandlermultiple times is now supported. (#2160, #2140)
- The "go.opentelemetry.io/otel/attribute".Anyfunction now supportsint32values. (#2169)
Security
[v1.0.0-RC2] - 2021-07-26
Added
- Added WithOSDescriptionresource configuration option to set OS (Operating System) description resource attribute (os.description). (#1840)
- Added WithOSresource configuration option to set all OS (Operating System) resource attributes at once. (#1840)
- Added the WithRetryoption to thego.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttppackage. This option is a replacement for the removedWithMaxAttemptsandWithBackoffoptions. (#2095)
- Added API LinkFromContextto return Link which encapsulates SpanContext from provided context and also encapsulates attributes. (#2115)
- Added a new Linktype under the SDKotel/sdk/tracepackage that counts the number of attributes that were dropped for surpassing theAttributePerLinkCountLimitconfigured in the Span'sSpanLimits. This new type replaces the equal-named APILinktype found in theotel/tracepackage for most usages within the SDK. For example, instances of this type are now returned by theLinks()function ofReadOnlySpans provided in places like theOnEndfunction ofSpanProcessorimplementations. (#2118)
- Added the SpanRecordertype to thego.opentelemetry.io/otel/skd/trace/tracetestpackage. This type can be used with the default SDK as aSpanProcessorduring testing. (#2132)
Changed
- The SpanModelsfunction is now exported from thego.opentelemetry.io/otel/exporters/zipkinpackage to convert OpenTelemetry spans into Zipkin model spans. (#2027)
- Rename the "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc".RetrySettingstoRetryConfig. (#2095)
Deprecated
- The TextMapCarrierandTextMapPropagatorfrom thego.opentelemetry.io/otel/oteltestpackage and their associated creation functions (TextMapCarrier,NewTextMapPropagator) are deprecated. (#2114)
- The Harnesstype from thego.opentelemetry.io/otel/oteltestpackage and its associated creation function,NewHarnessare deprecated and will be removed in the next release. (#2123)
- The TraceStateFromKeyValuesfunction from thego.opentelemetry.io/otel/oteltestpackage is deprecated. Use thetrace.ParseTraceStatefunction instead. (#2122)
Removed
- Removed the deprecated package go.opentelemetry.io/otel/exporters/trace/jaeger. (#2020)
- Removed the deprecated package go.opentelemetry.io/otel/exporters/trace/zipkin. (#2020)
- Removed the "go.opentelemetry.io/otel/sdk/resource".WithBuiltinDetectorsfunction. The explicitWith*options for every built-in detector should be used instead. (#2026 #2097)
- Removed the WithMaxAttemptsandWithBackoffoptions from thego.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttppackage. The retry logic of the package has been updated to match theotlptracegrpcpackage and accordingly aWithRetryoption is added that should be used instead. (#2095)
- Removed DroppedAttributeCountfield fromotel/trace.Linkstruct. (#2118)
Fixed
- When using WithNewRoot, don't use the parent context for making sampling decisions. (#2032)
- oteltest.Tracernow creates a valid- SpanContextwhen using- WithNewRoot. (#2073)
- OS type detector now sets the correct dragonflybsdvalue for DragonFly BSD. (#2092)
- The OTel span status is correctly transformed into the OTLP status in the go.opentelemetry.io/otel/exporters/otlp/otlptracepackage. This fix will by default set the status toUnsetif it is not explicitly set toOkorError. (#2099 #2102)
- The Injectmethod for the"go.opentelemetry.io/otel/propagation".TraceContexttype no longer injects emptytracestatevalues. (#2108)
- Use 6831as default Jaeger agent port instead of6832. (#2131)
Experimental Metrics v0.22.0 - 2021-07-19
Added
- Adds HTTP support for OTLP metrics exporter. (#2022)
Removed
- Removed the deprecated package go.opentelemetry.io/otel/exporters/metric/prometheus. (#2020)
1.0.0-RC1 / 0.21.0 - 2021-06-18
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.
Added
- Adds otlpgrpc.WithRetryoption for configuring the retry policy for transient errors on the otlp/gRPC exporter. (#1832)- The following status codes are defined as transient errors:
gRPC Status Code Description 1 Cancelled 4 Deadline Exceeded 8 Resource Exhausted 10 Aborted 10 Out of Range 14 Unavailable 15 Data Loss 
 
- The following status codes are defined as transient errors:
- Added Statustype to thego.opentelemetry.io/otel/sdk/tracepackage to represent the status of a span. (#1874)
- Added SpanStubtype and its associated functions to thego.opentelemetry.io/otel/sdk/trace/tracetestpackage. This type can be used as a testing replacement for theSpanSnapshotthat was removed from thego.opentelemetry.io/otel/sdk/tracepackage. (#1873)
- Adds support for scheme in OTEL_EXPORTER_OTLP_ENDPOINTaccording to the spec. (#1886)
- Adds trace.WithSchemaURLoption for configuring the tracer with a Schema URL. (#1889)
- Added an example of using OpenTelemetry Go as a trace context forwarder. (#1912)
- ParseTraceStateis added to the- go.opentelemetry.io/otel/tracepackage. It can be used to decode a- TraceStatefrom a- tracestateheader string value. (#1937)
- Added Lenmethod to theTraceStatetype in thego.opentelemetry.io/otel/tracepackage. This method returns the number of list-members theTraceStateholds. (#1937)
- Creates package go.opentelemetry.io/otel/exporters/otlp/otlptracethat defines a trace exporter that uses aotlptrace.Clientto send data. Creates packagego.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpcimplementing a gRPCotlptrace.Clientand offers convenience functions,NewExportPipelineandInstallNewPipeline, to setup and install aotlptrace.Exporterin tracing .(#1922)
- Added Baggage,Member, andPropertytypes to thego.opentelemetry.io/otel/baggagepackage along with their related functions. (#1967)
- Added ContextWithBaggage,ContextWithoutBaggage, andFromContextfunctions to thego.opentelemetry.io/otel/baggagepackage. These functions replace theSet,Value,ContextWithValue,ContextWithoutValue, andContextWithEmptyfunctions from that package and directly work with the newBaggagetype. (#1967)
- The OTEL_SERVICE_NAMEenvironment variable is the preferred source forservice.name, used by the environment resource detector if a service name is present both there and inOTEL_RESOURCE_ATTRIBUTES. (#1969)
- Creates package go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttpimplementing an HTTPotlptrace.Clientand offers convenience functions,NewExportPipelineandInstallNewPipeline, to setup and install aotlptrace.Exporterin tracing. (#1963)
- Changes go.opentelemetry.io/otel/sdk/resource.NewWithAttributesto require a schema URL. The old function is still available asresource.NewSchemaless. This is a breaking change. (#1938)
- Several builtin resource detectors now correctly populate the schema URL. (#1938)
- Creates package go.opentelemetry.io/otel/exporters/otlp/otlpmetricthat defines a metrics exporter that uses aotlpmetric.Clientto send data.
- Creates package go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpcimplementing a gRPCotlpmetric.Clientand offers convenience functions,NewandNewUnstarted, to create anotlpmetric.Exporter.(#1991)
- Added go.opentelemetry.io/otel/exporters/stdout/stdouttraceexporter. (#2005)
- Added go.opentelemetry.io/otel/exporters/stdout/stdoutmetricexporter. (#2005)
- Added a TracerProvider()method to the"go.opentelemetry.io/otel/trace".Spaninterface. This can be used to obtain aTracerProviderfrom a given span that utilizes the same trace processing pipeline. (#2009)
Changed
- Make NewSplitDriverfromgo.opentelemetry.io/otel/exporters/otlptake variadic arguments instead of aSplitConfigitem.NewSplitDrivernow automatically implements an internalnoopDriverforSplitConfigfields that are not initialized. (#1798)
- resource.New()now creates a Resource without builtin detectors. Previous behavior is now achieved by using- WithBuiltinDetectorsOption. (#1810)
- Move the Eventtype from thego.opentelemetry.io/otelpackage to thego.opentelemetry.io/otel/sdk/tracepackage. (#1846)
- CI builds validate against last two versions of Go, dropping 1.14 and adding 1.16. (#1865)
- BatchSpanProcessor now report export failures when calling ForceFlush()method. (#1860)
- Set.Encoded(Encoder)no longer caches the result of an encoding. (#1855)
- Renamed CloudZoneKeytoCloudAvailabilityZoneKeyin Resource semantic conventions according to spec. (#1871)
- The StatusCodeandStatusMessagemethods of theReadOnlySpaninterface and theSpanproduced by thego.opentelemetry.io/otel/sdk/tracepackage have been replaced with a singleStatusmethod. This method returns the status of a span using the newStatustype. (#1874)
- Updated ExportSpansmethod of theSpanExporterinterface type to acceptReadOnlySpans instead of the removedSpanSnapshot. 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)
- Unembed SpanContextinLink. (#1877)
- Generate Semantic conventions from the specification YAML. (#1891)
- Spans created by the global Tracerobtained fromgo.opentelemetry.io/otel, prior to a functioningTracerProviderbeing set, now propagate the span context from their parent if one exists. (#1901)
- The "go.opentelemetry.io/otel".Tracerfunction now accepts tracer options. (#1902)
- Move the go.opentelemetry.io/otel/unitpackage togo.opentelemetry.io/otel/metric/unit. (#1903)
- Changed go.opentelemetry.io/otel/trace.TracerConfigto conform to the Contributing guidelines (#1921)
- Changed go.opentelemetry.io/otel/trace.SpanConfigto conform to the Contributing guidelines. (#1921)
- Changed span.End()now only accepts Options that are allowed atEnd(). (#1921)
- Changed go.opentelemetry.io/otel/metric.InstrumentConfigto conform to the Contributing guidelines. (#1921)
- Changed go.opentelemetry.io/otel/metric.MeterConfigto conform to the Contributing guidelines. (#1921)
- Refactored option types according to the contribution style guide. (#1882)
- Move the go.opentelemetry.io/otel/trace.TraceStateFromKeyValuesfunction to thego.opentelemetry.io/otel/oteltestpackage. This function is preserved for testing purposes where it may be useful to create aTraceStatefromattribute.KeyValues, but it is not intended for production use. The newParseTraceStatefunction should be used to create aTraceState. (#1931)
- Updated MarshalJSONmethod of thego.opentelemetry.io/otel/trace.TraceStatetype to marshal the type into the string representation of theTraceState. (#1931)
- The TraceState.Deletemethod from thego.opentelemetry.io/otel/tracepackage no longer returns an error in addition to aTraceState. (#1931)
- Updated Getmethod of theTraceStatetype from thego.opentelemetry.io/otel/tracepackage to accept astringinstead of anattribute.Keytype. (#1931)
- Updated Insertmethod of theTraceStatetype from thego.opentelemetry.io/otel/tracepackage to accept a pair ofstrings instead of anattribute.KeyValuetype. (#1931)
- Updated Deletemethod of theTraceStatetype from thego.opentelemetry.io/otel/tracepackage to accept astringinstead of anattribute.Keytype. (#1931)
- Renamed NewExportertoNewin thego.opentelemetry.io/otel/exporters/stdoutpackage. (#1985)
- Renamed NewExportertoNewin thego.opentelemetry.io/otel/exporters/metric/prometheuspackage. (#1985)
- Renamed NewExportertoNewin thego.opentelemetry.io/otel/exporters/trace/jaegerpackage. (#1985)
- Renamed NewExportertoNewin thego.opentelemetry.io/otel/exporters/trace/zipkinpackage. (#1985)
- Renamed NewExportertoNewin thego.opentelemetry.io/otel/exporters/otlppackage. (#1985)
- Renamed NewUnstartedExportertoNewUnstartedin thego.opentelemetry.io/otel/exporters/otlppackage. (#1985)
- The go.opentelemetry.io/otel/semconvpackage has been moved togo.opentelemetry.io/otel/semconv/v1.4.0to allow for multiple telemetry schema versions to be used concurrently. (#1987)
- Metrics test helpers in go.opentelemetry.io/otel/oteltesthave been moved togo.opentelemetry.io/otel/metric/metrictest. (#1988)
Deprecated
- The go.opentelemetry.io/otel/exporters/metric/prometheusis deprecated, usego.opentelemetry.io/otel/exporters/prometheusinstead. (#1993)
- The go.opentelemetry.io/otel/exporters/trace/jaegeris deprecated, usego.opentelemetry.io/otel/exporters/jaegerinstead. (#1993)
- The go.opentelemetry.io/otel/exporters/trace/zipkinis deprecated, usego.opentelemetry.io/otel/exporters/zipkininstead. (#1993)
Removed
- Removed resource.WithoutBuiltin(). Useresource.New(). (#1810)
- Unexported types resource.FromEnv,resource.Host, andresource.TelemetrySDK, Use the correspondingWith*()to use individually. (#1810)
- Removed the TracerandIsRecordingmethod from theReadOnlySpanin thego.opentelemetry.io/otel/sdk/trace. TheTracermethod 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. TheIsRecordingmethod 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)
- Removed the SpanSnapshottype from thego.opentelemetry.io/otel/sdk/tracepackage. The use of this type has been replaced with the use of the explicitly immutableReadOnlySpantype. When a concrete representation of a read-only span is needed for testing, the newly addedSpanStubin thego.opentelemetry.io/otel/sdk/trace/tracetestpackage should be used. (#1873)
- Removed the Tracermethod from theSpaninterface in thego.opentelemetry.io/otel/tracepackage. Using the same tracer that created a span introduces the error where an instrumentation library'sTraceris used by other code instead of their own. The"go.opentelemetry.io/otel".Tracerfunction or aTracerProvidershould be used to acquire a library specificTracerinstead. (#1900)- The TracerProvider()method on theSpaninterface may also be used to obtain aTracerProviderusing the same trace processing pipeline. (#2009)
 
- The 
- The http.urlattribute generated byHTTPClientAttributesFromHTTPRequestwill no longer include username or password information. (#1919)
- Removed IsEmptymethod of theTraceStatetype in thego.opentelemetry.io/otel/tracepackage in favor of using the addedTraceState.Lenmethod. (#1931)
- Removed Set,Value,ContextWithValue,ContextWithoutValue, andContextWithEmptyfunctions in thego.opentelemetry.io/otel/baggagepackage. Handling of baggage is now done using the addedBaggagetype and related context functions (ContextWithBaggage,ContextWithoutBaggage, andFromContext) in that package. (#1967)
- The InstallNewPipelineandNewExportPipelinecreation 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)
- The go.opentelemetry.io/otel/exporters/otlpexporter has been removed. Usego.opentelemetry.io/otel/exporters/otlp/otlptraceinstead. (#1990)
- The go.opentelemetry.io/otel/exporters/stdoutexporter has been removed. Usego.opentelemetry.io/otel/exporters/stdout/stdouttraceorgo.opentelemetry.io/otel/exporters/stdout/stdoutmetricinstead. (#2005)
Fixed
- Only report errors from the "go.opentelemetry.io/otel/sdk/resource".Environmentfunction when they are notnil. (#1850, #1851)
- The Shutdownmethod of the simpleSpanProcessorin thego.opentelemetry.io/otel/sdk/tracepackage now honors the context deadline or cancellation. (#1616, #1856)
- BatchSpanProcessor now drops span batches that failed to be exported. (#1860)
- Use http://localhost:14268/api/tracesas default Jaeger collector endpoint instead ofhttp://localhost:14250. (#1898)
- Allow trailing and leading whitespace in the parsing of a tracestateheader. (#1931)
- Add logic to determine if the channel is closed to fix Jaeger exporter test panic with close closed channel. (#1870, #1973)
- Avoid transport security when OTLP endpoint is a Unix socket. (#2001)
Security
0.20.0 - 2021-04-23
Added
- The OTLP exporter now has two new convenience functions, NewExportPipelineandInstallNewPipeline, setup and install the exporter in tracing and metrics pipelines. (#1373)
- Adds semantic conventions for exceptions. (#1492)
- Added Jaeger Environment variables: OTEL_EXPORTER_JAEGER_AGENT_HOST,OTEL_EXPORTER_JAEGER_AGENT_PORTThese environment variables can be used to override Jaeger agent hostname and port (#1752)
- Option ExportTimeoutwas added to batch span processor. (#1755)
- trace.TraceFlagsis now a defined type over- byteand- WithSampled(bool) TraceFlagsand- IsSampled() boolmethods have been added to it. (#1770)
- The EventandLinkstruct types from thego.opentelemetry.io/otelpackage now include aDroppedAttributeCountfield to record the number of attributes that were not recorded due to configured limits being reached. (#1771)
- The Jaeger exporter now reports dropped attributes for a Span event in the exported log. (#1771)
- Adds test to check BatchSpanProcessor ignores OnEndandForceFlushpostShutdown. (#1772)
- Extract resource attributes from the OTEL_RESOURCE_ATTRIBUTESenvironment variable and merge them with theresource.Defaultresource as well as resources provided to theTracerProviderand metricController. (#1785)
- Added WithOSTyperesource configuration option to set OS (Operating System) type resource attribute (os.type). (#1788)
- Added 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
 
- Adds k8s.node.nameandk8s.node.uidattribute keys to thesemconvpackage. (#1789)
- Added support for configuring OTLP/HTTP and OTLP/gRPC Endpoints, TLS Certificates, Headers, Compression and Timeout via Environment Variables. (#1758, #1769 and #1811)
- 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
 
- Adds otlpgrpc.WithTimeoutoption for configuring timeout to the otlp/gRPC exporter. (#1821)
- Adds jaeger.WithMaxPacketSizeoption for configuring maximum UDP packet size used when connecting to the Jaeger agent. (#1853)
Fixed
- The Span.IsRecordingimplementation fromgo.opentelemetry.io/otel/sdk/tracealways returns false when not being sampled. (#1750)
- The Jaeger exporter now correctly sets tags for the Span status code and message.
This means it uses the correct tag keys ("otel.status_code","otel.status_description") and does not set the status message as a tag unless it is set on the span. (#1761)
- The Jaeger exporter now correctly records Span event's names using the "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)
- Zipkin Exporter: Ensure mapping between OTel and Zipkin span data complies with the specification. (#1688)
- Fixed typo for default service name in Jaeger Exporter. (#1797)
- Fix flaky OTLP for the reconnnection of the client connection. (#1527, #1814)
- Fix Jaeger exporter dropping of span batches that exceed the UDP packet size limit. Instead, the exporter now splits the batch into smaller sendable batches. (#1828)
Changed
- Span RecordErrornow records anexceptionevent to comply with the semantic convention specification. (#1492)
- Jaeger exporter was updated to use thrift v0.14.1. (#1712)
- Migrate from using internally built and maintained version of the OTLP to the one hosted at go.opentelemetry.io/proto/otlp. (#1713)
- Migrate from using github.com/gogo/protobuftogoogle.golang.org/protobufto matchgo.opentelemetry.io/proto/otlp. (#1713)
- The storage of a local or remote Span in a context.Contextusing 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".ContextWithRemoteSpanContextwill now overwrite any existing current Span, not just existing remote Spans, and make it the current Span in acontext.Context. (#1731)
- Improve OTLP/gRPC exporter connection errors. (#1737)
- Information about a parent span context in a "go.opentelemetry.io/otel/export/trace".SpanSnapshotis unified in a newParentfield. The existingParentSpanIDandHasRemoteParentfields are removed in favor of this. (#1748)
- The ParentContextfield of the"go.opentelemetry.io/otel/sdk/trace".SamplingParametersis updated to hold acontext.Contextcontaining the parent span. This changes it to makeSamplingParametersconform with the OpenTelemetry specification. (#1749)
- Updated Jaeger Environment Variables: JAEGER_ENDPOINT,JAEGER_USER,JAEGER_PASSWORDtoOTEL_EXPORTER_JAEGER_ENDPOINT,OTEL_EXPORTER_JAEGER_USER,OTEL_EXPORTER_JAEGER_PASSWORDin compliance with OTel specification. (#1752)
- Modify BatchSpanProcessor.ForceFlushto abort after timeout/cancellation. (#1757)
- The DroppedAttributeCountfield of theSpanin thego.opentelemetry.io/otelpackage 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)
- Make ExportSpansin Jaeger Exporter honor context deadline. (#1773)
- Modify Zipkin Exporter default service name, use default resource's serviceName instead of empty. (#1777)
- The go.opentelemetry.io/otel/sdk/export/tracepackage is merged into thego.opentelemetry.io/otel/sdk/tracepackage. (#1778)
- The prometheus.InstallNewPipeline example is moved from comment to example test (#1796)
- The convenience functions for the stdout exporter have been updated to return the TracerProviderimplementation and enable the shutdown of the exporter. (#1800)
- Replace the flush function returned from the Jaeger exporter's convenience creation functions (InstallNewPipelineandNewExportPipeline) with theTracerProviderimplementation they create. This enables the caller to shutdown and flush using the relatedTracerProvidermethods. (#1822)
- Updated the Jaeger exporter to have a default endpoint, http://localhost:14250, for the collector. (#1824)
- Changed the function WithCollectorEndpointin the Jaeger exporter to no longer accept an endpoint as an argument. The endpoint can be passed with theCollectorEndpointOptionusing theWithEndpointfunction or by setting theOTEL_EXPORTER_JAEGER_ENDPOINTenvironment variable value appropriately. (#1824)
- The Jaeger exporter no longer batches exported spans itself, instead it relies on the SDK's BatchSpanProcessorfor this functionality. (#1830)
- The Jaeger exporter creation functions (NewRawExporter,NewExportPipeline, andInstallNewPipeline) no longer accept the removedOptiontype as a variadic argument. (#1830)
Removed
- Removed Jaeger Environment variables: JAEGER_SERVICE_NAME,JAEGER_DISABLED,JAEGER_TAGSThese environment variables will no longer be used to override values of the Jaeger exporter (#1752)
- No longer set the links for a Spaningo.opentelemetry.io/otel/sdk/tracethat 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)
- Setting error status while recording error with Span from oteltest package. (#1729)
- The concept of a remote and local Span stored in a context is unified to just the current Span.
Because of this "go.opentelemetry.io/otel/trace".RemoteSpanContextFromContextis removed as it is no longer needed. Instead,"go.opentelemetry.io/otel/trace".SpanContextFromContexcan be used to return the current Span. If needed, that Span'sSpanContext.IsRemote()can then be used to determine if it is remote or not. (#1731)
- The HasRemoteParentfield of the"go.opentelemetry.io/otel/sdk/trace".SamplingParametersis removed. This field is redundant to the information returned from theRemotemethod of theSpanContextheld in theParentContextfield. (#1749)
- The trace.FlagsDebugandtrace.FlagsDeferredconstants have been removed and will be localized to the B3 propagator. (#1770)
- Remove Processconfiguration,WithProcessFromEnvandProcessFromEnv, and type from the Jaeger exporter package. The information that could be configured in theProcessstruct should be configured in aResourceinstead. (#1776, #1804)
- Remove the WithDisabledoption from the Jaeger exporter. To disable the exporter unregister it from theTracerProvideror use a no-operationTracerProvider. (#1806)
- Removed the functions CollectorEndpointFromEnvandWithCollectorEndpointOptionFromEnvfrom 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)
- Removed the Jaeger exporter WithSDKOptionsOption. 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, theNewRawExporterfunction and direct setup of the SDK with the desired settings should be used. (#1825)
- The WithBufferMaxCountandWithBatchMaxCountOptions from the Jaeger exporter are removed. The exporter no longer batches exports, instead relying on the SDK'sBatchSpanProcessorfor this functionality. (#1830)
- The Jaeger exporter Optiontype 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)
0.19.0 - 2021-03-18
Added
- Added Marshalerconfig option tootlphttpto enable otlp over json or protobufs. (#1586)
- A ForceFlushmethod to the"go.opentelemetry.io/otel/sdk/trace".TracerProviderto flush all registeredSpanProcessors. (#1608)
- Added WithSamplerandWithSpanLimitsto tracer provider. (#1633, #1702)
- "go.opentelemetry.io/otel/trace".SpanContextnow has a- remoteproperty, and- IsRemote()predicate, that is true when the- SpanContexthas been extracted from remote context data. (#1701)
- A Validmethod to the"go.opentelemetry.io/otel/attribute".KeyValuetype. (#1703)
Changed
- trace.SpanContextis now immutable and has no exported fields. (#1573)- trace.NewSpanContext()can be used in conjunction with the- trace.SpanContextConfigstruct to initialize a new- SpanContextwhere all values are known.
 
- Update the ForceFlushmethod signature to the"go.opentelemetry.io/otel/sdk/trace".SpanProcessorto accept acontext.Contextand return an error. (#1608)
- Update the Shutdownmethod to the"go.opentelemetry.io/otel/sdk/trace".TracerProviderreturn an error on shutdown failure. (#1608)
- The SimpleSpanProcessor will now shut down the enclosed SpanExporterand gracefully ignore subsequent calls toOnEndafterShutdownis called. (#1612)
- "go.opentelemetry.io/sdk/metric/controller.basic".WithPusheris replaced with- WithExporterto provide consistent naming across project. (#1656)
- Added non-empty string check for trace Attributekeys. (#1659)
- Add descriptionto SpanStatus only whenStatusCodeis set to error. (#1662)
- Jaeger exporter falls back to resource.Default'sservice.nameif the exported Span does not have one. (#1673)
- Jaeger exporter populates Jaeger's Span Process from Resource. (#1673)
- Renamed the LabelSetmethod of"go.opentelemetry.io/otel/sdk/resource".ResourcetoSet. (#1692)
- Changed WithSDKtoWithSDKOptionsto accept variadic arguments ofTracerProviderOptiontype ingo.opentelemetry.io/otel/exporters/trace/jaegerpackage. (#1693)
- Changed WithSDKtoWithSDKOptionsto accept variadic arguments ofTracerProviderOptiontype ingo.opentelemetry.io/otel/exporters/trace/zipkinpackage. (#1693)
Removed
- Removed serviceNameparameter from Zipkin exporter and uses resource instead. (#1549)
- Removed WithConfigfrom tracer provider to avoid overriding configuration. (#1633)
- Removed the exported SimpleSpanProcessorandBatchSpanProcessorstructs. These are now returned as a SpanProcessor interface from their respective constructors. (#1638)
- Removed WithRecord()fromtrace.SpanOptionwhen creating a span. (#1660)
- Removed setting status to Errorwhile recording an error as a span event inRecordError. (#1663)
- Removed jaeger.WithProcessconfiguration option. (#1673)
- Removed ApplyConfigmethod from"go.opentelemetry.io/otel/sdk/trace".TracerProviderand the now unneededConfigstruct. (#1693)
Fixed
- Jaeger Exporter: Ensure mapping between OTEL and Jaeger span data complies with the specification. (#1626)
- SamplingResult.TraceStateis correctly propagated to a newly created span's- SpanContext. (#1655)
- The otel-collectorexample now correctly flushes metric events prior to shutting down the exporter. (#1678)
- Do not set span status message in SpanStatusFromHTTPStatusCodeif it can be inferred fromhttp.status_code. (#1681)
- Synchronization issues in global trace delegate implementation. (#1686)
- Reduced excess memory usage by global TracerProvider. (#1687)
0.18.0 - 2021-03-03
Added
- Added resource.Default()for use with meter and tracer providers. (#1507)
- AttributePerEventCountLimitand- AttributePerLinkCountLimitfor- SpanLimits. (#1535)
- Added Keys()method topropagation.TextMapCarrierandpropagation.HeaderCarrierto adapthttp.Headerto this interface. (#1544)
- Added codeattributes togo.opentelemetry.io/otel/semconvpackage. (#1558)
- Compatibility testing suite in the CI system for the following systems. (#1567)
OS Go Version Architecture Ubuntu 1.15 amd64 Ubuntu 1.14 amd64 Ubuntu 1.15 386 Ubuntu 1.14 386 MacOS 1.15 amd64 MacOS 1.14 amd64 Windows 1.15 amd64 Windows 1.14 amd64 Windows 1.15 386 Windows 1.14 386 
Changed
- 
Replaced interface oteltest.SpanRecorderwith its existing implementationStandardSpanRecorder. (#1542)
- 
Default span limit values to 128. (#1535) 
- 
Rename MaxEventsPerSpan,MaxAttributesPerSpanandMaxLinksPerSpantoEventCountLimit,AttributeCountLimitandLinkCountLimit, and move these fields intoSpanLimits. (#1535)
- 
Renamed the otel/labelpackage tootel/attribute. (#1541)
- 
Vendor the Jaeger exporter's dependency on Apache Thrift. (#1551) 
- 
Parallelize the CI linting and testing. (#1567) 
- 
Stagger timestamps in exact aggregator tests. (#1569) 
- 
Changed all examples to use WithBatchTimeout(5 * time.Second)rather thanWithBatchTimeout(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
Removed
- Removed attempt to resample spans upon changing the span name with span.SetName(). (#1545)
- The test-benchmarkis no longer a dependency of theprecommitmake target. (#1567)
- Removed the test-386make target. This was replaced with a full compatibility testing suite (i.e. multi OS/arch) in the CI system. (#1567)
Fixed
- The sequential timing check of timestamps in the stdout exporter are now setup explicitly to be sequential (#1571). (#1572)
- Windows build of Jaeger tests now compiles with OS specific functions (#1576). (#1577)
- The sequential timing check of timestamps of go.opentelemetry.io/otel/sdk/metric/aggregator/lastvalue are now setup explicitly to be sequential (#1578). (#1579)
- Validate tracestate header keys with vendors according to the W3C TraceContext specification (#1475). (#1581)
- The OTLP exporter includes related labels for translations of a GaugeArray (#1563). (#1570)
0.17.0 - 2021-02-12
Changed
- Rename project default branch from mastertomain. (#1505)
- Reverse order in which Resourceattributes are merged, per change in spec. (#1501)
- Add tooling to maintain "replace" directives in go.mod files automatically. (#1528)
- Create new modules: otel/metric, otel/trace, otel/oteltest, otel/sdk/export/metric, otel/sdk/metric (#1528)
- Move metric-related public global APIs from otel to otel/metric/global. (#1528)
Fixed
- Fixed otlpgrpc reconnection issue.
- The example code in the README.md of go.opentelemetry.io/otel/exporters/otlpis moved to a compiled example test and used the newWithAddressinstead ofWithEndpoint. (#1513)
- The otel-collector example now uses the default OTLP receiver port of the collector.
0.16.0 - 2021-01-13
Added
- Add the ReadOnlySpanandReadWriteSpaninterfaces to provide better control for accessing span data. (#1360)
- NewGRPCDriverfunction returns a- ProtocolDriverthat maintains a single gRPC connection to the collector. (#1369)
- Added documentation about the project's versioning policy. (#1388)
- Added NewSplitDriverfor OTLP exporter that allows sending traces and metrics to different endpoints. (#1418)
- Added codeql worfklow to GitHub Actions (#1428)
- Added Gosec workflow to GitHub Actions (#1429)
- Add new HTTP driver for OTLP exporter in exporters/otlp/otlphttp. Currently it only supports the binary protobuf payloads. (#1420)
- Add an OpenCensus exporter bridge. (#1444)
Changed
- Rename internal/testingtointernal/internaltest. (#1449)
- Rename export.SpanDatatoexport.SpanSnapshotand use it only for exporting spans. (#1360)
- Store the parent's full SpanContextrather than just its span ID in thespanstruct. (#1360)
- Improve span duration accuracy. (#1360)
- Migrated CI/CD from CircleCI to GitHub Actions (#1382)
- Remove duplicate checkout from GitHub Actions workflow (#1407)
- Metric arrayaggregator renamedexactto match itsaggregation.Kind(#1412)
- Metric exactaggregator includes per-point timestamps (#1412)
- Metric stdout exporter uses MinMaxSumCount aggregator for ValueRecorder instruments (#1412)
- NewExporterfrom- exporters/otlpnow takes a- ProtocolDriveras a parameter. (#1369)
- Many OTLP Exporter options became gRPC ProtocolDriver options. (#1369)
- Unify endpoint API that related to OTel exporter. (#1401)
- Optimize metric histogram aggregator to re-use its slice of buckets. (#1435)
- Metric aggregator Count() and histogram Bucket.Counts are consistently uint64. (1430)
- Histogram aggregator accepts functional options, uses default boundaries if none given. (#1434)
- SamplingResultnow passed a- Tracestatefrom the parent- SpanContext(#1432)
- Moved gRPC driver for OTLP exporter to exporters/otlp/otlpgrpc. (#1420)
- The TraceContextpropagator now correctly propagatesTraceStatethrough theSpanContext. (#1447)
- Metric Push and Pull Controller components are combined into a single "basic" Controller:
- WithExporter()and- Start()to configure Push behavior
- Start()is optional; use- Collect()and- ForEach()for Pull behavior
- Start()and- Stop()accept Context. (#1378)
 
- The Eventtype is moved from theotel/sdk/export/tracepackage to theotel/traceAPI package. (#1452)
Removed
- Remove errUninitializedSpanas its only usage is now obsolete. (#1360)
- Remove Metric export functionality related to quantiles and summary data points: this is not specified (#1412)
- Remove DDSketch metric aggregator; our intention is to re-introduce this as an option of the histogram aggregator after new OTLP histogram data types are released (#1412)
Fixed
- BatchSpanProcessor.Shutdown()will now shutdown underlying- export.SpanExporter. (#1443)
0.15.0 - 2020-12-10
Added
- The WithIDGeneratorTracerProviderOptionis added to thego.opentelemetry.io/otel/tracepackage to configure anIDGeneratorfor theTracerProvider. (#1363)
Changed
- The Zipkin exporter now uses the Span status code to determine. (#1328)
- NewExporterand- Startfunctions in- go.opentelemetry.io/otel/exporters/otlpnow receive- context.Contextas a first parameter. (#1357)
- Move the OpenCensus example into exampledirectory. (#1359)
- Moved the SDK's internal.IDGeneratorinterface in to thesdk/tracepackage to enable support for externally-defined ID generators. (#1363)
- Bump github.com/google/go-cmpfrom 0.5.3 to 0.5.4 (#1374)
- Bump github.com/golangci/golangci-lintin/internal/tools(#1375)
Fixed
- Metric SDK SumObserverandUpDownSumObserverinstruments correctness fixes. (#1381)
0.14.0 - 2020-11-19
Added
- An EventOptionand the relatedNewEventConfigfunction are added to thego.opentelemetry.io/otelpackage to configure Span events. (#1254)
- A TextMapPropagatorand associatedTextMapCarrierare added to thego.opentelemetry.io/otel/oteltestpackage to testTextMaptype propagators and their use. (#1259)
- SpanContextFromContextreturns- SpanContextfrom context. (#1255)
- TraceStatehas been added to- SpanContext. (#1340)
- DeploymentEnvironmentKeyadded to- go.opentelemetry.io/otel/semconvpackage. (#1323)
- Add an OpenCensus to OpenTelemetry tracing bridge. (#1305)
- Add a parent context argument to SpanProcessor.OnStartto follow the specification. (#1333)
- Add missing tests for sdk/trace/attributes_map.go. (#1337)
Changed
- Move the go.opentelemetry.io/otel/api/tracepackage intogo.opentelemetry.io/otel/tracewith the following changes. (#1229) (#1307)- IDhas been renamed to- TraceID.
- IDFromHexhas been renamed to- TraceIDFromHex.
- EmptySpanContextis removed.
 
- Move the go.opentelemetry.io/otel/api/trace/tracetestpackage intogo.opentelemetry.io/otel/oteltest. (#1229)
- OTLP Exporter updates:
- supports OTLP v0.6.0 (#1230, #1354)
- supports configurable aggregation temporality (default: Cumulative, optional: Stateless). (#1296)
 
- The Sampler is now called on local child spans. (#1233)
- The Kindtype from thego.opentelemetry.io/otel/api/metricpackage was renamed toInstrumentKindto more specifically describe what it is and avoid semantic ambiguity. (#1240)
- The MetricKindmethod of theDescriptortype in thego.opentelemetry.io/otel/api/metricpackage was renamed toDescriptor.InstrumentKind. This matches the returned type and fixes misuse of the term metric. (#1240)
- Move test harness from the go.opentelemetry.io/otel/api/apitestpackage intogo.opentelemetry.io/otel/oteltest. (#1241)
- Move the go.opentelemetry.io/otel/api/metric/metrictestpackage intogo.opentelemetry.io/oteltestas part of #964. (#1252)
- Move the go.opentelemetry.io/otel/api/metricpackage intogo.opentelemetry.io/otel/metricas part of #1303. (#1321)
- Move the go.opentelemetry.io/otel/api/metric/registrypackage intogo.opentelemetry.io/otel/metric/registryas a part of #1303. (#1316)
- Move the Numbertype (together with related functions) fromgo.opentelemetry.io/otel/api/metricpackage intogo.opentelemetry.io/otel/metric/numberas a part of #1303. (#1316)
- The function signature of the Span AddEventmethod ingo.opentelemetry.io/otelis updated to no longer take an unused context and instead take a required name and a variable number ofEventOptions. (#1254)
- The function signature of the Span RecordErrormethod ingo.opentelemetry.io/otelis updated to no longer take an unused context and instead take a required error value and a variable number ofEventOptions. (#1254)
- Move the go.opentelemetry.io/otel/api/globalpackage togo.opentelemetry.io/otel. (#1262) (#1330)
- Move the Versionfunction fromgo.opentelemetry.io/otel/sdktogo.opentelemetry.io/otel. (#1330)
- Rename correlation context header from "otcorrelations"to"baggage"to match the OpenTelemetry specification. (#1267)
- Fix Code.UnmarshalJSONto work with valid JSON only. (#1276)
- The resource.New()method changes signature to support builtin attributes and functional options, includingtelemetry.sdk.*andhost.namesemantic conventions; the former method is renamedresource.NewWithAttributes. (#1235)
- The Prometheus exporter now exports non-monotonic counters (i.e. UpDownCounters) as gauges. (#1210)
- Correct the Span.Endmethod documentation in theotelAPI to state updates are not allowed on a span after it has ended. (#1310)
- Updated span collection limits for attribute, event and link counts to 1000 (#1318)
- Renamed semconv.HTTPUrlKeytosemconv.HTTPURLKey. (#1338)
Removed
- The ErrInvalidHexID,ErrInvalidTraceIDLength,ErrInvalidSpanIDLength,ErrInvalidSpanIDLength, orErrNilSpanIDfrom thego.opentelemetry.io/otelpackage are unexported now. (#1243)
- The AddEventWithTimestampmethod on theSpaninterface ingo.opentelemetry.io/otelis removed due to its redundancy. It is replaced by using theAddEventmethod with aWithTimestampoption. (#1254)
- The MockSpanandMockTracertypes are removed fromgo.opentelemetry.io/otel/oteltest.TracerandSpanfrom the same module should be used in their place instead. (#1306)
- WorkerCountoption is removed from- go.opentelemetry.io/otel/exporters/otlp. (#1350)
- Remove the following labels types: INT32, UINT32, UINT64 and FLOAT32. (#1314)
Fixed
- Rename MergeItereratortoMergeIteratorin thego.opentelemetry.io/otel/labelpackage. (#1244)
- The go.opentelemetry.io/otel/api/globalpackages global TextMapPropagator now delegates functionality to a globally set delegate for all previously returned propagators. (#1258)
- Fix condition in label.Any. (#1299)
- Fix global TracerProviderto pass options to its configured provider. (#1329)
- Fix missing handler for ExactKindaggregator in OTLP metrics transformer (#1309)
0.13.0 - 2020-10-08
Added
- OTLP Metric exporter supports Histogram aggregation. (#1209)
- The Codestruct from thego.opentelemetry.io/otel/codespackage now supports JSON marshaling and unmarshaling as well as implements theStringerinterface. (#1214)
- A Baggage API to implement the OpenTelemetry specification. (#1217)
- Add Shutdown method to sdk/trace/provider, shutdown processors in the order they were registered. (#1227)
Changed
- Set default propagator to no-op propagator. (#1184)
- The HTTPSupplier,HTTPExtractor,HTTPInjector, andHTTPPropagatorfrom thego.opentelemetry.io/otel/api/propagationpackage were replaced with unifiedTextMapCarrierandTextMapPropagatorin thego.opentelemetry.io/otel/propagationpackage. (#1212) (#1325)
- The Newfunction from thego.opentelemetry.io/otel/api/propagationpackage was replaced withNewCompositeTextMapPropagatorin thego.opentelemetry.io/otelpackage. (#1212)
- The status codes of the go.opentelemetry.io/otel/codespackage have been updated to match the latest OpenTelemetry specification. They now areUnset,Error, andOk. They no longer track the gRPC codes. (#1214)
- The StatusCodefield of theSpanDatastruct in thego.opentelemetry.io/otel/sdk/export/tracepackage now uses the codes package from this package instead of the gRPC project. (#1214)
- Move the go.opentelemetry.io/otel/api/baggagepackage intogo.opentelemetry.io/otel/baggage. (#1217) (#1325)
- A Shutdownmethod ofSpanProcessorand all its implementations receives a context and returns an error. (#1264)
Fixed
- Copies of data from arrays and slices passed to go.opentelemetry.io/otel/label.ArrayValue()are now used in the returnedValueinstead of using the mutable data itself. (#1226)
Removed
- The ExtractHTTPandInjectHTTPfunctions from thego.opentelemetry.io/otel/api/propagationpackage were removed. (#1212)
- The Propagatorsinterface from thego.opentelemetry.io/otel/api/propagationpackage was removed to conform to the OpenTelemetry specification. The explicitTextMapPropagatortype can be used in its place as this is thePropagatortype the specification defines. (#1212)
- The SetAttributemethod of theSpanfrom thego.opentelemetry.io/otel/api/tracepackage was removed given its redundancy with theSetAttributesmethod. (#1216)
- The internal implementation of Baggage storage is removed in favor of using the new Baggage API functionality. (#1217)
- Remove duplicate hostname key HostHostNameKeyin Resource semantic conventions. (#1219)
- Nested array/slice support has been removed. (#1226)
0.12.0 - 2020-09-24
Added
- A SpanConfigurefunction ingo.opentelemetry.io/otel/api/traceto create a newSpanConfigfromSpanOptions. (#1108)
- In the go.opentelemetry.io/otel/api/tracepackage,NewTracerConfigwas added to construct newTracerConfigs. This addition was made to conform with our project option conventions. (#1155)
- Instrumentation library information was added to the Zipkin exporter. (#1119)
- The SpanProcessorinterface now has aForceFlush()method. (#1166)
- More semantic conventions for k8s as resource attributes. (#1167)
Changed
- Add reconnecting udp connection type to Jaeger exporter. This change adds a new optional implementation of the udp conn interface used to detect changes to an agent's host dns record. It then adopts the new destination address to ensure the exporter doesn't get stuck. This change was ported from jaegertracing/jaeger-client-go#520. (#1063)
- Replace StartOptionandEndOptioningo.opentelemetry.io/otel/api/tracewithSpanOption. This change is matched by replacing theStartConfigandEndConfigwith a unifiedSpanConfig. (#1108)
- Replace the LinkedTospan option ingo.opentelemetry.io/otel/api/tracewithWithLinks. 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)
- The go.opentelemetry.io/otel/api/traceTracerOptionwas changed to an interface to conform to project option conventions. (#1109)
- Move the B3andTraceContextfrom within thego.opentelemetry.io/otel/api/tracepackage to their owngo.opentelemetry.io/otel/propagatorspackage. This removal of the propagators is reflective of the OpenTelemetry specification for these propagators as well as cleans up thego.opentelemetry.io/otel/api/traceAPI. (#1118)
- Rename Jaeger tags used for instrumentation library information to reflect changes in OpenTelemetry specification. (#1119)
- Rename ProbabilitySamplertoTraceIDRatioBasedand change semantics to ignore parent span sampling status. (#1115)
- Move toolspackage underinternal. (#1141)
- Move go.opentelemetry.io/otel/api/correlationpackage togo.opentelemetry.io/otel/api/baggage. (#1142) Thecorrelation.CorrelationContextpropagator has been renamedbaggage.Baggage. Other exported functions and types are unchanged.
- Rename ParentOrElsesampler toParentBasedand allow setting samplers depending on parent span. (#1153)
- In the go.opentelemetry.io/otel/api/tracepackage,SpanConfigurewas renamed toNewSpanConfig. (#1155)
- Change dependabot.ymlto add aSkip Changeloglabel to dependabot-sourced PRs. (#1161)
- The configuration style guide has been updated to
recommend the use of newConfig()instead ofconfigure(). (#1163)
- The otlp.Configtype has been unexported and changed tootlp.config, along with its initializer. (#1163)
- Ensure exported interface types include parameter names and update the Style Guide to reflect this styling rule. (#1172)
- Don't consider unset environment variable for resource detection to be an error. (#1170)
- Rename go.opentelemetry.io/otel/api/metric.ConfigureInstrumenttoNewInstrumentConfigandgo.opentelemetry.io/otel/api/metric.ConfigureMetertoNewMeterConfig.
- ValueObserver instruments use LastValue aggregator by default. (#1165)
- OTLP Metric exporter supports LastValue aggregation. (#1165)
- Move the go.opentelemetry.io/otel/api/unitpackage togo.opentelemetry.io/otel/unit. (#1185)
- Rename ProvidertoMeterProviderin thego.opentelemetry.io/otel/api/metricpackage. (#1190)
- Rename NoopProvidertoNoopMeterProviderin thego.opentelemetry.io/otel/api/metricpackage. (#1190)
- Rename NewProvidertoNewMeterProviderin thego.opentelemetry.io/otel/api/metric/metrictestpackage. (#1190)
- Rename ProvidertoMeterProviderin thego.opentelemetry.io/otel/api/metric/registrypackage. (#1190)
- Rename NewProvidertoNewMeterProviderin thego.opentelemetry.io/otel/api/metri/registrycpackage. (#1190)
- Rename ProvidertoTracerProviderin thego.opentelemetry.io/otel/api/tracepackage. (#1190)
- Rename NoopProvidertoNoopTracerProviderin thego.opentelemetry.io/otel/api/tracepackage. (#1190)
- Rename ProvidertoTracerProviderin thego.opentelemetry.io/otel/api/trace/tracetestpackage. (#1190)
- Rename NewProvidertoNewTracerProviderin thego.opentelemetry.io/otel/api/trace/tracetestpackage. (#1190)
- Rename WrapperProvidertoWrapperTracerProviderin thego.opentelemetry.io/otel/bridge/opentracingpackage. (#1190)
- Rename NewWrapperProvidertoNewWrapperTracerProviderin thego.opentelemetry.io/otel/bridge/opentracingpackage. (#1190)
- Rename Providermethod of the pull controller toMeterProviderin thego.opentelemetry.io/otel/sdk/metric/controller/pullpackage. (#1190)
- Rename Providermethod of the push controller toMeterProviderin thego.opentelemetry.io/otel/sdk/metric/controller/pushpackage. (#1190)
- Rename ProviderOptionstoTracerProviderConfigin thego.opentelemetry.io/otel/sdk/tracepackage. (#1190)
- Rename ProviderOptiontoTracerProviderOptionin thego.opentelemetry.io/otel/sdk/tracepackage. (#1190)
- Rename ProvidertoTracerProviderin thego.opentelemetry.io/otel/sdk/tracepackage. (#1190)
- Rename NewProvidertoNewTracerProviderin thego.opentelemetry.io/otel/sdk/tracepackage. (#1190)
- Renamed SamplingDecisionvalues to comply with OpenTelemetry specification change. (#1192)
- Renamed Zipkin attribute names from ot.status_code & ot.status_descriptiontootel.status_code & otel.status_description. (#1201)
- The default SDK now invokes registered SpanProcessors in the order they were registered with theTracerProvider. (#1195)
- Add test of spans being processed by the SpanProcessors in the order they were registered. (#1203)
Removed
- Remove the B3 propagator from go.opentelemetry.io/otel/propagators. It is now located in thego.opentelemetry.io/contrib/propagators/module. (#1191)
- Remove the semantic convention for HTTP status text, HTTPStatusTextKeyfrom packagego.opentelemetry.io/otel/semconv. (#1194)
Fixed
- Zipkin example no longer mentions ParentSampler, corrected toParentBased. (#1171)
- Fix missing shutdown processor in otel-collector example. (#1186)
- Fix missing shutdown processor in basic and namedtracer examples. (#1197)
0.11.0 - 2020-08-24
Added
- Support for exporting array-valued attributes via OTLP. (#992)
- Noopand- InMemory- SpanBatcherimplementations to help with testing integrations. (#994)
- Support for filtering metric label sets. (#1047)
- A dimensionality-reducing metric Processor. (#1057)
- Integration tests for more OTel Collector Attribute types. (#1062)
- A new WithSpanProcessorProviderOptionis added to thego.opentelemetry.io/otel/sdk/tracepackage to create aProviderand automatically register theSpanProcessor. (#1078)
Changed
- Rename sdk/metric/processor/testtosdk/metric/processor/processortest. (#1049)
- Rename sdk/metric/controller/testtosdk/metric/controller/controllertest. (#1049)
- Rename api/testharnesstoapi/apitest. (#1049)
- Rename api/trace/testtracetoapi/trace/tracetest. (#1049)
- Change Metric Processor to merge multiple observations. (#1024)
- The go.opentelemetry.io/otel/bridge/opentracingbridge 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)
- Renamed go.opentelemetry.io/otel/api/standardpackage togo.opentelemetry.io/otel/semconvto avoid the ambiguous and generic namestandardand better describe the package as containing OpenTelemetry semantic conventions. (#1016)
- The environment variable used for resource detection has been changed from OTEL_RESOURCE_LABELStoOTEL_RESOURCE_ATTRIBUTES(#1042)
- Replace WithSyncerwithWithBatcherin examples. (#1044)
- Replace the google.golang.org/grpc/codesdependency in the API with an equivalentgo.opentelemetry.io/otel/codespackage. (#1046)
- Merge the go.opentelemetry.io/otel/api/labelandgo.opentelemetry.io/otel/api/kvinto the newgo.opentelemetry.io/otel/labelpackage. (#1060)
- Unify Callback Function Naming.
Rename *Callbackwith*Func. (#1061)
- CI builds validate against last two versions of Go, dropping 1.13 and adding 1.15. (#1064)
- The go.opentelemetry.io/otel/sdk/export/traceinterfacesSpanSyncerandSpanBatcherhave been replaced with a specification compliantExporterinterface. This interface still supports the export ofSpanData, but only as a slice. Implementation are also required now to return any error fromExportSpansif one occurs as well as implement aShutdownmethod for exporter clean-up. (#1078)
- The go.opentelemetry.io/otel/sdk/traceNewBatchSpanProcessorfunction no longer returns an error. If anilexporter is passed as an argument to this function, instead of it returning an error, it now returns aBatchSpanProcessorthat handles the export ofSpanDataby not taking any action. (#1078)
- The go.opentelemetry.io/otel/sdk/traceNewProviderfunction to create aProviderno longer returns an error, instead only a*Provider. This change is related toNewBatchSpanProcessornot returning an error which was the only error this function would return. (#1078)
Removed
- Duplicate, unused API sampler interface. (#999)
Use the Samplerinterface provided by the SDK instead.
- The grpctraceinstrumentation was moved to thego.opentelemetry.io/contribrepository and out of this repository. This move includes moving thegrpcexample to thego.opentelemetry.io/contribas well. (#1027)
- The WithSpanmethod of theTracerinterface. 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)
- The RegisterSpanProcessorandUnregisterSpanProcessorfunctions. These were holdovers from an approach prior to the TracerProvider design. They were not used anymore. (#1077)
- The oterrorpackage. (#1026)
- The othttpandhttptraceinstrumentations were moved togo.opentelemetry.io/contrib. (#1032)
Fixed
- The semconv.HTTPServerMetricAttributesFromHTTPRequest()function no longer generates the high-cardinalityhttp.request.content.lengthlabel. (#1031)
- Correct instrumentation version tag in Jaeger exporter. (#1037)
- The SDK span will now set an error event if the Endmethod is called during a panic (i.e. it was deferred). (#1043)
- Move internally generated protobuf code from the go.opentelemetry.io/otelto the OTLP exporter to reduce dependency overhead. (#1050)
- The otel-collectorexample referenced outdated collector processors. (#1006)
0.10.0 - 2020-07-29
This release migrates the default OpenTelemetry SDK into its own Go module, decoupling the SDK from the API and reducing dependencies for instrumentation packages.
Added
- The Zipkin exporter now has NewExportPipelineandInstallNewPipelineconstructor functions to match the common pattern. These function build a new exporter with default SDK options and register the exporter with theglobalpackage respectively. (#944)
- Add propagator option for gRPC instrumentation. (#986)
- The testtracepackage now tracks thetrace.SpanKindfor each span. (#987)
Changed
- Replace the RegisterGlobalOptionin the Jaeger exporter with anInstallNewPipelineconstructor function. This matches the other exporter constructor patterns and will register a new exporter after building it with default configuration. (#944)
- The trace (go.opentelemetry.io/otel/exporters/trace/stdout) and metric (go.opentelemetry.io/otel/exporters/metric/stdout)stdoutexporters are now merged into a single exporter atgo.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 thego.opentelemetry.io/otelmodule. (#956, #963)
- Move the go.opentelemetry.io/otel/exporters/testtest package togo.opentelemetry.io/otel/sdk/export/metric/metrictest. (#962)
- The go.opentelemetry.io/otel/api/kv/valuepackage was merged into the parentgo.opentelemetry.io/otel/api/kvpackage. (#968)- value.Boolwas replaced with- kv.BoolValue.
- value.Int64was replaced with- kv.Int64Value.
- value.Uint64was replaced with- kv.Uint64Value.
- value.Float64was replaced with- kv.Float64Value.
- value.Int32was replaced with- kv.Int32Value.
- value.Uint32was replaced with- kv.Uint32Value.
- value.Float32was replaced with- kv.Float32Value.
- value.Stringwas replaced with- kv.StringValue.
- value.Intwas replaced with- kv.IntValue.
- value.Uintwas replaced with- kv.UintValue.
- value.Arraywas replaced with- kv.ArrayValue.
 
- Rename InfertoAnyin thego.opentelemetry.io/otel/api/kvpackage. (#972)
- Change othttpto use thehttpsnooppackage to wrap theResponseWriterso that optional interfaces (http.Hijacker,http.Flusher, etc.) that are implemented by the originalResponseWriterare also implemented by the wrappedResponseWriter. (#979)
- Rename go.opentelemetry.io/otel/sdk/metric/aggregator/testpackage togo.opentelemetry.io/otel/sdk/metric/aggregator/aggregatortest. (#980)
- Make the SDK into its own Go module called go.opentelemetry.io/otel/sdk. (#985)
- Changed the default trace SamplerfromAlwaysOntoParentOrElse(AlwaysOn). (#989)
Removed
- The IndexedAttributefunction from thego.opentelemetry.io/otel/api/labelpackage was removed in favor ofIndexedLabelwhich it was synonymous with. (#970)
Fixed
- Bump github.com/golangci/golangci-lint from 1.28.3 to 1.29.0 in /tools. (#953)
- Bump github.com/google/go-cmp from 0.5.0 to 0.5.1. (#957)
- Use global.Handlefor span export errors in the OTLP exporter. (#946)
- Correct Go language formatting in the README documentation. (#961)
- Remove default SDK dependencies from the go.opentelemetry.io/otel/apipackage. (#977)
- Remove default SDK dependencies from the go.opentelemetry.io/otel/instrumentationpackage. (#983)
- Move documented examples for go.opentelemetry.io/otel/instrumentation/grpctraceinterceptors into Go example tests. (#984)
0.9.0 - 2020-07-20
Added
- A new Resource Detector interface is included to allow resources to be automatically detected and included. (#939)
- A Detector to automatically detect resources from an environment variable. (#939)
- Github action to generate protobuf Go bindings locally in internal/opentelemetry-proto-gen. (#938)
- OTLP .proto files from open-telemetry/opentelemetry-protoimported as a git submodule underinternal/opentelemetry-proto. References togithub.com/open-telemetry/opentelemetry-protochanged togo.opentelemetry.io/otel/internal/opentelemetry-proto-gen. (#942)
Changed
- Non-nil value structs for key-value pairs will be marshalled using JSON rather thanSprintf. (#948)
Removed
- Removed dependency on github.com/open-telemetry/opentelemetry-collector. (#943)
0.8.0 - 2020-07-09
Added
- The B3Encodingtype 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)
- The FlagsDeferredtrace flag to indicate if the trace sampling decision has been deferred. (#882)
- The FlagsDebugtrace flag to indicate if the trace is a debug trace. (#882)
- Add peer.servicesemantic attribute. (#898)
- Add database-specific semantic attributes. (#899)
- Add semantic convention for faas.coldstartandcontainer.id. (#909)
- Add http content size semantic conventions. (#905)
- Include http.request_content_lengthin HTTP request basic attributes. (#905)
- Add semantic conventions for operating system process resource attribute keys. (#919)
- The Jaeger exporter now has a WithBatchMaxCountoption to specify the maximum number of spans sent in a batch. (#931)
Changed
- Update CONTRIBUTING.mdto ask for updates toCHANGELOG.mdwith each pull request. (#879)
- Use lowercase header names for B3 Multiple Headers. (#881)
- The B3 propagator SingleHeaderfield has been replaced withInjectEncoding. This new field can be set to combinations of theB3Encodingbitmasks and will inject trace information in these encodings. If no encoding is set, the propagator will default toMultipleHeaderencoding. (#882)
- The B3 propagator now extracts from either HTTP encoding of B3 (Single Header or Multiple Header) based on what is contained in the header. Preference is given to Single Header encoding with Multiple Header being the fallback if Single Header is not found or is invalid. This behavior change is made to dynamically support all correctly encoded traces received instead of having to guess the expected encoding prior to receiving. (#882)
- Extend semantic conventions for RPC. (#900)
- To match constant naming conventions in the api/standardpackage, theFaaS*key names are appended with a suffix ofKey. (#920)- "api/standard".FaaSName->- FaaSNameKey
- "api/standard".FaaSID->- FaaSIDKey
- "api/standard".FaaSVersion->- FaaSVersionKey
- "api/standard".FaaSInstance->- FaaSInstanceKey
 
Removed
- The FlagsUnusedtrace flag is removed. The purpose of this flag was to act as the inverse ofFlagsSampled, the inverse ofFlagsSampledis used instead. (#882)
- The B3 header constants (B3SingleHeader,B3DebugFlagHeader,B3TraceIDHeader,B3SpanIDHeader,B3SampledHeader,B3ParentSpanIDHeader) are removed. If B3 header keys are needed the authoritative OpenZipkin package constants should be used instead. (#882)
Fixed
- The B3 Single Header name is now correctly b3instead of the previousX-B3. (#881)
- The B3 propagator now correctly supports sampling only values (b3: 0,b3: 1, orb3: d) for a Single B3 Header. (#882)
- The B3 propagator now propagates the debug flag.
This removes the behavior of changing the debug flag into a set sampling bit.
Instead, this now follow the B3 specification and omits the X-B3-Samplingheader. (#882)
- The B3 propagator now tracks "unset" sampling state (meaning "defer the decision") and does not set the X-B3-Samplingheader when injecting. (#882)
- Bump github.com/itchyny/gojq from 0.10.3 to 0.10.4 in /tools. (#883)
- Bump github.com/opentracing/opentracing-go from v1.1.1-0.20190913142402-a7454ce5950e to v1.2.0. (#885)
- The tracing time conversion for OTLP spans is now correctly set to UnixNano. (#896)
- Ensure span status is not set to Unknownwhen no HTTP status code is provided as it is assumed to be200 OK. (#908)
- Ensure httptrace.clientTracercloseshttp.headersspan. (#912)
- Prometheus exporter will not apply stale updates or forget inactive metrics. (#903)
- Add test for api.standard HTTPClientAttributesFromHTTPRequest. (#905)
- Bump github.com/golangci/golangci-lint from 1.27.0 to 1.28.1 in /tools. (#901, #913)
- Update otel-colector example to use the v0.5.0 collector. (#915)
- The grpctraceinstrumentation uses a span name conforming to the OpenTelemetry semantic conventions (does not contain a leading slash (/)). (#922)
- The grpctraceinstrumentation includes anrpc.methodattribute now set to the gRPC method name. (#900, #922)
- The grpctraceinstrumentationrpc.serviceattribute now contains the package name if one exists. This is in accordance with OpenTelemetry semantic conventions. (#922)
- Correlation Context extractor will no longer insert an empty map into the returned context when no valid values are extracted. (#923)
- Bump google.golang.org/api from 0.28.0 to 0.29.0 in /exporters/trace/jaeger. (#925)
- Bump github.com/itchyny/gojq from 0.10.4 to 0.11.0 in /tools. (#926)
- Bump github.com/golangci/golangci-lint from 1.28.1 to 1.28.2 in /tools. (#930)
0.7.0 - 2020-06-26
This release implements the v0.5.0 version of the OpenTelemetry specification.
Added
- The othttp instrumentation now includes default metrics. (#861)
- This CHANGELOG file to track all changes in the project going forward.
- Support for array type attributes. (#798)
- Apply transitive dependabot go.mod dependency updates as part of a new automatic Github workflow. (#844)
- Timestamps are now passed to exporters for each export. (#835)
- Add new Accumulationtype to metric SDK to transport telemetry fromAccumulators toProcessors. This replaces the priorRecordstructuse for this purpose. (#835)
- New dependabot integration to automate package upgrades. (#814)
- Meterand- Tracerimplementations accept instrumentation version version as an optional argument. This instrumentation version is passed on to exporters. (#811) (#805) (#802)
- The OTLP exporter includes the instrumentation version in telemetry it exports. (#811)
- Environment variables for Jaeger exporter are supported. (#796)
- New aggregation.Kindin the export metric API. (#808)
- New example that uses OTLP and the collector. (#790)
- Handle errors in the span SetNameduring span initialization. (#791)
- Default service config to enable retries for retry-able failed requests in the OTLP exporter and an option to override this default. (#777)
- New go.opentelemetry.io/otel/api/oterrorpackage to uniformly support error handling and definitions for the project. (#778)
- New globaldefault implementation of thego.opentelemetry.io/otel/api/oterror.Handlerinterface to be used to handle errors prior to an user definedHandler. There is also functionality for the user to register theirHandleras well as a convenience functionHandleto handle an error with this globalHandler(#778)
- Options to specify propagators for httptrace and grpctrace instrumentation. (#784)
- The required application/jsonheader for the Zipkin exporter is included in all exports. (#774)
- Integrate HTTP semantics helpers from the contrib repository into the api/standardpackage. #769
Changed
- Rename IntegratortoProcessorin the metric SDK. (#863)
- Rename AggregationSelectortoAggregatorSelector. (#859)
- Rename SynchronizedCopytoSynchronizedMove. (#858)
- Rename simpleintegrator tobasicintegrator. (#857)
- Merge otlp collector examples. (#841)
- Change the metric SDK to support cumulative, delta, and pass-through exporters directly. With these changes, cumulative and delta specific exporters are able to request the correct kind of aggregation from the SDK. (#840)
- The Aggregator.CheckpointAPI is renamed toSynchronizedCopyand adds an argument, a differentAggregatorinto which the copy is stored. (#812)
- The export.Aggregatorcontract is thatUpdate()andSynchronizedCopy()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 theAccumulator. Some of theAggregatorsused unnecessary locking and that has been cleaned up. (#812)
- Use of metric.Numberwas replaced byint64now that we usesync.Mutexin theMinMaxSumCountandHistogramAggregators. (#812)
- Replace AlwaysParentSamplewithParentSample(fallback)to match the OpenTelemetry v0.5.0 specification. (#810)
- Rename sdk/export/metric/aggregatortosdk/export/metric/aggregation. #808
- Send configured headers with every request in the OTLP exporter, instead of just on connection creation. (#806)
- Update error handling for any one off error handlers, replacing, instead, with the global.Handlefunction. (#791)
- Rename plugindirectory toinstrumentationto match the OpenTelemetry specification. (#779)
- Makes the argument order to Histogram and DDSketch New()consistent. (#781)
Removed
- Uint64NumberKindand related functions from the API. (#864)
- Context arguments from Aggregator.CheckpointandIntegrator.Processas they were unused. (#803)
- SpanIDis no longer included in parameters for sampling decision to match the OpenTelemetry specification. (#775)
Fixed
- Upgrade OTLP exporter to opentelemetry-proto matching the opentelemetry-collector v0.4.0 release. (#866)
- Allow changes to go.sumandgo.modwhen running dependabot tidy-up. (#871)
- Bump github.com/stretchr/testify from 1.4.0 to 1.6.1. (#824)
- Bump github.com/prometheus/client_golang from 1.7.0 to 1.7.1 in /exporters/metric/prometheus. (#867)
- Bump google.golang.org/grpc from 1.29.1 to 1.30.0 in /exporters/trace/jaeger. (#853)
- Bump google.golang.org/grpc from 1.29.1 to 1.30.0 in /exporters/trace/zipkin. (#854)
- Bumps github.com/golang/protobuf from 1.3.2 to 1.4.2 (#848)
- Bump github.com/stretchr/testify from 1.4.0 to 1.6.1 in /exporters/otlp (#817)
- Bump github.com/golangci/golangci-lint from 1.25.1 to 1.27.0 in /tools (#828)
- Bump github.com/prometheus/client_golang from 1.5.0 to 1.7.0 in /exporters/metric/prometheus (#838)
- Bump github.com/stretchr/testify from 1.4.0 to 1.6.1 in /exporters/trace/jaeger (#829)
- Bump github.com/benbjohnson/clock from 1.0.0 to 1.0.3 (#815)
- Bump github.com/stretchr/testify from 1.4.0 to 1.6.1 in /exporters/trace/zipkin (#823)
- Bump github.com/itchyny/gojq from 0.10.1 to 0.10.3 in /tools (#830)
- Bump github.com/stretchr/testify from 1.4.0 to 1.6.1 in /exporters/metric/prometheus (#822)
- Bump google.golang.org/grpc from 1.27.1 to 1.29.1 in /exporters/trace/zipkin (#820)
- Bump google.golang.org/grpc from 1.27.1 to 1.29.1 in /exporters/trace/jaeger (#831)
- Bump github.com/google/go-cmp from 0.4.0 to 0.5.0 (#836)
- Bump github.com/google/go-cmp from 0.4.0 to 0.5.0 in /exporters/trace/jaeger (#837)
- Bump github.com/google/go-cmp from 0.4.0 to 0.5.0 in /exporters/otlp (#839)
- Bump google.golang.org/api from 0.20.0 to 0.28.0 in /exporters/trace/jaeger (#843)
- Set span status from HTTP status code in the othttp instrumentation. (#832)
- Fixed typo in push controller comment. (#834)
- The Aggregatortesting has been updated and cleaned. (#812)
- metric.Number(0)expressions are replaced by- 0where possible. (#812)
- Fixed globalhandler_test.gotest failure. #804
- Fixed BatchSpanProcessor.Shutdownto wait until all spans are processed. (#766)
- Fixed OTLP example's accidental early close of exporter. (#807)
- Ensure zipkin exporter reads and closes response body. (#788)
- Update instrumentation to use api/standardkeys instead of custom keys. (#782)
- Clean up tools and RELEASING documentation. (#762)
0.6.0 - 2020-05-21
Added
- Support for Resources in the prometheus exporter. (#757)
- New pull controller. (#751)
- New UpDownSumObserverinstrument. (#750)
- OpenTelemetry collector demo. (#711)
- New SumObserverinstrument. (#747)
- New UpDownCounterinstrument. (#745)
- New timeout Optionand configuration functionWithTimeoutto the push controller. (#742)
- New api/standardspackage to implement semantic conventions and standard key-value generation. (#731)
Changed
- Rename Register*functions in the metric API toNew*for allObserverinstruments. (#761)
- Use []float64for histogram boundaries, not[]metric.Number. (#758)
- Change OTLP example to use exporter as a trace Syncerinstead of as an unneededBatcher. (#756)
- Replace WithResourceAttributes()withWithResource()in the trace SDK. (#754)
- The prometheus exporter now uses the new pull controller. (#751)
- Rename ScheduleDelayMillistoBatchTimeoutin the traceBatchSpanProcessor.(#752)
- Support use of synchronous instruments in asynchronous callbacks (#725)
- Move Resourcefrom theExportmethod parameter into the metric exportRecord. (#739)
- Rename Observerinstrument toValueObserver. (#734)
- The push controller now has a method (Provider()) to return ametric.Providerinstead of the oldMetermethod that acted as ametric.Provider. (#738)
- Replace Measureinstrument byValueRecorderinstrument. (#732)
- Rename correlation context header from "Correlation-Context"to"otcorrelations"to match the OpenTelemetry specification. (#727)
Fixed
- Ensure gRPC ClientStreamoverride methods do not panic in grpctrace package. (#755)
- Disable parts of BatchSpanProcessortest until a fix is found. (#743)
- Fix stringcase inkvInferfunction. (#746)
- Fix panic in grpctrace client interceptors. (#740)
- Refactor the api/metricspush controller and addCheckpointSetsynchronization. (#737)
- Rewrite span batch process queue batching logic. (#719)
- Remove the push controller named Meter map. (#738)
- Fix Histogram aggregator initial state (fix #735). (#736)
- Ensure golang alpine image is running golang-1.14for examples. (#733)
- Added test for grpctrace UnaryInterceptorClient. (#695)
- Rearrange api/metriccode layout. (#724)
0.5.0 - 2020-05-13
Added
- Batch Observercallback support. (#717)
- Alias apitypes to root package of project. (#696)
- Create basic othttp.Transportfor simple client instrumentation. (#678)
- SetAttribute(string, interface{})to the trace API. (#674)
- Jaeger exporter option that allows user to specify custom http client. (#671)
- Stringerand- Infermethods to- keys. (#662)
Changed
- Rename NewKeyin thekvpackage to justKey. (#721)
- Move coreandkeytokvpackage. (#720)
- Make the metric API Meterastructso the abstractMeterImplcan be passed and simplify implementation. (#709)
- Rename SDK BatchertoIntegratorto match draft OpenTelemetry SDK specification. (#710)
- Rename SDK Ungroupedintegrator tosimple.Integratorto match draft OpenTelemetry SDK specification. (#710)
- Rename SDK SDKstructtoAccumulatorto match draft OpenTelemetry SDK specification. (#710)
- Move Numberfromcoretoapi/metricpackage. (#706)
- Move SpanContextfromcoretotracepackage. (#692)
- Change traceparent header from Traceparenttotraceparentto implement the W3C specification. (#681)
Fixed
- Update tooling to run generators in all submodules. (#705)
- gRPC interceptor regexp to match methods without a service name. (#683)
- Use a constfor padding 64-bit B3 trace IDs. (#701)
- Update mockZipkinlisten address from:0to127.0.0.1:0. (#700)
- Left-pad 64-bit B3 trace IDs with zero. (#698)
- Propagate at least the first W3C tracestate header. (#694)
- Remove internal StateLockerimplementation. (#688)
- Increase instance size CI system uses. (#690)
- Add a keybenchmark and use reflection inkey.Infer(). (#679)
- Fix internal globaltest by usingglobal.MeterwithRecordBatch(). (#680)
- Reimplement histogram using mutex instead of StateLocker. (#669)
- Switch MinMaxSumCountto a mutex lock implementation instead ofStateLocker. (#667)
- Update documentation to not include any references to WithKeys. (#672)
- Correct misspelling. (#668)
- Fix clobbering of the span context if extraction fails. (#656)
- Bump golangci-lintand work around the corrupting bug. (#666) (#670)
0.4.3 - 2020-04-24
Added
- Dockerfileand- docker-compose.ymlto run example code. (#635)
- New grpctracepackage that provides gRPC client and server interceptors for both unary and stream connections. (#621)
- New api/labelpackage, providing common label set implementation. (#651)
- Support for JSON marshaling of Resources. (#654)
- TraceIDand- SpanIDimplementations for- Stringerinterface. (#642)
- RemoteAddrKeyin the othttp plugin to include the HTTP client address in top-level spans. (#627)
- WithSpanFormatteroption to the othttp plugin. (#617)
- Updated README to include section for compatible libraries and include reference to the contrib repository. (#612)
- The prometheus exporter now supports exporting histograms. (#601)
- A Stringmethod to theResourceto return a hashable identifier for a now unique resource. (#613)
- An Itermethod to theResourceto return an arrayAttributeIterator. (#613)
- An Equalmethod to theResourcetest the equivalence of resources. (#613)
- An iterable structure (AttributeIterator) forResourceattributes.
Changed
- zipkin export's NewExporternow requires aserviceNameargument to ensure this needed values is provided. (#644)
- Pass Resourcesthrough the metrics export pipeline. (#659)
Removed
- WithKeysoption from the metric API. (#639)
Fixed
- Use the label.Set.Equivalentvalue instead of an encoding in the batcher. (#658)
- Correct typo trace.Exportertotrace.SpanSyncerin comments. (#653)
- Use type names for return values in jaeger exporter. (#648)
- Increase the visibility of the api/keypackage by updating comments and fixing usages locally. (#650)
- Checkpointonly after- Update; Keep records in the- sync.Maplonger. (#647)
- Do not cache reflect.ValueOf()in metric Labels. (#649)
- Batch metrics exported from the OTLP exporter based on Resourceand labels. (#626)
- Add error wrapping to the prometheus exporter. (#631)
- Update the OTLP exporter batching of traces to use a unique stringrepresentation of an associatedResourceas the batching key. (#623)
- Update OTLP SpanDatatransform to only include theParentSpanIDif one exists. (#614)
- Update Resourceinternal representation to uniquely and reliably identify resources. (#613)
- Check return value from CheckpointSet.ForEachin prometheus exporter. (#622)
- Ensure spans created by httptrace client tracer reflect operation structure. (#618)
- Create a new recorder rather than reuse when multiple observations in same epoch for asynchronous instruments. #610
- The default port the OTLP exporter uses to connect to the OpenTelemetry collector is updated to match the one the collector listens on by default. (#611)
0.4.2 - 2020-03-31
Fixed
- Fix pre_release.shto update version insdk/opentelemetry.go. (#607)
- Fix time conversion from internal to OTLP in OTLP exporter. (#606)
0.4.1 - 2020-03-31
Fixed
- Update tag.shto create signed tags. (#604)
0.4.0 - 2020-03-30
Added
- New API package api/metric/registrythat exposes aMeterImplwrapper for use by SDKs to generate unique instruments. (#580)
- Script to verify examples after a new release. (#579)
Removed
- The dogstatsd exporter due to lack of support. This additionally removes support for statsd. (#591)
- LabelSetfrom the metric API. This is replaced by a- []core.KeyValueslice. (#595)
- Labelsfrom the metric API's- Meterinterface. (#595)
Changed
- The metric export.Labelsbecame an interface which the SDK implements and theexportpackage provides a simple, immutable implementation of this interface intended for testing purposes. (#574)
- Renamed internal/metric.MetertoMeterImpl. (#580)
- Renamed api/global/internal.obsImpltoasyncImpl. (#580)
Fixed
- Corrected missing return in mock span. (#582)
- Update License header for all source files to match CNCF guidelines and include a test to ensure it is present. (#586) (#596)
- Update to v0.3.0 of the OTLP in the OTLP exporter. (#588)
- Update pre-release script to be compatible between GNU and BSD based systems. (#592)
- Add a RecordBatchbenchmark. (#594)
- Moved span transforms of the OTLP exporter to the internal package. (#593)
- Build both go-1.13 and go-1.14 in circleci to test for all supported versions of Go. (#569)
- Removed unneeded allocation on empty labels in OLTP exporter. (#597)
- Update BatchedSpanProcessorto process the queue until no data but respect max batch size. (#599)
- Update project documentation godoc.org links to pkg.go.dev. (#602)
0.3.0 - 2020-03-21
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.
Added
- Add Observermetric instrument. (#474)
- Add global Propagatorsfunctionality to enable deferred initialization for propagators registered before the first Meter SDK is installed. (#494)
- Simplified export setup pipeline for the jaeger exporter to match other exporters. (#459)
- The zipkin trace exporter. (#495)
- The OTLP exporter to export metric and trace telemetry to the OpenTelemetry collector. (#497) (#544) (#545)
- Add StatusMessagefield to the traceSpan. (#524)
- Context propagation in OpenTracing bridge in terms of OpenTelemetry context propagation. (#525)
- The Resourcetype was added to the SDK. (#528)
- The global API now supports a TracerandMeterfunction as shortcuts to getting a global*Providerand calling these methods directly. (#538)
- The metric API now defines a generic MeterImplinterface to support general purposeMeterconstruction. Additionally,SyncImplandAsyncImplare added to support general purpose instrument construction. (#560)
- A metric Kindis added to represent theMeasureKind,ObserverKind, andCounterKind. (#560)
- Scripts to better automate the release process. (#576)
Changed
- Default to to use AlwaysSamplerinstead ofProbabilitySamplerto match OpenTelemetry specification. (#506)
- Renamed AlwaysSampleSamplertoAlwaysOnSamplerin the trace API. (#511)
- Renamed NeverSampleSamplertoAlwaysOffSamplerin the trace API. (#511)
- The Statusfield of theSpanwas changed toStatusCodeto disambiguate with the addedStatusMessage. (#524)
- Updated the trace Samplerinterface conform to the OpenTelemetry specification. (#531)
- Rename metric API OptionstoConfig. (#541)
- Rename metric Counteraggregator to beSum. (#541)
- Unify metric options into Optionfrom instrument specific options. (#541)
- The trace API's TraceProvidernow supportResources. (#545)
- Correct error in zipkin module name. (#548)
- The jaeger trace exporter now supports Resources. (#551)
- Metric SDK now supports Resources. TheWithResourceoption was added to configure aResourceon creation and theResourcemethod was added to the metricDescriptorto return the associatedResource. (#552)
- Replace ErrNoLastValueandErrEmptyDataSetbyErrNoDatain the metric SDK. (#557)
- The stdout trace exporter now supports Resources. (#558)
- The metric Descriptoris now included at the API instead of the SDK. (#560)
- Replace Orderedwith an iterator inexport.Labels. (#567)
Removed
- The vendor specific Stackdriver. It is now hosted on 3rd party vendor infrastructure. (#452)
- The Unregistermethod for metric observers as it is not in the OpenTelemetry specification. (#560)
- GetDescriptorfrom the metric SDK. (#575)
- The Gaugeinstrument from the metric API. (#537)
Fixed
- Make histogram aggregator checkpoint consistent. (#438)
- Update README with import instructions and how to build and test. (#505)
- The default label encoding was updated to be unique. (#508)
- Use NewRootin the othttp plugin for public endpoints. (#513)
- Fix data race in BatchedSpanProcessor. (#518)
- Skip test-386 for Mac OS 10.15.x (Catalina and upwards). #521
- Use a variable-size array to represent ordered labels in maps. (#523)
- Update the OTLP protobuf and update changed import path. (#532)
- Use StateLockerimplementation inMinMaxSumCount. (#546)
- Eliminate goroutine leak in histogram stress test. (#547)
- Update OTLP exporter with latest protobuf. (#550)
- Add filters to the othttp plugin. (#556)
- Provide an implementation of the Header*filters that do not depend on Go 1.14. (#565)
- Encode labels once during checkpoint. The checkpoint function is executed in a single thread so we can do the encoding lazily before passing the encoded version of labels to the exporter. This is a cheap and quick way to avoid encoding the labels on every collection interval. (#572)
- Run coverage over all packages in COVERAGE_MOD_DIR. (#573)
0.2.3 - 2020-03-04
Added
- RecordErrormethod on- Spans in the trace API to Simplify adding error events to spans. (#473)
- Configurable push frequency for exporters setup pipeline. (#504)
Changed
- Rename the exporterdirectory toexporters. Thego.opentelemetry.io/otel/exporter/trace/jaegerpackage was mistakenly released with av1.0.0tag instead ofv0.1.0. This resulted in all subsequent releases not becoming the default latest. A consequence of this was that allgo gets pulled in the incompatiblev0.1.0release of that package when pulling in more recent packages from other otel packages. Renaming theexporterdirectory toexportersfixes this issue by renaming the package and therefore clearing any existing dependency tags. Consequentially, this action also renames all exporter packages. (#502)
Removed
- The CorrelationContextHeaderconstant in thecorrelationpackage is no longer exported. (#503)
0.2.2 - 2020-02-27
Added
- HTTPSupplierinterface in the propagation API to specify methods to retrieve and store a single value for a key to be associated with a carrier. (#467)
- HTTPExtractorinterface in the propagation API to extract information from an- HTTPSupplierinto a context. (#467)
- HTTPInjectorinterface in the propagation API to inject information into an- HTTPSupplier.(#467)
- Configand configuring- Optionto the propagator API. (#467)
- Propagatorsinterface in the propagation API to contain the set of injectors and extractors for all supported carrier formats. (#467)
- HTTPPropagatorinterface in the propagation API to inject and extract from an- HTTPSupplier.(#467)
- WithInjectorsand- WithExtractorsfunctions to the propagator API to configure injectors and extractors to use. (#467)
- ExtractHTTPand- InjectHTTPfunctions to apply configured HTTP extractors and injectors to a passed context. (#467)
- Histogram aggregator. (#433)
- DefaultPropagatorfunction and have it return- trace.TraceContextas the default context propagator. (#456)
- AlwaysParentSamplesampler to the trace API. (#455)
- WithNewRootoption function to the trace API to specify the created span should be considered a root span. (#451)
Changed
- Renamed WithMaptoContextWithMapin the correlation package. (#481)
- Renamed FromContexttoMapFromContextin the correlation package. (#481)
- Move correlation context propagation to correlation package. (#479)
- Do not default to putting remote span context into links. (#480)
- Tracer.WithSpanupdated to accept- StartOptions. (#472)
- Renamed MetricKindtoKindto not stutter in the type usage. (#432)
- Renamed the exportpackage tometricto match directory structure. (#432)
- Rename the api/distributedcontextpackage toapi/correlation. (#444)
- Rename the api/propagatorspackage toapi/propagation. (#444)
- Move the propagators from the propagatorspackage into thetraceAPI package. (#444)
- Update Float64Gauge,Int64Gauge,Float64Counter,Int64Counter,Float64Measure, andInt64Measuremetric methods to use value receivers instead of pointers. (#462)
- Moved all dependencies of tools package to a tools directory. (#466)
Removed
- Binary propagators. (#467)
- NOOP propagator. (#467)
Fixed
- Upgraded github.com/golangci/golangci-lintfromv1.21.0tov1.23.6intools/. (#492)
- Fix a possible nil-dereference crash (#478)
- Correct comments for InstallNewPipelinein the stdout exporter. (#483)
- Correct comments for InstallNewPipelinein the dogstatsd exporter. (#484)
- Correct comments for InstallNewPipelinein the prometheus exporter. (#482)
- Initialize onErrorbased onConfigin prometheus exporter. (#486)
- Correct module name in prometheus exporter README. (#475)
- Removed tracer name prefix from span names. (#430)
- Fix aggregator_test.goimport package comment. (#431)
- Improved detail in stdout exporter. (#436)
- Fix a dependency issue (generate target should depend on stringer, not lint target) in Makefile. (#442)
- Reorders the Makefile targets within precommittarget 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)
- Reword function documentation in gRPC plugin. (#446)
- Send the span.kindtag to Jaeger from the jaeger exporter. (#441)
- Fix metadataSupplierin the jaeger exporter to overwrite the header if existing instead of appending to it. (#441)
- Upgraded to Go 1.13 in CI. (#465)
- Correct opentelemetry.io URL in trace SDK documentation. (#464)
- Refactored reference counting logic in SDK determination of stale records. (#468)
- Add call to runtime.Goschedin instrumentacquireHandlelogic to not block the collector. (#469)
0.2.1.1 - 2020-01-13
Fixed
- Use stateful batcher on Prometheus exporter fixing regresion introduced in #395. (#428)
0.2.1 - 2020-01-08
Added
- Global meter forwarding implementation. This enables deferred initialization for metric instruments registered before the first Meter SDK is installed. (#392)
- Global trace forwarding implementation. This enables deferred initialization for tracers registered before the first Trace SDK is installed. (#406)
- Standardize export pipeline creation in all exporters. (#395)
- A testing, organization, and comments for 64-bit field alignment. (#418)
- Script to tag all modules in the project. (#414)
Changed
- Renamed propagationpackage topropagators. (#362)
- Renamed B3Propagatorpropagator toB3. (#362)
- Renamed TextFormatPropagatorpropagator toTextFormat. (#362)
- Renamed BinaryPropagatorpropagator toBinary. (#362)
- Renamed BinaryFormatPropagatorpropagator toBinaryFormat. (#362)
- Renamed NoopTextFormatPropagatorpropagator toNoopTextFormat. (#362)
- Renamed TraceContextPropagatorpropagator toTraceContext. (#362)
- Renamed SpanOptiontoStartOptionin the trace API. (#369)
- Renamed StartOptionstoStartConfigin the trace API. (#369)
- Renamed EndOptionstoEndConfigin the trace API. (#369)
- Numbernow has a pointer receiver for its methods. (#375)
- Renamed CurrentSpantoSpanFromContextin the trace API. (#379)
- Renamed SetCurrentSpantoContextWithSpanin the trace API. (#379)
- Renamed Messagein Event toNamein the trace API. (#389)
- Prometheus exporter no longer aggregates metrics, instead it only exports them. (#385)
- Renamed HandleImpltoBoundInstrumentImplin the metric API. (#400)
- Renamed Float64CounterHandletoFloat64CounterBoundInstrumentin the metric API. (#400)
- Renamed Int64CounterHandletoInt64CounterBoundInstrumentin the metric API. (#400)
- Renamed Float64GaugeHandletoFloat64GaugeBoundInstrumentin the metric API. (#400)
- Renamed Int64GaugeHandletoInt64GaugeBoundInstrumentin the metric API. (#400)
- Renamed Float64MeasureHandletoFloat64MeasureBoundInstrumentin the metric API. (#400)
- Renamed Int64MeasureHandletoInt64MeasureBoundInstrumentin the metric API. (#400)
- Renamed Releasemethod for bound instruments in the metric API toUnbind. (#400)
- Renamed AcquireHandlemethod for bound instruments in the metric API toBind. (#400)
- Renamed the Fileoption in the stdout exporter toWriter. (#404)
- Renamed all OptionstoConfigfor all metric exports where this wasn't already the case.
Fixed
- Aggregator import path corrected. (#421)
- Correct links in README. (#368)
- The README was updated to match latest code changes in its examples. (#374)
- Don't capitalize error statements. (#375)
- Fix ignored errors. (#375)
- Fix ambiguous variable naming. (#375)
- Removed unnecessary type casting. (#375)
- Use named parameters. (#375)
- Updated release schedule. (#378)
- Correct http-stackdriver example module name. (#394)
- Removed the http.requestspan inhttptracepackage. (#397)
- Add comments in the metrics SDK (#399)
- Initialize checkpoint when creating ddsketch aggregator to prevent panic when merging into a empty one. (#402) (#403)
- Add documentation of compatible exporters in the README. (#405)
- Typo fix. (#408)
- Simplify span check logic in SDK tracer implementation. (#419)
0.2.0 - 2019-12-03
Added
- Unary gRPC tracing example. (#351)
- Prometheus exporter. (#334)
- Dogstatsd metrics exporter. (#326)
Changed
- Rename MaxSumCountaggregation toMinMaxSumCountand add theMininterface for this aggregation. (#352)
- Rename GetMetertoMeter. (#357)
- Rename HTTPTraceContextPropagatortoTraceContextPropagator. (#355)
- Rename HTTPB3PropagatortoB3Propagator. (#355)
- Rename HTTPTraceContextPropagatortoTraceContextPropagator. (#355)
- Move /globalpackage to/api/global. (#356)
- Rename GetTracertoTracer. (#347)
Removed
- SetAttributefrom the- Spaninterface in the trace API. (#361)
- AddLinkfrom the- Spaninterface in the trace API. (#349)
- Linkfrom the- Spaninterface in the trace API. (#349)
Fixed
- Exclude example directories from coverage report. (#365)
- Lint make target now implements automatic fixes with golangci-lintbefore a second run to report the remaining issues. (#360)
- Drop GO111MODULEenvironment 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)
- Run the race checker for all test. (#354)
- Redundant commands in the Makefile are removed. (#354)
- Split the generateandlinttargets of the Makefile. (#354)
- Renames circle-citarget to more genericciin Makefile. (#354)
- Add example Prometheus binary to gitignore. (#358)
- Support negative numbers with the MaxSumCount. (#335)
- Resolve race conditions in push_test.goidentified in #339. (#340)
- Use /usr/bin/env bashas a shebang in scripts rather than/bin/bash. (#336)
- Trace benchmark now tests both AlwaysSampleandNeverSample. Previously it was testingAlwaysSampletwice. (#325)
- Trace benchmark now uses a []byteforTraceIDto fix failing test. (#325)
- Added a trace benchmark to test variadic functions in setAttributevssetAttributes(#325)
- The defaultkeysbatcher 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)
0.1.2 - 2019-11-18
Fixed
- Optimized the simplelrumap for attributes to reduce the number of allocations. (#328)
- Removed unnecessary unslicing of parameters that are already a slice. (#324)
0.1.1 - 2019-11-18
This release contains a Metrics SDK with stdout exporter and supports basic aggregations such as counter, gauges, array, maxsumcount, and ddsketch.
Added
- Metrics stdout export pipeline. (#265)
- Array aggregation for raw measure metrics. (#282)
- The core.Value now have a MarshalJSONmethod. (#281)
Removed
- WithService,- WithResources, and- WithComponentmethods of tracers. (#314)
- Prefix slash in Tracer.Start()for the Jaeger example. (#292)
Changed
- Allocation in LabelSet construction to reduce GC overhead. (#318)
- trace.WithAttributesto append values instead of replacing (#315)
- Use a formula for tolerance in sampling tests. (#298)
- Move export types into trace and metric-specific sub-directories. (#289)
- SpanKindback to being based on an- inttype. (#288)
Fixed
- URL to OpenTelemetry website in README. (#323)
- Name of othttp default tracer. (#321)
- ExportSpansfor the stackdriver exporter now handles- nilcontext. (#294)
- CI modules cache to correctly restore/save from/to the cache. (#316)
- Fix metric SDK race condition between LoadOrStoreand the assignmentrec.recorder = i.meter.exporter.AggregatorFor(rec). (#293)
- README now reflects the new code structure introduced with these changes. (#291)
- Make the basic example work. (#279)
0.1.0 - 2019-11-04
This is the first release of open-telemetry go library. It contains api and sdk for trace and meter.
Added
- Initial OpenTelemetry trace and metric API prototypes.
- Initial OpenTelemetry trace, metric, and export SDK packages.
- A wireframe bridge to support compatibility with OpenTracing.
- Example code for a basic, http-stackdriver, http, jaeger, and named tracer setup.
- Exporters for Jaeger, Stackdriver, and stdout.
- Propagators for binary, B3, and trace-context protocols.
- Project information and guidelines in the form of a README and CONTRIBUTING.
- Tools to build the project and a Makefile to automate the process.
- Apache-2.0 license.
- CircleCI build CI manifest files.
- CODEOWNERS file to track owners of this project.