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.
- A
SpanConfigure
function ingo.opentelemetry.io/otel/api/trace
to create a newSpanConfig
fromSpanOption
s. (#1108) - In the
go.opentelemetry.io/otel/api/trace
package,NewTracerConfig
was added to construct newTracerConfig
s. This addition was made to conform with our project option conventions. (#1155) - Instrumentation library information was added to the Zipkin exporter. (#1119)
- The
SpanProcessor
interface now has aForceFlush()
method. (#1166) - More semantic conventions for k8s as resource attributes. (#1167)
- 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
StartOption
andEndOption
ingo.opentelemetry.io/otel/api/trace
withSpanOption
. This change is matched by replacing theStartConfig
andEndConfig
with a unifiedSpanConfig
. (#1108) - Replace the
LinkedTo
span option ingo.opentelemetry.io/otel/api/trace
withWithLinks
. 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/trace
TracerOption
was changed to an interface to conform to project option conventions. (#1109) - Move the
B3
andTraceContext
from within thego.opentelemetry.io/otel/api/trace
package to their owngo.opentelemetry.io/otel/propagators
package. This removal of the propagators is reflective of the OpenTelemetry specification for these propagators as well as cleans up thego.opentelemetry.io/otel/api/trace
API. (#1118) - Rename Jaeger tags used for instrumentation library information to reflect changes in OpenTelemetry specification. (#1119)
- Rename
ProbabilitySampler
toTraceIDRatioBased
and change semantics to ignore parent span sampling status. (#1115) - Move
tools
package underinternal
. (#1141) - Move
go.opentelemetry.io/otel/api/correlation
package togo.opentelemetry.io/otel/api/baggage
. (#1142) Thecorrelation.CorrelationContext
propagator has been renamedbaggage.Baggage
. Other exported functions and types are unchanged. - Rename
ParentOrElse
sampler toParentBased
and allow setting samplers depending on parent span. (#1153) - In the
go.opentelemetry.io/otel/api/trace
package,SpanConfigure
was renamed toNewSpanConfig
. (#1155) - Change
dependabot.yml
to add aSkip Changelog
label to dependabot-sourced PRs. (#1161) - The configuration style guide has been updated to
recommend the use of
newConfig()
instead ofconfigure()
. (#1163) - The
otlp.Config
type 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.ConfigureInstrument
toNewInstrumentConfig
andgo.opentelemetry.io/otel/api/metric.ConfigureMeter
toNewMeterConfig
. - Move the
go.opentelemetry.io/otel/api/unit
package togo.opentelemetry.io/otel/unit
. (#1185) - Renamed
SamplingDecision
values to comply with OpenTelemetry specification change. (#1192)
- Remove the B3 propagator from
go.opentelemetry.io/otel/propagators
. It is now located in thego.opentelemetry.io/contrib/propagators/
module. (#1191)
- Zipkin example no longer mentions
ParentSampler
, corrected toParentBased
. (#1171) - Fix missing shutdown processor in otel-collector example. (#1186)
0.11.0 - 2020-08-24
- Support for exporting array-valued attributes via OTLP. (#992)
Noop
andInMemory
SpanBatcher
implementations 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
WithSpanProcessor
ProviderOption
is added to thego.opentelemetry.io/otel/sdk/trace
package to create aProvider
and automatically register theSpanProcessor
. (#1078)
- Rename
sdk/metric/processor/test
tosdk/metric/processor/processortest
. (#1049) - Rename
sdk/metric/controller/test
tosdk/metric/controller/controllertest
. (#1049) - Rename
api/testharness
toapi/apitest
. (#1049) - Rename
api/trace/testtrace
toapi/trace/tracetest
. (#1049) - Change Metric Processor to merge multiple observations. (#1024)
- The
go.opentelemetry.io/otel/bridge/opentracing
bridge package has been made into its own module. This removes the package dependencies of this bridge from the rest of the OpenTelemetry based project. (#1038) - Renamed
go.opentelemetry.io/otel/api/standard
package togo.opentelemetry.io/otel/semconv
to avoid the ambiguous and generic namestandard
and better describe the package as containing OpenTelemetry semantic conventions. (#1016) - The environment variable used for resource detection has been changed from
OTEL_RESOURCE_LABELS
toOTEL_RESOURCE_ATTRIBUTES
(#1042) - Replace
WithSyncer
withWithBatcher
in examples. (#1044) - Replace the
google.golang.org/grpc/codes
dependency in the API with an equivalentgo.opentelemetry.io/otel/codes
package. (#1046) - Merge the
go.opentelemetry.io/otel/api/label
andgo.opentelemetry.io/otel/api/kv
into the newgo.opentelemetry.io/otel/label
package. (#1060) - Unify Callback Function Naming.
Rename
*Callback
with*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/trace
interfacesSpanSyncer
andSpanBatcher
have been replaced with a specification compliantExporter
interface. This interface still supports the export ofSpanData
, but only as a slice. Implementation are also required now to return any error fromExportSpans
if one occurs as well as implement aShutdown
method for exporter clean-up. (#1078) - The
go.opentelemetry.io/otel/sdk/trace
NewBatchSpanProcessor
function no longer returns an error. If anil
exporter is passed as an argument to this function, instead of it returning an error, it now returns aBatchSpanProcessor
that handles the export ofSpanData
by not taking any action. (#1078) - The
go.opentelemetry.io/otel/sdk/trace
NewProvider
function to create aProvider
no longer returns an error, instead only a*Provider
. This change is related toNewBatchSpanProcessor
not returning an error which was the only error this function would return. (#1078)
- Duplicate, unused API sampler interface. (#999)
Use the
Sampler
interface provided by the SDK instead. - The
grpctrace
instrumentation was moved to thego.opentelemetry.io/contrib
repository and out of this repository. This move includes moving thegrpc
example to thego.opentelemetry.io/contrib
as well. (#1027) - The
WithSpan
method of theTracer
interface. The functionality this method provided was limited compared to what a user can provide themselves. It was removed with the understanding that if there is sufficient user need it can be added back based on actual user usage. (#1043) - The
RegisterSpanProcessor
andUnregisterSpanProcessor
functions. These were holdovers from an approach prior to the TracerProvider design. They were not used anymore. (#1077) - The
oterror
package. (#1026) - The
othttp
andhttptrace
instrumentations were moved togo.opentelemetry.io/contrib
. (#1032)
- The
semconv.HTTPServerMetricAttributesFromHTTPRequest()
function no longer generates the high-cardinalityhttp.request.content.length
label. (#1031) - Correct instrumentation version tag in Jaeger exporter. (#1037)
- The SDK span will now set an error event if the
End
method is called during a panic (i.e. it was deferred). (#1043) - Move internally generated protobuf code from the
go.opentelemetry.io/otel
to the OTLP exporter to reduce dependency overhead. (#1050) - The
otel-collector
example 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.
- The Zipkin exporter now has
NewExportPipeline
andInstallNewPipeline
constructor functions to match the common pattern. These function build a new exporter with default SDK options and register the exporter with theglobal
package respectively. (#944) - Add propagator option for gRPC instrumentation. (#986)
- The
testtrace
package now tracks thetrace.SpanKind
for each span. (#987)
- Replace the
RegisterGlobal
Option
in the Jaeger exporter with anInstallNewPipeline
constructor 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
)stdout
exporters 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/otel
module. (#956, #963) - Move the
go.opentelemetry.io/otel/exporters/test
test package togo.opentelemetry.io/otel/sdk/export/metric/metrictest
. (#962) - The
go.opentelemetry.io/otel/api/kv/value
package was merged into the parentgo.opentelemetry.io/otel/api/kv
package. (#968)value.Bool
was replaced withkv.BoolValue
.value.Int64
was replaced withkv.Int64Value
.value.Uint64
was replaced withkv.Uint64Value
.value.Float64
was replaced withkv.Float64Value
.value.Int32
was replaced withkv.Int32Value
.value.Uint32
was replaced withkv.Uint32Value
.value.Float32
was replaced withkv.Float32Value
.value.String
was replaced withkv.StringValue
.value.Int
was replaced withkv.IntValue
.value.Uint
was replaced withkv.UintValue
.value.Array
was replaced withkv.ArrayValue
.
- Rename
Infer
toAny
in thego.opentelemetry.io/otel/api/kv
package. (#972) - Change
othttp
to use thehttpsnoop
package to wrap theResponseWriter
so that optional interfaces (http.Hijacker
,http.Flusher
, etc.) that are implemented by the originalResponseWriter
are also implemented by the wrappedResponseWriter
. (#979) - Rename
go.opentelemetry.io/otel/sdk/metric/aggregator/test
package 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
Sampler
fromAlwaysOn
toParentOrElse(AlwaysOn)
. (#989)
- The
IndexedAttribute
function from thego.opentelemetry.io/otel/api/label
package was removed in favor ofIndexedLabel
which it was synonymous with. (#970)
- 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.Handle
for 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/api
package. (#977) - Remove default SDK dependencies from the
go.opentelemetry.io/otel/instrumentation
package. (#983) - Move documented examples for
go.opentelemetry.io/otel/instrumentation/grpctrace
interceptors into Go example tests. (#984)
0.9.0 - 2020-07-20
- 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-proto
imported as a git submodule underinternal/opentelemetry-proto
. References togithub.com/open-telemetry/opentelemetry-proto
changed togo.opentelemetry.io/otel/internal/opentelemetry-proto-gen
. (#942)
- Non-nil value
struct
s for key-value pairs will be marshalled using JSON rather thanSprintf
. (#948)
- Removed dependency on
github.com/open-telemetry/opentelemetry-collector
. (#943)
0.8.0 - 2020-07-09
- The
B3Encoding
type to represent the B3 encoding(s) the B3 propagator can inject. A value for HTTP supported encodings (Multiple Header:MultipleHeader
, Single Header:SingleHeader
) are included. (#882) - The
FlagsDeferred
trace flag to indicate if the trace sampling decision has been deferred. (#882) - The
FlagsDebug
trace flag to indicate if the trace is a debug trace. (#882) - Add
peer.service
semantic attribute. (#898) - Add database-specific semantic attributes. (#899)
- Add semantic convention for
faas.coldstart
andcontainer.id
. (#909) - Add http content size semantic conventions. (#905)
- Include
http.request_content_length
in HTTP request basic attributes. (#905) - Add semantic conventions for operating system process resource attribute keys. (#919)
- The Jaeger exporter now has a
WithBatchMaxCount
option to specify the maximum number of spans sent in a batch. (#931)
- Update
CONTRIBUTING.md
to ask for updates toCHANGELOG.md
with each pull request. (#879) - Use lowercase header names for B3 Multiple Headers. (#881)
- The B3 propagator
SingleHeader
field has been replaced withInjectEncoding
. This new field can be set to combinations of theB3Encoding
bitmasks and will inject trace information in these encodings. If no encoding is set, the propagator will default toMultipleHeader
encoding. (#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/standard
package, 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
- The
FlagsUnused
trace flag is removed. The purpose of this flag was to act as the inverse ofFlagsSampled
, the inverse ofFlagsSampled
is 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)
- The B3 Single Header name is now correctly
b3
instead 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-Sampling
header. (#882) - The B3 propagator now tracks "unset" sampling state (meaning "defer the decision") and does not set the
X-B3-Sampling
header 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
Unknown
when no HTTP status code is provided as it is assumed to be200 OK
. (#908) - Ensure
httptrace.clientTracer
closeshttp.headers
span. (#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
grpctrace
instrumentation uses a span name conforming to the OpenTelemetry semantic conventions (does not contain a leading slash (/
)). (#922) - The
grpctrace
instrumentation includes anrpc.method
attribute now set to the gRPC method name. (#900, #922) - The
grpctrace
instrumentationrpc.service
attribute 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.
- 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
Accumulation
type to metric SDK to transport telemetry fromAccumulator
s toProcessor
s. This replaces the priorRecord
struct
use for this purpose. (#835) - New dependabot integration to automate package upgrades. (#814)
Meter
andTracer
implementations 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.Kind
in the export metric API. (#808) - New example that uses OTLP and the collector. (#790)
- Handle errors in the span
SetName
during 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/oterror
package to uniformly support error handling and definitions for the project. (#778) - New
global
default implementation of thego.opentelemetry.io/otel/api/oterror.Handler
interface to be used to handle errors prior to an user definedHandler
. There is also functionality for the user to register theirHandler
as well as a convenience functionHandle
to handle an error with this globalHandler
(#778) - Options to specify propagators for httptrace and grpctrace instrumentation. (#784)
- The required
application/json
header for the Zipkin exporter is included in all exports. (#774) - Integrate HTTP semantics helpers from the contrib repository into the
api/standard
package. #769
- Rename
Integrator
toProcessor
in the metric SDK. (#863) - Rename
AggregationSelector
toAggregatorSelector
. (#859) - Rename
SynchronizedCopy
toSynchronizedMove
. (#858) - Rename
simple
integrator tobasic
integrator. (#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.Checkpoint
API is renamed toSynchronizedCopy
and adds an argument, a differentAggregator
into which the copy is stored. (#812) - The
export.Aggregator
contract 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 theAggregators
used unnecessary locking and that has been cleaned up. (#812) - Use of
metric.Number
was replaced byint64
now that we usesync.Mutex
in theMinMaxSumCount
andHistogram
Aggregators
. (#812) - Replace
AlwaysParentSample
withParentSample(fallback)
to match the OpenTelemetry v0.5.0 specification. (#810) - Rename
sdk/export/metric/aggregator
tosdk/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.Handle
function. (#791) - Rename
plugin
directory toinstrumentation
to match the OpenTelemetry specification. (#779) - Makes the argument order to Histogram and DDSketch
New()
consistent. (#781)
Uint64NumberKind
and related functions from the API. (#864)- Context arguments from
Aggregator.Checkpoint
andIntegrator.Process
as they were unused. (#803) SpanID
is no longer included in parameters for sampling decision to match the OpenTelemetry specification. (#775)
- Upgrade OTLP exporter to opentelemetry-proto matching the opentelemetry-collector v0.4.0 release. (#866)
- Allow changes to
go.sum
andgo.mod
when 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
Aggregator
testing has been updated and cleaned. (#812) metric.Number(0)
expressions are replaced by0
where possible. (#812)- Fixed
global
handler_test.go
test failure. #804 - Fixed
BatchSpanProcessor.Shutdown
to 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/standard
keys instead of custom keys. (#782) - Clean up tools and RELEASING documentation. (#762)
0.6.0 - 2020-05-21
- Support for
Resource
s in the prometheus exporter. (#757) - New pull controller. (#751)
- New
UpDownSumObserver
instrument. (#750) - OpenTelemetry collector demo. (#711)
- New
SumObserver
instrument. (#747) - New
UpDownCounter
instrument. (#745) - New timeout
Option
and configuration functionWithTimeout
to the push controller. (#742) - New
api/standards
package to implement semantic conventions and standard key-value generation. (#731)
- Rename
Register*
functions in the metric API toNew*
for allObserver
instruments. (#761) - Use
[]float64
for histogram boundaries, not[]metric.Number
. (#758) - Change OTLP example to use exporter as a trace
Syncer
instead of as an unneededBatcher
. (#756) - Replace
WithResourceAttributes()
withWithResource()
in the trace SDK. (#754) - The prometheus exporter now uses the new pull controller. (#751)
- Rename
ScheduleDelayMillis
toBatchTimeout
in the traceBatchSpanProcessor
.(#752) - Support use of synchronous instruments in asynchronous callbacks (#725)
- Move
Resource
from theExport
method parameter into the metric exportRecord
. (#739) - Rename
Observer
instrument toValueObserver
. (#734) - The push controller now has a method (
Provider()
) to return ametric.Provider
instead of the oldMeter
method that acted as ametric.Provider
. (#738) - Replace
Measure
instrument byValueRecorder
instrument. (#732) - Rename correlation context header from
"Correlation-Context"
to"otcorrelations"
to match the OpenTelemetry specification. 727)
- Ensure gRPC
ClientStream
override methods do not panic in grpctrace package. (#755) - Disable parts of
BatchSpanProcessor
test until a fix is found. (#743) - Fix
string
case inkv
Infer
function. (#746) - Fix panic in grpctrace client interceptors. (#740)
- Refactor the
api/metrics
push controller and addCheckpointSet
synchronization. (#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.14
for examples. (#733) - Added test for grpctrace
UnaryInterceptorClient
. (#695) - Rearrange
api/metric
code layout. (#724)
0.5.0 - 2020-05-13
- Batch
Observer
callback support. (#717) - Alias
api
types to root package of project. (#696) - Create basic
othttp.Transport
for simple client instrumentation. (#678) SetAttribute(string, interface{})
to the trace API. (#674)- Jaeger exporter option that allows user to specify custom http client. (#671)
Stringer
andInfer
methods tokey
s. (#662)
- Rename
NewKey
in thekv
package to justKey
. (#721) - Move
core
andkey
tokv
package. (#720) - Make the metric API
Meter
astruct
so the abstractMeterImpl
can be passed and simplify implementation. (#709) - Rename SDK
Batcher
toIntegrator
to match draft OpenTelemetry SDK specification. (#710) - Rename SDK
Ungrouped
integrator tosimple.Integrator
to match draft OpenTelemetry SDK specification. (#710) - Rename SDK
SDK
struct
toAccumulator
to match draft OpenTelemetry SDK specification. (#710) - Move
Number
fromcore
toapi/metric
package. (#706) - Move
SpanContext
fromcore
totrace
package. (#692) - Change traceparent header from
Traceparent
totraceparent
to implement the W3C specification. (#681)
- Update tooling to run generators in all submodules. (#705)
- gRPC interceptor regexp to match methods without a service name. (#683)
- Use a
const
for padding 64-bit B3 trace IDs. (#701) - Update
mockZipkin
listen address from:0
to127.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
StateLocker
implementation. (#688) - Increase instance size CI system uses. (#690)
- Add a
key
benchmark and use reflection inkey.Infer()
. (#679) - Fix internal
global
test by usingglobal.Meter
withRecordBatch()
. (#680) - Reimplement histogram using mutex instead of
StateLocker
. (#669) - Switch
MinMaxSumCount
to 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-lint
and work around the corrupting bug. (#666) (#670)
0.4.3 - 2020-04-24
Dockerfile
anddocker-compose.yml
to run example code. (#635)- New
grpctrace
package that provides gRPC client and server interceptors for both unary and stream connections. (#621) - New
api/label
package, providing common label set implementation. (#651) - Support for JSON marshaling of
Resources
. (#654) TraceID
andSpanID
implementations forStringer
interface. (#642)RemoteAddrKey
in the othttp plugin to include the HTTP client address in top-level spans. (#627)WithSpanFormatter
option to the othttp plugin. (#617)- 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
String
method to theResource
to return a hashable identifier for a now unique resource. (#613) - An
Iter
method to theResource
to return an arrayAttributeIterator
. (#613) - An
Equal
method to theResource
test the equivalence of resources. (#613) - An iterable structure (
AttributeIterator
) forResource
attributes.
- zipkin export's
NewExporter
now requires aserviceName
argument to ensure this needed values is provided. (#644) - Pass
Resources
through the metrics export pipeline. (#659)
WithKeys
option from the metric API. (#639)
- Use the
label.Set.Equivalent
value instead of an encoding in the batcher. (#658) - Correct typo
trace.Exporter
totrace.SpanSyncer
in comments. (#653) - Use type names for return values in jaeger exporter. (#648)
- Increase the visibility of the
api/key
package by updating comments and fixing usages locally. (#650) Checkpoint
only afterUpdate
; Keep records in thesync.Map
longer. (#647)- Do not cache
reflect.ValueOf()
in metric Labels. (#649) - Batch metrics exported from the OTLP exporter based on
Resource
and labels. (#626) - Add error wrapping to the prometheus exporter. (#631)
- Update the OTLP exporter batching of traces to use a unique
string
representation of an associatedResource
as the batching key. (#623) - Update OTLP
SpanData
transform to only include theParentSpanID
if one exists. (#614) - Update
Resource
internal representation to uniquely and reliably identify resources. (#613) - Check return value from
CheckpointSet.ForEach
in 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
- Fix
pre_release.sh
to update version insdk/opentelemetry.go
. (#607) - Fix time conversion from internal to OTLP in OTLP exporter. (#606)
0.4.1 - 2020-03-31
- Update
tag.sh
to create signed tags. (#604)
0.4.0 - 2020-03-30
- New API package
api/metric/registry
that exposes aMeterImpl
wrapper for use by SDKs to generate unique instruments. (#580) - Script to verify examples after a new release. (#579)
- The dogstatsd exporter due to lack of support. This additionally removes support for statsd. (#591)
LabelSet
from the metric API. This is replaced by a[]core.KeyValue
slice. (#595)Labels
from the metric API'sMeter
interface. (#595)
- The metric
export.Labels
became an interface which the SDK implements and theexport
package provides a simple, immutable implementation of this interface intended for testing purposes. (#574) - Renamed
internal/metric.Meter
toMeterImpl
. (#580) - Renamed
api/global/internal.obsImpl
toasyncImpl
. (#580)
- 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
RecordBatch
benchmark. (#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
BatchedSpanProcessor
to 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.
- Add
Observer
metric instrument. (#474) - Add global
Propagators
functionality 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)
- The
StatusMessage
field was add to the traceSpan
. (#524) - Context propagation in OpenTracing bridge in terms of OpenTelemetry context propagation. (#525)
- The
Resource
type was added to the SDK. (#528) - The global API now supports a
Tracer
andMeter
function as shortcuts to getting a global*Provider
and calling these methods directly. (#538) - The metric API now defines a generic
MeterImpl
interface to support general purposeMeter
construction. Additionally,SyncImpl
andAsyncImpl
are added to support general purpose instrument construction. (#560) - A metric
Kind
is added to represent theMeasureKind
,ObserverKind
, andCounterKind
. (#560) - Scripts to better automate the release process. (#576)
- Default to to use
AlwaysSampler
instead ofProbabilitySampler
to match OpenTelemetry specification. (#506) - Renamed
AlwaysSampleSampler
toAlwaysOnSampler
in the trace API. (#511) - Renamed
NeverSampleSampler
toAlwaysOffSampler
in the trace API. (#511) - The
Status
field of theSpan
was changed toStatusCode
to disambiguate with the addedStatusMessage
. (#524) - Updated the trace
Sampler
interface conform to the OpenTelemetry specification. (#531) - Rename metric API
Options
toConfig
. (#541) - Rename metric
Counter
aggregator to beSum
. (#541) - Unify metric options into
Option
from instrument specific options. (#541) - The trace API's
TraceProvider
now supportResource
s. (#545) - Correct error in zipkin module name. (#548)
- The jaeger trace exporter now supports
Resource
s. (#551) - Metric SDK now supports
Resource
s. TheWithResource
option was added to configure aResource
on creation and theResource
method was added to the metricDescriptor
to return the associatedResource
. (#552) - Replace
ErrNoLastValue
andErrEmptyDataSet
byErrNoData
in the metric SDK. (#557) - The stdout trace exporter now supports
Resource
s. (#558) - The metric
Descriptor
is now included at the API instead of the SDK. (#560) - Replace
Ordered
with an iterator inexport.Labels
. (#567)
- The vendor specific Stackdriver. It is now hosted on 3rd party vendor infrastructure. (#452)
- The
Unregister
method for metric observers as it is not in the OpenTelemetry specification. (#560) GetDescriptor
from the metric SDK. (#575)- The
Gauge
instrument from the metric API. (#537)
- 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
NewRoot
in 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
StateLocker
implementation 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
RecordError
method onSpan
s in the trace API to Simplify adding error events to spans. (#473)- Configurable push frequency for exporters setup pipeline. (#504)
- Rename the
exporter
directory toexporters
. Thego.opentelemetry.io/otel/exporter/trace/jaeger
package was mistakenly released with av1.0.0
tag instead ofv0.1.0
. This resulted in all subsequent releases not becoming the default latest. A consequence of this was that allgo get
s pulled in the incompatiblev0.1.0
release of that package when pulling in more recent packages from other otel packages. Renaming theexporter
directory toexporters
fixes this issue by renaming the package and therefore clearing any existing dependency tags. Consequentially, this action also renames all exporter packages. (#502)
- The
CorrelationContextHeader
constant in thecorrelation
package is no longer exported. (#503)
0.2.2 - 2020-02-27
HTTPSupplier
interface in the propagation API to specify methods to retrieve and store a single value for a key to be associated with a carrier. (#467)HTTPExtractor
interface in the propagation API to extract information from anHTTPSupplier
into a context. (#467)HTTPInjector
interface in the propagation API to inject information into anHTTPSupplier.
(#467)Config
and configuringOption
to the propagator API. (#467)Propagators
interface in the propagation API to contain the set of injectors and extractors for all supported carrier formats. (#467)HTTPPropagator
interface in the propagation API to inject and extract from anHTTPSupplier.
(#467)WithInjectors
andWithExtractors
functions to the propagator API to configure injectors and extractors to use. (#467)ExtractHTTP
andInjectHTTP
functions to apply configured HTTP extractors and injectors to a passed context. (#467)- Histogram aggregator. (#433)
DefaultPropagator
function and have it returntrace.TraceContext
as the default context propagator. (#456)AlwaysParentSample
sampler to the trace API. (#455)WithNewRoot
option function to the trace API to specify the created span should be considered a root span. (#451)
- Renamed
WithMap
toContextWithMap
in the correlation package. (#481) - Renamed
FromContext
toMapFromContext
in the correlation package. (#481) - Move correlation context propagation to correlation package. (#479)
- Do not default to putting remote span context into links. (#480)
- Propagators extrac
Tracer.WithSpan
updated to acceptStartOptions
. (#472)- Renamed
MetricKind
toKind
to not stutter in the type usage. (#432) - Renamed the
export
package tometric
to match directory structure. (#432) - Rename the
api/distributedcontext
package toapi/correlation
. (#444) - Rename the
api/propagators
package toapi/propagation
. (#444) - Move the propagators from the
propagators
package into thetrace
API package. (#444) - Update
Float64Gauge
,Int64Gauge
,Float64Counter
,Int64Counter
,Float64Measure
, andInt64Measure
metric methods to use value receivers instead of pointers. (#462) - Moved all dependencies of tools package to a tools directory. (#466)
- Binary propagators. (#467)
- NOOP propagator. (#467)
- Upgraded
github.com/golangci/golangci-lint
fromv1.21.0
tov1.23.6
intools/
. (#492) - Fix a possible nil-dereference crash (#478)
- Correct comments for
InstallNewPipeline
in the stdout exporter. (#483) - Correct comments for
InstallNewPipeline
in the dogstatsd exporter. (#484) - Correct comments for
InstallNewPipeline
in the prometheus exporter. (#482) - Initialize
onError
based onConfig
in prometheus exporter. (#486) - Correct module name in prometheus exporter README. (#475)
- Removed tracer name prefix from span names. (#430)
- Fix
aggregator_test.go
import 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
precommit
target so we generate files and build the code before doing linting, so we can get much nicer errors about syntax errors from the compiler. (#442) - Reword function documentation in gRPC plugin. (#446)
- Send the
span.kind
tag to Jaeger from the jaeger exporter. (#441) - Fix
metadataSupplier
in 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.Gosched
in instrumentacquireHandle
logic to not block the collector. (#469)
0.2.1.1 - 2020-01-13
- Use stateful batcher on Prometheus exporter fixing regresion introduced in #395. (#428)
0.2.1 - 2020-01-08
- 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)
- Renamed
propagation
package topropagators
. (#362) - Renamed
B3Propagator
propagator toB3
. (#362) - Renamed
TextFormatPropagator
propagator toTextFormat
. (#362) - Renamed
BinaryPropagator
propagator toBinary
. (#362) - Renamed
BinaryFormatPropagator
propagator toBinaryFormat
. (#362) - Renamed
NoopTextFormatPropagator
propagator toNoopTextFormat
. (#362) - Renamed
TraceContextPropagator
propagator toTraceContext
. (#362) - Renamed
SpanOption
toStartOption
in the trace API. (#369) - Renamed
StartOptions
toStartConfig
in the trace API. (#369) - Renamed
EndOptions
toEndConfig
in the trace API. (#369) Number
now has a pointer receiver for its methods. (#375)- Renamed
CurrentSpan
toSpanFromContext
in the trace API. (#379) - Renamed
SetCurrentSpan
toContextWithSpan
in the trace API. (#379) - Renamed
Message
in Event toName
in the trace API. (#389) - Prometheus exporter no longer aggregates metrics, instead it only exports them. (#385)
- Renamed
HandleImpl
toBoundInstrumentImpl
in the metric API. (#400) - Renamed
Float64CounterHandle
toFloat64CounterBoundInstrument
in the metric API. (#400) - Renamed
Int64CounterHandle
toInt64CounterBoundInstrument
in the metric API. (#400) - Renamed
Float64GaugeHandle
toFloat64GaugeBoundInstrument
in the metric API. (#400) - Renamed
Int64GaugeHandle
toInt64GaugeBoundInstrument
in the metric API. (#400) - Renamed
Float64MeasureHandle
toFloat64MeasureBoundInstrument
in the metric API. (#400) - Renamed
Int64MeasureHandle
toInt64MeasureBoundInstrument
in the metric API. (#400) - Renamed
Release
method for bound instruments in the metric API toUnbind
. (#400) - Renamed
AcquireHandle
method for bound instruments in the metric API toBind
. (#400) - Renamed the
File
option in the stdout exporter toWriter
. (#404) - Renamed all
Options
toConfig
for all metric exports where this wasn't already the case.
- 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.request
span inhttptrace
package. (#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
- Unary gRPC tracing example. (#351)
- Prometheus exporter. (#334)
- Dogstatsd metrics exporter. (#326)
- Rename
MaxSumCount
aggregation toMinMaxSumCount
and add theMin
interface for this aggregation. (#352) - Rename
GetMeter
toMeter
. (#357) - Rename
HTTPTraceContextPropagator
toTraceContextPropagator
. (#355) - Rename
HTTPB3Propagator
toB3Propagator
. (#355) - Rename
HTTPTraceContextPropagator
toTraceContextPropagator
. (#355) - Move
/global
package to/api/global
. (#356) - Rename
GetTracer
toTracer
. (#347)
SetAttribute
from theSpan
interface in the trace API. (#361)AddLink
from theSpan
interface in the trace API. (#349)Link
from theSpan
interface in the trace API. (#349)
- Exclude example directories from coverage report. (#365)
- Lint make target now implements automatic fixes with
golangci-lint
before a second run to report the remaining issues. (#360) - Drop
GO111MODULE
environment variable in Makefile as Go 1.13 is the project specified minimum version and this is environment variable is not needed for that version of Go. (#359) - Run the race checker for all test. (#354)
- Redundant commands in the Makefile are removed. (#354)
- Split the
generate
andlint
targets of the Makefile. (#354) - Renames
circle-ci
target to more genericci
in Makefile. (#354) - Add example Prometheus binary to gitignore. (#358)
- Support negative numbers with the
MaxSumCount
. (#335) - Resolve race conditions in
push_test.go
identified in #339. (#340) - Use
/usr/bin/env bash
as a shebang in scripts rather than/bin/bash
. (#336) - Trace benchmark now tests both
AlwaysSample
andNeverSample
. Previously it was testingAlwaysSample
twice. (#325) - Trace benchmark now uses a
[]byte
forTraceID
to fix failing test. (#325) - Added a trace benchmark to test variadic functions in
setAttribute
vssetAttributes
(#325) - The
defaultkeys
batcher was only using the encoded label set as its map key while building a checkpoint. This allowed distinct label sets through, but any metrics sharing a label set could be overwritten or merged incorrectly. This was corrected. (#333)
0.1.2 - 2019-11-18
- Optimized the
simplelru
map 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.
- Metrics stdout export pipeline. (#265)
- Array aggregation for raw measure metrics. (#282)
- The core.Value now have a
MarshalJSON
method. (#281)
WithService
,WithResources
, andWithComponent
methods of tracers. (#314)- Prefix slash in
Tracer.Start()
for the Jaeger example. (#292)
- Allocation in LabelSet construction to reduce GC overhead. (#318)
trace.WithAttributes
to 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)
SpanKind
back to being based on anint
type. (#288)
- URL to OpenTelemetry website in README. (#323)
- Name of othttp default tracer. (#321)
ExportSpans
for the stackdriver exporter now handlesnil
context. (#294)- CI modules cache to correctly restore/save from/to the cache. (#316)
- Fix metric SDK race condition between
LoadOrStore
and 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.
- 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.