102 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
Changed
Deprecated
Removed
- Removed metrics test package
go.opentelemetry.io/otel/sdk/export/metric/metrictest. (#2105)
Fixed
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)
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) - Rename the
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp".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 validSpanContextwhen usingWithNewRoot. (#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)
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 thego.opentelemetry.io/otel/tracepackage. It can be used to decode aTraceStatefrom atracestateheader 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 usingWithBuiltinDetectorsOption. (#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 overbyteandWithSampled(bool) TraceFlagsandIsSampled() 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.pidprocess.executable.nameprocess.executable.pathprocess.command_argsprocess.ownerprocess.runtime.nameprocess.runtime.versionprocess.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_ENDPOINTOTEL_EXPORTER_OTLP_TRACES_ENDPOINTOTEL_EXPORTER_OTLP_METRICS_ENDPOINTOTEL_EXPORTER_OTLP_HEADERSOTEL_EXPORTER_OTLP_TRACES_HEADERSOTEL_EXPORTER_OTLP_METRICS_HEADERSOTEL_EXPORTER_OTLP_COMPRESSIONOTEL_EXPORTER_OTLP_TRACES_COMPRESSIONOTEL_EXPORTER_OTLP_METRICS_COMPRESSIONOTEL_EXPORTER_OTLP_TIMEOUTOTEL_EXPORTER_OTLP_TRACES_TIMEOUTOTEL_EXPORTER_OTLP_METRICS_TIMEOUTOTEL_EXPORTER_OTLP_CERTIFICATEOTEL_EXPORTER_OTLP_TRACES_CERTIFICATEOTEL_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 aremoteproperty, andIsRemote()predicate, that is true when theSpanContexthas 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 thetrace.SpanContextConfigstruct to initialize a newSpanContextwhere 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 withWithExporterto 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'sSpanContext. (#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) AttributePerEventCountLimitandAttributePerLinkCountLimitforSpanLimits. (#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 aProtocolDriverthat 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)
NewExporterfromexporters/otlpnow takes aProtocolDriveras 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 aTracestatefrom the parentSpanContext(#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()andStart()to configure Push behaviorStart()is optional; useCollect()andForEach()for Pull behaviorStart()andStop()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 underlyingexport.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)
NewExporterandStartfunctions ingo.opentelemetry.io/otel/exporters/otlpnow receivecontext.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) SpanContextFromContextreturnsSpanContextfrom context. (#1255)TraceStatehas been added toSpanContext. (#1340)DeploymentEnvironmentKeyadded togo.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 toTraceID.IDFromHexhas been renamed toTraceIDFromHex.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 fromgo.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)
NoopandInMemorySpanBatcherimplementations 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 withkv.BoolValue.value.Int64was replaced withkv.Int64Value.value.Uint64was replaced withkv.Uint64Value.value.Float64was replaced withkv.Float64Value.value.Int32was replaced withkv.Int32Value.value.Uint32was replaced withkv.Uint32Value.value.Float32was replaced withkv.Float32Value.value.Stringwas replaced withkv.StringValue.value.Intwas replaced withkv.IntValue.value.Uintwas replaced withkv.UintValue.value.Arraywas replaced withkv.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)
MeterandTracerimplementations 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 by0where 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)
StringerandInfermethods tokeys. (#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
Dockerfileanddocker-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) TraceIDandSpanIDimplementations forStringerinterface. (#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 afterUpdate; Keep records in thesync.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'sMeterinterface. (#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 onSpans 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 anHTTPSupplierinto a context. (#467)HTTPInjectorinterface in the propagation API to inject information into anHTTPSupplier.(#467)Configand configuringOptionto 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 anHTTPSupplier.(#467)WithInjectorsandWithExtractorsfunctions to the propagator API to configure injectors and extractors to use. (#467)ExtractHTTPandInjectHTTPfunctions to apply configured HTTP extractors and injectors to a passed context. (#467)- Histogram aggregator. (#433)
DefaultPropagatorfunction and have it returntrace.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 acceptStartOptions. (#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 theSpaninterface in the trace API. (#361)AddLinkfrom theSpaninterface in the trace API. (#349)Linkfrom theSpaninterface 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, andWithComponentmethods 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 aninttype. (#288)
Fixed
- URL to OpenTelemetry website in README. (#323)
- Name of othttp default tracer. (#321)
ExportSpansfor the stackdriver exporter now handlesnilcontext. (#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.