OpenTelemetry-Go is the Go implementation of OpenTelemetry



CI PkgGoDev Go Report Card Slack

OpenTelemetry-Go is the Go implementation of OpenTelemetry. It provides a set of APIs to directly measure performance and behavior of your software and send this data to observability platforms.

Project Status

Signal Status Project
Traces Stable N/A
Metrics Alpha N/A
Logs Frozen [1] N/A
  • [1]: The Logs signal development is halted for this project while we develop both Traces and Metrics. No Logs Pull Requests are currently being accepted.

Progress and status specific to this repository is tracked in our local project boards and milestones.

Project versioning information and stability guarantees can be found in the versioning documentation.


This project is tested on the following systems.

OS Go Version Architecture
Ubuntu 1.16 amd64
Ubuntu 1.15 amd64
Ubuntu 1.16 386
Ubuntu 1.15 386
MacOS 1.16 amd64
MacOS 1.15 amd64
Windows 1.16 amd64
Windows 1.15 amd64
Windows 1.16 386
Windows 1.15 386

While this project should work for other systems, no compatibility guarantees are made for those systems currently.

Getting Started

You can find a getting started guide on

OpenTelemetry's goal is to provide a single set of APIs to capture distributed traces and metrics from your application and send them to an observability platform. This project allows you to do just that for applications written in Go. There are two steps to this process: instrument your application, and configure an exporter.


To start capturing distributed traces and metric events from your application it first needs to be instrumented. The easiest way to do this is by using an instrumentation library for your code. Be sure to check out the officially supported instrumentation libraries.

If you need to extend the telemetry an instrumentation library provides or want to build your own instrumentation for your application directly you will need to use the package. The included examples are a good way to see some practical uses of this process.


Now that your application is instrumented to collect telemetry, it needs an export pipeline to send that telemetry to an observability platform.

All officially supported exporters for the OpenTelemetry project are contained in the exporters directory.

Exporter Metrics Traces

Additionally, OpenTelemetry community supported exporters can be found in the contrib repository.


See the contributing documentation.

  • Why so many interfaces?

    Why so many interfaces?

    My expectation when I started looking at the code base was that I would find mostly concrete implementations of the basic data types (Traces, Spans, SpanContexts, Logs, Measurements, Metrics, etc) with interfaces for vendors to hook into for enriching that data and exporting it either in batch or streaming forms.

    Looking through the code base I'm sort of astonished by the number of interfaces that exist over concrete data types.

    I realize that vendors want some control over various aspects of the implementation, but starting with making everything an interface seems like a poor design choice to me.

    Can anyone explain this or point me to the docs that explain the motivation behind this?

    opened by freeformz 30
  • Metrics SDK work-in-progress

    Metrics SDK work-in-progress

    This PR branches off of #100 and adds a metrics SDK.
    It's missing a lot, but I thought it would be best to post this now, by way of assisting with #100 as well as the associated spec change and directly addresses part of spec issue which is that it's difficult to fully understand the API specification without seeing a real SDK.

    This is very incomplete, for example it needs:

    1. It only supports counters
    2. It needs more testing
    3. It has no real exporter yet
    4. Needs more documentation on the lock-free algorithm (and reviewers)

    More changes will be needed to accommodate measures. Before the work in can be finished, I'd like to complete this prototype with:

    1. a statsd exporter
    2. a configuration struct allowing configurable aggregation and group-by for all instruments
    3. a dynamic config update API
    4. an example YAML file that could serve to configure metrics behavior

    There is one issue that is worth considering (@bogdandrutu). This SDK aggregates metrics by (DescriptorID, LabelSet) in the SDK itself, but does not "fold" for the group-by operation. I.e., it does not apply the group-by or support selecting a subset of aggregation keys directly. My idea is to implement group-by in the exporter. It's simpler this way, since it's not on the critical path for callers. This design could be extended with further complexity to address the group-by up-front, but I would like to be convinced it's worthwhile.

    pkg:SDK area:metrics 
    opened by jmacd 25
  • Add sdk/metric/reader package structure to new_sdk/main

    Add sdk/metric/reader package structure to new_sdk/main

    ~Blocked by #2799~

    Add in the needed interfaces and high-level types for the new SDK design from new_sdk/example. This is not expected to be a fully working implementation.


    • [ ] type Reader interface
      • [ ] type Registeree interface (might be a better idea to rename this idiomatic to Go Registerer)
      • [ ] type Producer interface
      • [ ] type Metrics struct
      • [ ] type Scope struct
      • [ ] type Instrument struct
      • [ ] type Point struct
    • [ ] type Exporter interface
    • [ ] type Option interface to be passed to the new Provider method option
      • [ ] type config struct stub
    pkg:SDK area:metrics 
    opened by MrAlias 24
  • Deviation from semconv exception spec?

    Deviation from semconv exception spec?

    Just noticed that the trace implementation doesn't seem to follow the spec for exceptions -- looks like this package uses error as the prefix instead of exception. Looking at the JS library, they seem to be using exception as well, so I'm guessing it's the golang lib that's out of compliance.

    Are there any plans or motivation to bring this into compliance? I don't know if there's a backwards compatible way of making this change, aside of perhaps recording two events, one with the error prefix, one with the exception prefix. That said, it might be best to just rip the bandaid off, rename the event and attributes and make it a (potentially) breaking change?

    Happy to contribute these changes if I can get some direction on what you think is the best path forward :)

    question pkg:SDK area:trace priority:p1 
    opened by mothershipper 23
  • OTLP exporter not exporting ValueRecorder & ValueObserver to Prometheus backend

    OTLP exporter not exporting ValueRecorder & ValueObserver to Prometheus backend

    Describe the bug I am using an OTLP exporter and metrics pusher with otel-collector with a Prometheus exporter and Logging exporter. In the Logging exporter, all collected metrics are showing but in Prometheus backend, only ValueCounter instrument values are showing.

    I am using the latest otel-collector-contrib image and running it alongside a demo service, some DBs, latest Prometheus image using docker.

    What config did you use?

    • otel-collector-config.yaml
        endpoint: ""
        namespace: versionsvc
        loglevel: debug
        project: digital-waters-276111
        metric_prefix: versionsvc
        number_of_workers: 3
        skip_create_metric_descriptor: true
        endpoint: :1888
        endpoint: :55679
      extensions: [pprof, zpages, health_check]
          receivers: [otlp]
          exporters: [logging,stackdriver]
          processors: [batch, queued_retry]
          receivers: [otlp]
          exporters: [logging,prometheus]
    • creation of the exporter and pusher:
    func initProviders() (*otlp.Exporter, *push.Controller) {
    	collectorAddr, ok := os.LookupEnv("OTEL_RECIEVER_ENDPOINT")
    	if !ok {
    		collectorAddr = otlp.DefaultCollectorHost + ":" + string(otlp.DefaultCollectorHost)
    	exporter, err := otlp.NewExporter(otlp.WithAddress(collectorAddr),
    	if err != nil {
    	tp, err := sdktrace.NewProvider(
    		sdktrace.WithConfig(sdktrace.Config{DefaultSampler: sdktrace.AlwaysSample()}),
    	if err != nil {
    	pusher := push.New(
    	return exporter, pusher
    • docker-compose.yaml
    version: "3.1"
        image: redis:4
          - "6379:6379"
        image: postgres:11
          - "5432:5432"
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: roottoor
          POSTGRES_DB: backend
        build: ../.
          - GO111MODULE=on
          - OTEL_RECIEVER_ENDPOINT=otel-collector:55678
          - otel-collector
          - db 
          - redis   
          - "8088:8088"
        image: ${OTELCOL_IMG}
        command: ["--config=/etc/otel-collector-config.yaml", "${OTELCOL_ARGS}"]
          - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml
          - "1888:1888"   
          - "8888:8888"   
          - "8889:8889"   
          - "13133:13133" 
          - "55678:55678"       
          - "55680:55679"
        container_name: prometheus
        image: prom/prometheus:latest
          - ./prometheus.yaml:/etc/prometheus/prometheus.yml
          - "9090:9090"
    • prometheus.yaml
        - job_name: 'otel-collector'
          scrape_interval: 1s
            - targets: ['otel-collector:8889']

    Environment OS: MacOS Catalina Compiler(if manually compiled): go 1.14

    Additional context

    • The code I wrote using OTEL format to export metrics works because I added a Prometheus receiver in the collector and a Prometheus exporter without changing any of the counter and value recorders code and it worked fine. So the issue is most likely associated with OTEL-exporter not able to export some Metric values that prometheus backend can identify.

    • I have this code with a demo service in the repo:

    bug area:metrics 
    opened by zeyadkhaled 21
  • propose additional CODEOWNERS

    propose additional CODEOWNERS

    opened by lizthegrey 19
  • Change resource.New() to use functional options; add builtin attributes for (host.*, telemetry.sdk.*)

    Change resource.New() to use functional options; add builtin attributes for (host.*, telemetry.sdk.*)

    This adds resource.NewConfig(ctx, ...) with functional options:

    • WithAttributes(...) for directly adding key:values
    • WithDetectors(...) for directly adding resource detectors
    • WithTelemetrySDK(...) to override the default telemetry.sdk.* resources
    • WithHost(...) to override the default host.* resources
    • WithFromEnv(...) to override the default environment configuration
    • WithoutBuiltin() to disable all builtin resources

    The intention is to make it easy to configure a *Resource with the standard resources. This adds standard resource detectors for the telemetry SDK and host name.

    Resolves #1076.

    area:metrics area:trace 
    opened by jmacd 18
  • Expose optional ResponseWriter interfaces.

    Expose optional ResponseWriter interfaces.

    http.ResponseWriters may implement additional interfaces (http.CloseNotifier, http.Flusher, http.Hijacker, http.Pusher, io.ReaderFrom) that get lost when the ResponseWriter is wrapped in another object. This change uses the httpsnoop package to wrap the ResponseWriter so that the resulting object implements any of the optional interfaces that the original ResponseWriter implements as well as using the replacement ResponseWriter methods that gather information for tracing.

    opened by andy-retailnext 18
  •  Loading the Go SDK

    Loading the Go SDK

    As discussed briefly in the 7/9/2019 OpenTelemetry specification SIG meeting, the current specification does not say exactly how to initialize the SDK, particularly, the standard "global" tracer, meter, and recorder interfaces. It's not clear whether this requires a note in the cross-language specification, but I think we can state requirements for Go here. This is a proposal we might want to adopt:

    • The API must provide getters and setters for global Tracer, Meter, and Recorder interfaces, which comprise the standard SDK, these are expected to be widely used by default
    • To satisfy "Zero-Touch telemetry requirements", the application is not required to call an initializer to install or start the default SDK.
    • Where the language provides dynamic code loading, the API is required to support loading a SDK dynamically based on a language-appropriate external configuration (e.g., environment variables).
    • The API is required to support manual installation of a specific SDK, via a direct dependency.

    Given these (proposed) requirements, here is an implementation for Go that works. It requires moving the global setter/getter methods into dedicated packages to avoid an import cycle--it is those global packages that trigger auto-loading the SDK.

    opened by jmacd 18
  • Update dependencies

    Update dependencies

    • Bump from 1.42.1 to 1.43.0 in /internal/tools (supersedes and closes #2368)
    • Bump from 1.41.0 to 1.42.0 in /exporters/otlp/otlpmetric (supersedes and closes #2367)
    • Bump from 0.9.0 to 0.10.0 in /exporters/otlp/otlpmetric/otlpmetrichttp (supersedes and closes #2366)
    • Bump from 0.9.0 to 0.10.0 in /exporters/otlp/otlpmetric (supersedes and closes #2365)
    • Bump from 0.9.0 to 0.10.0 in /exporters/otlp/otlptrace (supersedes and closes #2364)
    • Bump from 1.41.0 to 1.42.0 in /exporters/otlp/otlpmetric/otlpmetricgrpc (supersedes and closes #2363)
    • Bump from 1.41.0 to 1.42.0 in /exporters/otlp/otlptrace (supersedes and closes #2362)
    • Bump from 0.9.0 to 0.10.0 in /exporters/otlp/otlptrace/otlptracehttp (supersedes and closes #2361)
    • Bump from 1.41.0 to 1.42.0 in /exporters/otlp/otlptrace/otlptracegrpc (supersedes and closes #2360)
    • Bump from 0.9.0 to 0.10.0 in /exporters/otlp/otlpmetric/otlpmetricgrpc (supersedes and closes #2359)
    • Bump from 0.9.0 to 0.10.0 in /exporters/otlp/otlptrace/otlptracegrpc (supersedes and closes #2358)
    • Bump from 1.1.0 to 1.2.0 in /sdk/metric (supersedes and closes #2357)
    • Bump from 1.41.0 to 1.42.0 in /example/otel-collector (supersedes and closes #2356)
    dependencies Skip Changelog 
    opened by MrAlias 17
  • Inconsistency with pointer and concrete type recievers

    Inconsistency with pointer and concrete type recievers

    core.Number has a mix of pointer and concrete receivers. E.g.

    func (n *Number) AddFloat64(f float64)
    func (n Number) IsNegative(kind NumberKind) bool

    We don't do this in Go for the user's convenience even if we don't mutate any fields in the methods.

    good first issue 
    opened by rakyll 17
  • Add the go 1.19 tests to the required checks.

    Add the go 1.19 tests to the required checks.

    Blocked until release v1.10.0 is complete.

    Originally posted by @MadVikingGod in

    opened by MrAlias 0
  • Adds comparable constraint to reader

    Adds comparable constraint to reader

    This is a solution to the discussion of

    This adds a constraint to the WithReader Option, so that all Readers within the SDK will be comparable.

    ComparableReader isn't used within the MeterProvider/Meter ecosystem because it is A) a type constraint so you can't have a map[ComparableReader]struct{} and B) would color the structs so you could only have one kind of reader per MeterProvider/Meter.

    opened by MadVikingGod 3
  • Adds the option to ignore timestamps in metric data tests.

    Adds the option to ignore timestamps in metric data tests.

    What does this patch add? An option to the metricdatatest package to ignore differences in timestamps.

    Why? Because most packages will not be able to override the timestamp generation of aggregators. This means that when comparing data from the SDK there is no way to control the timestamp in the output data.

    Is there an Alternative? We add an option to somehow set the now function of the aggregators.

    pkg:SDK area:metrics 
    opened by MadVikingGod 1
  • Fix Collection bug with `Config.Memory` + `aggregation.DeltaTemporality`

    Fix Collection bug with `Config.Memory` + `aggregation.DeltaTemporality`

    When the processor.WithMemory(true) option is set and the aggregation temporality is Delta, the processor exports the same metric value over and over again if the value is not updated, as if it was cumulative temporality.

    To fix this, I added a check for delta aggregation temporality in addition to the Config.Memory option when a value is not updated in a particular time interval. Also fixed unit tests.

    opened by GunalKupta 1
  • Changes instruments uniqueness in pipeline.

    Changes instruments uniqueness in pipeline.

    This changes the uniqueness of an instrument from scope+name+unit+description to scope+name+unit. This will change the behavior such that the first description registered is the one that will be in the output.

    This was identified in

    pkg:SDK area:metrics 
    opened by MadVikingGod 1
  • v1.9.0(Aug 2, 2022)


    • Add support for Schema Files format 1.1.x (metric "split" transform) with the new package. (#2999)
    • Add the package. The package contains semantic conventions from the v1.11.0 version of the OpenTelemetry specification. (#3009)
    • Add the package. The package contains semantic conventions from the v1.12.0 version of the OpenTelemetry specification. (#3010)
    • Add the http.method attribute to HTTP server metric from all* packages. (#3018)


    • Invalid warning for context setup being deferred in package. (#3029)
    Source code(tar.gz)
    Source code(zip)
  • v1.8.0(Jul 8, 2022)

    1.8.0/0.31.0 - 2022-07-08


    • Add support for opentracing.TextMap format in the Inject and Extract methods of the "".BridgeTracer type. (#2911)


    • The crosslink make target has been updated to use the package. (#2886)
    • In the package rename Library to Scope and alias Library as Scope (#2976)
    • Move metric no-op implementation form nonrecording to metric package. (#2866)


    • Support for go1.16. Support is now only for go1.17 and go1.18 (#2917)


    • The Library struct in the package is deprecated. Use the equivalent Scope struct instead. (#2977)
    • The ReadOnlySpan.InstrumentationLibrary method from the package is deprecated. Use the equivalent ReadOnlySpan.InstrumentationScope method instead. (#2977)
    Source code(tar.gz)
    Source code(zip)
  • v1.7.0(Apr 28, 2022)


    • Add the package. The package contains semantic conventions from the v1.8.0 version of the OpenTelemetry specification. (#2763)
    • Add the package. The package contains semantic conventions from the v1.9.0 version of the OpenTelemetry specification. (#2792)
    • Add the package. The package contains semantic conventions from the v1.10.0 version of the OpenTelemetry specification. (#2842)
    • Added an in-memory exporter to metrictest to aid testing with a full SDK. (#2776)


    • Globally delegated instruments are unwrapped before delegating asynchronous callbacks. (#2784)
    • Remove import of testing package in non-tests builds of the package. (#2786)


    • The WithLabelEncoder option from the package is renamed to WithAttributeEncoder. (#2790)
    • The LabelFilterSelector interface from is renamed to AttributeFilterSelector. The method included in the renamed interface also changed from LabelFilterFor to AttributeFilterFor. (#2790)
    • The Metadata.Labels method from the package is renamed to Metadata.Attributes. Consequentially, the Record type from the same package also has had the embedded method renamed. (#2790)


    • The Iterator.Label method in the package is deprecated. Use the equivalent Iterator.Attribute method instead. (#2790)
    • The Iterator.IndexedLabel method in the package is deprecated. Use the equivalent Iterator.IndexedAttribute method instead. (#2790)
    • The MergeIterator.Label method in the package is deprecated. Use the equivalent MergeIterator.Attribute method instead. (#2790)


    • Removed the Batch type from the package. (#2864)
    • Removed the Measurement type from the package. (#2864)
    Source code(tar.gz)
    Source code(zip)
  • metric/v0.29.0(Apr 11, 2022)

    0.29.0 - 2022-04-11


    • The metrics global package was added back into several test files. (#2764)
    • The Meter function is added back to the package. This function is a convenience function equivalent to calling global.MeterProvider().Meter(...). (#2750)


    • Removed module the Use the module instead. (#2720)


    • Don't panic anymore when setting a global MeterProvider to itself. (#2749)
    • Upgrade in from v0.12.1 to v0.15.0. This replaces the use of the now deprecated InstrumentationLibrary and InstrumentationLibraryMetrics types and fields in the proto library with the equivalent InstrumentationScope and ScopeMetrics. (#2748)
    Source code(tar.gz)
    Source code(zip)
  • v1.6.3(Apr 7, 2022)

  • v1.6.2(Apr 6, 2022)

    1.6.2 - 2022-04-06


    • Don't panic anymore when setting a global TracerProvider or TextMapPropagator to itself. (#2749)
    • Upgrade in from v0.12.1 to v0.15.0. This replaces the use of the now deprecated InstrumentationLibrary and InstrumentationLibrarySpans types and fields in the proto library with the equivalent InstrumentationScope and ScopeSpans. (#2748)
    Source code(tar.gz)
    Source code(zip)
  • v1.6.1(Mar 28, 2022)


    • The* packages now use the correct schema URL for their SchemaURL constant. Instead of using "<version>" they now use the correct URL without a v prefix, "<version>". (#2743, #2744)


    • Upgrade from v0.12.0 to v0.12.1. This includes an indirect upgrade of which resolves a vulnerability from in version v2.2.3. (#2724, #2728)
    Source code(tar.gz)
    Source code(zip)
  • v1.6.0(Mar 23, 2022)

    ⚠️ Notice ⚠️

    This update is a breaking change of the unstable Metrics API. Code instrumented with the will need to be modified.


    • Add metrics exponential histogram support. New mapping functions have been made available in sdk/metric/aggregator/exponential/mapping for other OpenTelemetry projects to take dependencies on. (#2502)
    • Add Go 1.18 to our compatibility tests. (#2679)
    • Allow configuring the Sampler with the OTEL_TRACES_SAMPLER and OTEL_TRACES_SAMPLER_ARG environment variables. (#2305, #2517)
    • Add the metric/global for obtaining and setting the global MeterProvider. (#2660)


    • The metrics API has been significantly changed to match the revised OpenTelemetry specification. High-level changes include:

      • Synchronous and asynchronous instruments are now handled by independent InstrumentProviders. These InstrumentProviders are managed with a Meter.
      • Synchronous and asynchronous instruments are grouped into their own packages based on value types.
      • Asynchronous callbacks can now be registered with a Meter.

      Be sure to check out the metric module documentation for more information on how to use the revised API. (#2587, #2660)


    • Fallback to general attribute limits when span specific ones are not set in the environment. (#2675, #2677)
    Source code(tar.gz)
    Source code(zip)
  • v1.5.0(Mar 16, 2022)


    • Log the Exporters configuration in the TracerProviders message. (#2578)

    • Added support to configure the span limits with environment variables. The following environment variables are supported. (#2606, #2637)


      If the provided environment variables are invalid (negative), the default values would be used.

    • Rename the gc runtime name to go (#2560)

    • Add resource container ID detection. (#2418)

    • Add span attribute value length limit. The new AttributeValueLengthLimit field is added to the "".SpanLimits type to configure this limit for a TracerProvider. The default limit for this resource is "unlimited". (#2637)

    • Add the WithRawSpanLimits option to This option replaces the WithSpanLimits option. Zero or negative values will not be changed to the default value like WithSpanLimits does. Setting a limit to zero will effectively disable the related resource it limits and setting to a negative value will mean that resource is unlimited. Consequentially, limits should be constructed using NewSpanLimits and updated accordingly. (#2637)


    • Drop oldest tracestate Member when capacity is reached. (#2592)
    • Add event and link drop counts to the exported data from the oltptrace exporter. (#2601)
    • Unify path cleaning functionally in the otlpmetric and otlptrace configuration. (#2639)
    • Change the debug message from the sdk/trace.BatchSpanProcessor to reflect the count is cumulative. (#2640)
    • Introduce new internal envconfig package for OTLP exporters. (#2608)
    • If http.Request.Host is empty, fall back to use URL.Host when populating in the semconv packages. (#2661)


    • Remove the OTLP trace exporter limit of SpanEvents when exporting. (#2616)
    • Default to port 4318 instead of 4317 for the otlpmetrichttp and otlptracehttp client. (#2614, #2625)
    • Unlimited span limits are now supported (negative values). (#2636, #2637)


    • Deprecated "".WithSpanLimits. Use WithRawSpanLimits instead. That option allows setting unlimited and zero limits, this option does not. This option will be kept until the next major version incremented release. (#2637)
    Source code(tar.gz)
    Source code(zip)
  • v1.4.1(Feb 16, 2022)

  • v1.4.0(Feb 11, 2022)


    • Use OTEL_EXPORTER_ZIPKIN_ENDPOINT environment variable to specify zipkin collector endpoint. (#2490)
    • Log the configuration of TracerProviders, and Tracers for debugging. To enable use a logger with Verbosity (V level) >=1. (#2500)
    • Added support to configure the batch span-processor with environment variables. The following environment variables are used. (#2515)


    • Zipkin exporter exports Resource attributes in the Tags field. (#2589)


    • Deprecate module the Use the module instead. (#2382)
    • Deprecate "".AtomicFieldOffsets. (#2445)


    • Fixed the instrument kind for noop async instruments to correctly report an implementation. (#2461)
    • Fix UDP packets overflowing with Jaeger payloads. (#2489, #2512)
    • Change the otlpmetric.Client interface's UploadMetrics method to accept a single ResourceMetrics instead of a slice of them. (#2491)
    • Specify explicit buckets in Prometheus example, fixing issue where example only has +inf bucket. (#2419, #2493)
    • W3C baggage will now decode urlescaped values. (#2529)
    • Baggage members are now only validated once, when calling NewMember and not also when adding it to the baggage itself. (#2522)
    • The order attributes are dropped from spans in the package when capacity is reached is fixed to be in compliance with the OpenTelemetry specification. Instead of dropping the least-recently-used attribute, the last added attribute is dropped. This drop order still only applies to attributes with unique keys not already contained in the span. If an attribute is added with a key already contained in the span, that attribute is updated to the new value being added. (#2576)


    Source code(tar.gz)
    Source code(zip)
  • v1.3.0(Dec 10, 2021)

    ⚠️ Notice ⚠️

    We have updated the project minimum supported Go version to 1.16


    • Added an internal Logger. This can be used by the SDK and API to provide users with feedback of the internal state. To enable verbose logs configure the logger which will print V(1) logs. For debugging information configure to print V(5) logs. (#2343)
    • Add the WithRetry Option and the RetryConfig type to the package to specify retry behavior consistently. (#2425)
    • Add SpanStatusFromHTTPStatusCodeAndSpanKind to all semconv packages to return a span status code similar to SpanStatusFromHTTPStatusCode, but exclude 4XX HTTP errors as span errors if the span is of server kind. (#2296)


    • The "".Client now uses the underlying gRPC ClientConn to handle name resolution, TCP connection establishment (with retries and backoff) and TLS handshakes, and handling errors on established connections by re-resolving the name and reconnecting. (#2329)
    • The "".Client now uses the underlying gRPC ClientConn to handle name resolution, TCP connection establishment (with retries and backoff) and TLS handshakes, and handling errors on established connections by re-resolving the name and reconnecting. (#2425)
    • The "".RetrySettings type is renamed to RetryConfig. (#2425)
    • The* gRPC exporters now default to using the host's root CA set if none are provided by the user and WithInsecure is not specified. (#2432)
    • Change resource.Default to be evaluated the first time it is called, rather than on import. This allows the caller the option to update OTEL_RESOURCE_ATTRIBUTES first, such as with os.Setenv. (#2371)


    • The* exporters are updated to handle per-signal and universal endpoints according to the OpenTelemetry specification. Any per-signal endpoint set via an OTEL_EXPORTER_OTLP_<signal>_ENDPOINT environment variable is now used without modification of the path. When OTEL_EXPORTER_OTLP_ENDPOINT is set, if it contains a path, that path is used as a base path which per-signal paths are appended to. (#2433)
    • Basic metric controller updated to use sync.Map to avoid blocking calls (#2381)
    • The correctly sets the otel.status_code value to be a string of ERROR or OK instead of an integer code. (#2439, #2440)


    • Deprecated the "".WithMaxAttempts Option, use the new WithRetry Option instead. (#2425)
    • Deprecated the "".WithBackoff Option, use the new WithRetry Option instead. (#2425)


    • Remove the metric Processor's ability to convert cumulative to delta aggregation temporality. (#2350)
    • Remove the metric Bound Instruments interface and implementations. (#2399)
    • Remove the metric MinMaxSumCount kind aggregation and the corresponding OTLP export path. (#2423)
    • Metric SDK removes the "exact" aggregator for histogram instruments, as it performed a non-standard aggregation for OTLP export (creating repeated Gauge points) and worked its way into a number of confusing examples. (#2348)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Nov 12, 2021)


    • Metric SDK export.ExportKind, export.ExportKindSelector types have been renamed to aggregation.Temporality and aggregation.TemporalitySelector respectively to keep in line with current specification and protocol along with built-in selectors (e.g., aggregation.CumulativeTemporalitySelector, ...). (#2274)
    • The Metric Exporter interface now requires a TemporalitySelector method instead of an ExportKindSelector. (#2274)
    • Metrics API cleanup. The metric/sdkapi package has been created to relocate the API-to-SDK interface:
      • The following interface types simply moved from metric to metric/sdkapi: Descriptor, MeterImpl, InstrumentImpl, SyncImpl, BoundSyncImpl, AsyncImpl, AsyncRunner, AsyncSingleRunner, and AsyncBatchRunner
      • The following struct types moved and are replaced with type aliases, since they are exposed to the user: Observation, Measurement.
      • The No-op implementations of sync and async instruments are no longer exported, new functions sdkapi.NewNoopAsyncInstrument() and sdkapi.NewNoopSyncInstrument() are provided instead. (#2271)
    • Update the SDK BatchSpanProcessor to export all queued spans when ForceFlush is called. (#2080, #2335)


    • Add the "".WithGRPCConn option so the exporter can reuse an existing gRPC connection. (#2002)
    • Added a new schema module to help parse Schema Files in OTEP 0152 format. (#2267)
    • Added a new MapCarrier to the package to hold propagated coss-cutting concerns as a map[string]string held in memory. (#2334)
    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Oct 27, 2021)


    • Add the "".WithGRPCConn option so the exporter can reuse an existing gRPC connection. (#2002)
    • Add the package. The package contains semantic conventions from the v1.7.0 version of the OpenTelemetry specification. (#2320)
    • Add the package. The package contains semantic conventions from the v1.6.1 version of the OpenTelemetry specification. (#2321)
    • Add the package. The package contains semantic conventions from the v1.5.0 version of the OpenTelemetry specification. (#2322)
      • When upgrading from the semconv/v1.4.0 package note the following name changes:
        • K8SReplicasetUIDKey -> K8SReplicaSetUIDKey
        • K8SReplicasetNameKey -> K8SReplicaSetNameKey
        • K8SStatefulsetUIDKey -> K8SStatefulSetUIDKey
        • k8SStatefulsetNameKey -> K8SStatefulSetNameKey
        • K8SDaemonsetUIDKey -> K8SDaemonSetUIDKey
        • K8SDaemonsetNameKey -> K8SDaemonSetNameKey


    • Links added to a span will be dropped by the SDK if they contain an invalid span context (#2275).


    • The "".HTTPServerAttributesFromHTTPRequest now correctly only sets the HTTP client IP attribute even if the connection was routed with proxies and there are multiple addresses in the X-Forwarded-For header. (#2282, #2284)
    • The "".NetAttributesFromHTTPRequest function correctly handles IPv6 addresses as IP addresses and sets the correct net peer IP instead of the net peer hostname attribute. (#2283, #2285)
    • The simple span processor shutdown method deterministically returns the exporter error status if it simultaneously finishes when the deadline is reached. (#2290, #2289)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Oct 1, 2021)

    1.0.1 - 2021-10-01


    • json stdout exporter no longer crashes due to concurrency bug. (#2265)

    Metrics 0.24.0 - 2021-10-01


    • NoopMeterProvider is now private and NewNoopMeterProvider must be used to obtain a noopMeterProvider. (#2237)
    • The Metric SDK Export() function takes a new two-level reader interface for iterating over results one instrumentation library at a time. (#2197)
      • The former "".CheckpointSet is renamed Reader.
      • The new interface is named "".InstrumentationLibraryReader.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Sep 20, 2021)

    This is the first stable release for the project. This release includes an API and SDK for the tracing signal that will comply with the stability guarantees defined by the projects versioning policy.


    • OTLP trace exporter now sets the SchemaURL field in the exported telemetry if the Tracer has WithSchemaURL option. (#2242)


    • Slice-valued attributes can correctly be used as map keys. (#2223)


    • Removed the "".WithSDKOptions function. (#2248)
    • Removed the deprecated package (#2234)
    • Removed the deprecated package (#2233)
    • Removed deprecated functions, types, and methods from package. Use the typed functions and methods added to the package instead. (#2235)
      • The Key.Array method is removed.
      • The Array function is removed.
      • The Any function is removed.
      • The ArrayValue function is removed.
      • The AsArray function is removed.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-RC3(Sep 3, 2021)

    1.0.0-RC3 - 2021-09-03


    • Added ErrorHandlerFunc to use a function as an "".ErrorHandler. (#2149)
    • Added "".WithStackTrace option to add a stack trace when using span.RecordError or when panic is handled in span.End. (#2163)
    • Added typed slice attribute types and functionality to the package to replace the existing array type and functions. (#2162)
      • BoolSlice, IntSlice, Int64Slice, Float64Slice, and StringSlice replace the use of the Array function in the package.
    • Added the example package. Included is an example application that computes Fibonacci numbers. (#2203)


    • Metric instruments have been renamed to match the (feature-frozen) metric API specification:
      • ValueRecorder becomes Histogram
      • ValueObserver becomes Gauge
      • SumObserver becomes CounterObserver
      • UpDownSumObserver becomes UpDownCounterObserver The API exported from this project is still considered experimental. (#2202)
    • Metric SDK/API implementation type InstrumentKind moves into sdkapi sub-package. (#2091)
    • The Metrics SDK export record no longer contains a Resource pointer, the SDK "".Exporter.Export() function for push-based exporters now takes a single Resource argument, pull-based exporters use "".Controller.Resource(). (#2120)
    • The JSON output of the is harmonized now such that the output is "plain" JSON objects after each other of the form { ... } { ... } { ... }. Earlier the JSON objects describing a span were wrapped in a slice for each Exporter.ExportSpans call, like [ { ... } ][ { ... } { ... } ]. Outputting JSON object directly after each other is consistent with JSON loggers, and a bit easier to parse and read. (#2196)
    • Update the NewTracerConfig, NewSpanStartConfig, NewSpanEndConfig, and NewEventConfig function in the package to return their respective configurations as structs instead of pointers to the struct. (#2212)


    • The package is deprecated. All functionality from this package now exists in the package. The functions from that package should be used instead. (#2166)
    • The "".Array function and the related ARRAY value type is deprecated. Use the typed *Slice functions and types added to the package instead. (#2162)
    • The "".Any function is deprecated. Use the typed functions instead. (#2181)
    • The package is deprecated. The "".SpanRecorder can be registered with the default SDK ( as a SpanProcessor and used as a replacement for this deprecated package. (#2188)


    • Removed metrics test package (#2105)


    • The fromEnv detector no longer throws an error when OTEL_RESOURCE_ATTRIBUTES environment variable is not set or empty. (#2138)
    • Setting the global ErrorHandler with "".SetErrorHandler multiple times is now supported. (#2160, #2140)
    • The "".Any function now supports int32 values. (#2169)
    • Multiple calls to "".WithResource() are handled correctly, and when no resources are provided "".Default() is used. (#2120)
    • The WithoutTimestamps option for the exporter causes the exporter to correctly ommit timestamps. (#2195)
    • Fixed typos in resources.go. (#2201)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-RC2(Jul 26, 2021)


    • Added WithOSDescription resource configuration option to set OS (Operating System) description resource attribute (os.description). (#1840)
    • Added WithOS resource configuration option to set all OS (Operating System) resource attributes at once. (#1840)
    • Added the WithRetry option to the package. This option is a replacement for the removed WithMaxAttempts and WithBackoff options. (#2095)
    • Added API LinkFromContext to return Link which encapsulates SpanContext from provided context and also encapsulates attributes. (#2115)
    • Added a new Link type under the SDK otel/sdk/trace package that counts the number of attributes that were dropped for surpassing the AttributePerLinkCountLimit configured in the Span's SpanLimits. This new type replaces the equal-named API Link type found in the otel/trace package for most usages within the SDK. For example, instances of this type are now returned by the Links() function of ReadOnlySpans provided in places like the OnEnd function of SpanProcessor implementations. (#2118)


    • The SpanModels function is now exported from the package to convert OpenTelemetry spans into Zipkin model spans. (#2027)
    • Rename the "".RetrySettings to RetryConfig. (#2095)
    • Rename the "".RetrySettings to RetryConfig. (#2095)


    • The TextMapCarrier and TextMapPropagator from the package and their associated creation functions (TextMapCarrier, NewTextMapPropagator) are deprecated. (#2114)
    • The Harness type from the package and its associated creation function, NewHarness are deprecated and will be removed in the next release. (#2123)
    • The TraceStateFromKeyValues function from the package is deprecated. Use the trace.ParseTraceState function instead. (#2122)


    • Removed the deprecated package (#2020)
    • Removed the deprecated package (#2020)
    • Removed the "".WithBuiltinDetectors function. The explicit With* options for every built-in detector should be used instead. (#2026 #2097)
    • Removed the WithMaxAttempts and WithBackoff options from the package. The retry logic of the package has been updated to match the otlptracegrpc package and accordingly a WithRetry option is added that should be used instead. (#2095)
    • Removed DroppedAttributeCount field from otel/trace.Link struct. (#2118)


    • When using WithNewRoot, don't use the parent context for making sampling decisions. (#2032)
    • oteltest.Tracer now creates a valid SpanContext when using WithNewRoot. (#2073)
    • OS type detector now sets the correct dragonflybsd value for DragonFly BSD. (#2092)
    • The OTel span status is correctly transformed into the OTLP status in the package. This fix will by default set the status to Unset if it is not explicitly set to Ok or Error. (#2099 #2102)
    • The Inject method for the "".TraceContext type no longer injects empty tracestate values. (#2108)
    Source code(tar.gz)
    Source code(zip)
  • metric/v0.22.0(Jul 19, 2021)

    [Experimental Metrics v0.22.0] - 2021-07-19


    • Adds HTTP support for OTLP metrics exporter. (#2022)


    • Removed the deprecated package (#2020)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-RC1(Jun 18, 2021)

    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.


    • 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 |
    • Added Status type to the package to represent the status of a span. (#1874)
    • Added SpanStub type and its associated functions to the package. This type can be used as a testing replacement for the SpanSnapshot that was removed from the package. (#1873)
    • Adds support for scheme in OTEL_EXPORTER_OTLP_ENDPOINT according to the spec. (#1886)
    • Adds trace.WithSchemaURL option for configuring the tracer with a Schema URL. (#1889)
    • Added an example of using OpenTelemetry Go as a trace context forwarder. (#1912)
    • ParseTraceState is added to the package. It can be used to decode a TraceState from a tracestate header string value. (#1937)
    • Added Len method to the TraceState type in the package. This method returns the number of list-members the TraceState holds. (#1937)
    • Creates package that defines a trace exporter that uses a otlptrace.Client to send data. Creates package implementing a gRPC otlptrace.Client and offers convenience functions, NewExportPipeline and InstallNewPipeline, to setup and install a otlptrace.Exporter in tracing .(#1922)
    • Added Baggage, Member, and Property types to the package along with their related functions. (#1967)
    • Added ContextWithBaggage, ContextWithoutBaggage, and FromContext functions to the package. These functions replace the Set, Value, ContextWithValue, ContextWithoutValue, and ContextWithEmpty functions from that package and directly work with the new Baggage type. (#1967)
    • The OTEL_SERVICE_NAME environment variable is the preferred source for, used by the environment resource detector if a service name is present both there and in OTEL_RESOURCE_ATTRIBUTES. (#1969)
    • Creates package implementing an HTTP otlptrace.Client and offers convenience functions, NewExportPipeline and InstallNewPipeline, to setup and install a otlptrace.Exporter in tracing. (#1963)
    • Changes to require a schema URL. The old function is still available as resource.NewSchemaless. This is a breaking change. (#1938)
    • Several builtin resource detectors now correctly populate the schema URL. (#1938)
    • Creates package that defines a metrics exporter that uses a otlpmetric.Client to send data.
    • Creates package implementing a gRPC otlpmetric.Client and offers convenience functions, New and NewUnstarted, to create an otlpmetric.Exporter.(#1991)
    • Added exporter. (#2005)
    • Added exporter. (#2005)
    • Added a TracerProvider() method to the "".Span interface. This can be used to obtain a TracerProvider from a given span that utilizes the same trace processing pipeline. (#2009)


    • Make NewSplitDriver from take variadic arguments instead of a SplitConfig item. NewSplitDriver now automatically implements an internal noopDriver for SplitConfig fields that are not initialized. (#1798)
    • resource.New() now creates a Resource without builtin detectors. Previous behavior is now achieved by using WithBuiltinDetectors Option. (#1810)
    • Move the Event type from the package to the package. (#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 CloudZoneKey to CloudAvailabilityZoneKey in Resource semantic conventions according to spec. (#1871)
    • The StatusCode and StatusMessage methods of the ReadOnlySpan interface and the Span produced by the package have been replaced with a single Status method. This method returns the status of a span using the new Status type. (#1874)
    • Updated ExportSpans method of theSpanExporter interface type to accept ReadOnlySpans instead of the removed SpanSnapshot. This brings the export interface into compliance with the specification in that it now accepts an explicitly immutable type instead of just an implied one. (#1873)
    • Unembed SpanContext in Link. (#1877)
    • Generate Semantic conventions from the specification YAML. (#1891)
    • Spans created by the global Tracer obtained from, prior to a functioning TracerProvider being set, now propagate the span context from their parent if one exists. (#1901)
    • The "".Tracer function now accepts tracer options. (#1902)
    • Move the package to (#1903)
    • Changed to conform to the Contributing guidelines (#1921)
    • Changed to conform to the Contributing guidelines. (#1921)
    • Changed span.End() now only accepts Options that are allowed at End(). (#1921)
    • Changed to conform to the Contributing guidelines. (#1921)
    • Changed to conform to the Contributing guidelines. (#1921)
    • Refactored option types according to the contribution style guide. (#1882)
    • Move the function to the package. This function is preserved for testing purposes where it may be useful to create a TraceState from attribute.KeyValues, but it is not intended for production use. The new ParseTraceState function should be used to create a TraceState. (#1931)
    • Updated MarshalJSON method of the type to marshal the type into the string representation of the TraceState. (#1931)
    • The TraceState.Delete method from the package no longer returns an error in addition to a TraceState. (#1931)
    • Updated Get method of the TraceState type from the package to accept a string instead of an attribute.Key type. (#1931)
    • Updated Insert method of the TraceState type from the package to accept a pair of strings instead of an attribute.KeyValue type. (#1931)
    • Updated Delete method of the TraceState type from the package to accept a string instead of an attribute.Key type. (#1931)
    • Renamed NewExporter to New in the package. (#1985)
    • Renamed NewExporter to New in the package. (#1985)
    • Renamed NewExporter to New in the package. (#1985)
    • Renamed NewExporter to New in the package. (#1985)
    • Renamed NewExporter to New in the package. (#1985)
    • Renamed NewUnstartedExporter to NewUnstarted in the package. (#1985)
    • The package has been moved to to allow for multiple telemetry schema versions to be used concurrently. (#1987)
    • Metrics test helpers in have been moved to (#1988)


    • The is deprecated, use instead. (#1993)
    • The is deprecated, use instead. (#1993)
    • The is deprecated, use instead. (#1993)


    • Removed resource.WithoutBuiltin(). Use resource.New(). (#1810)
    • Unexported types resource.FromEnv, resource.Host, and resource.TelemetrySDK, Use the corresponding With*() to use individually. (#1810)
    • Removed the Tracer and IsRecording method from the ReadOnlySpan in the The Tracer method is not a required to be included in this interface and given the mutable nature of the tracer that is associated with a span, this method is not appropriate. The IsRecording method returns if the span is recording or not. A read-only span value does not need to know if updates to it will be recorded or not. By definition, it cannot be updated so there is no point in communicating if an update is recorded. (#1873)
    • Removed the SpanSnapshot type from the package. The use of this type has been replaced with the use of the explicitly immutable ReadOnlySpan type. When a concrete representation of a read-only span is needed for testing, the newly added SpanStub in the package should be used. (#1873)
    • Removed the Tracer method from the Span interface in the package. Using the same tracer that created a span introduces the error where an instrumentation library's Tracer is used by other code instead of their own. The "".Tracer function or a TracerProvider should be used to acquire a library specific Tracer instead. (#1900)
      • The TracerProvider() method on the Span interface may also be used to obtain a TracerProvider using the same trace processing pipeline. (#2009)
    • The http.url attribute generated by HTTPClientAttributesFromHTTPRequest will no longer include username or password information. (#1919)
    • Removed IsEmpty method of the TraceState type in the package in favor of using the added TraceState.Len method. (#1931)
    • Removed Set, Value, ContextWithValue, ContextWithoutValue, and ContextWithEmpty functions in the package. Handling of baggage is now done using the added Baggage type and related context functions (ContextWithBaggage, ContextWithoutBaggage, and FromContext) in that package. (#1967)
    • The InstallNewPipeline and NewExportPipeline creation functions in all the exporters (prometheus, otlp, stdout, jaeger, and zipkin) have been removed. These functions were deemed premature attempts to provide convenience that did not achieve this aim. (#1985)
    • The exporter has been removed. Use instead. (#1990)
    • The exporter has been removed. Use or instead. (#2005)


    • Only report errors from the "".Environment function when they are not nil. (#1850, #1851)
    • The Shutdown method of the simple SpanProcessor in the package 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/traces as default Jaeger collector endpoint instead of http://localhost:14250. (#1898)
    • Allow trailing and leading whitespace in the parsing of a tracestate header. (#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)
    Source code(tar.gz)
    Source code(zip)
  • v0.20.0(Apr 23, 2021)


    • The OTLP exporter now has two new convenience functions, NewExportPipeline and InstallNewPipeline, 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_PORT These environment variables can be used to override Jaeger agent hostname and port (#1752)
    • Option ExportTimeout was added to batch span processor. (#1755)
    • trace.TraceFlags is now a defined type over byte and WithSampled(bool) TraceFlags and IsSampled() bool methods have been added to it. (#1770)
    • The Event and Link struct types from the package now include a DroppedAttributeCount field 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 OnEnd and ForceFlush post Shutdown. (#1772)
    • Extract resource attributes from the OTEL_RESOURCE_ATTRIBUTES environment variable and merge them with the resource.Default resource as well as resources provided to the TracerProvider and metric Controller. (#1785)
    • Added WithOSType resource 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.executable.path
      • process.command_args
      • process.owner
      • process.runtime.version
      • process.runtime.description
    • Adds and k8s.node.uid attribute keys to the semconv package. (#1789)
    • Added support for configuring OTLP/HTTP and OTLP/gRPC Endpoints, TLS Certificates, Headers, Compression and Timeout via Environment Variables. (#1758, #1769 and #1811)
    • Adds otlpgrpc.WithTimeout option for configuring timeout to the otlp/gRPC exporter. (#1821)


    • The Span.IsRecording implementation from always 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)


    • Span RecordError now records an exception event 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 (#1713)
    • Migrate from using to to match (#1713)
    • The storage of a local or remote Span in a context.Context using its SpanContext is unified to store just the current Span. The Span's SpanContext can now self-identify as being remote or not. This means that "".ContextWithRemoteSpanContext will now overwrite any existing current Span, not just existing remote Spans, and make it the current Span in a context.Context. (#1731)
    • Improve OTLP/gRPC exporter connection errors. (#1737)
    • Information about a parent span context in a "".SpanSnapshot is unified in a new Parent field. The existing ParentSpanID and HasRemoteParent fields are removed in favor of this. (#1748)
    • The ParentContext field of the "".SamplingParameters is updated to hold a context.Context containing the parent span. This changes it to make SamplingParameters conform with the OpenTelemetry specification. (#1749)
    • Modify BatchSpanProcessor.ForceFlush to abort after timeout/cancellation. (#1757)
    • The DroppedAttributeCount field of the Span in the package now only represents the number of attributes dropped for the span itself. It no longer is a conglomerate of itself, events, and link attributes that have been dropped. (#1771)
    • Make ExportSpans in Jaeger Exporter honor context deadline. (#1773)
    • Modify Zipkin Exporter default service name, use default resouce's serviceName instead of empty. (#1777)
    • The package is merged into the package. (#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 TracerProvider implementation and enable the shutdown of the exporter. (#1800)
    • Replace the flush function returned from the Jaeger exporter's convenience creation functions (InstallNewPipeline and NewExportPipeline) with the TracerProvider implementation they create. This enables the caller to shutdown and flush using the related TracerProvider methods. (#1822)
    • Updated the Jaeger exporter to have a default enpoint, http://localhost:14250, for the collector. (#1824)
    • Changed the function WithCollectorEndpoint in the Jaeger exporter to no longer accept an endpoint as an argument. The endpoint can be passed with the CollectorEndpointOption using the WithEndpoint function or by setting the OTEL_EXPORTER_JAEGER_ENDPOINT environment variable value appropriately. (#1824)
    • The Jaeger exporter no longer batches exported spans itself, instead it relies on the SDK's BatchSpanProcessor for this functionality. (#1830)
    • The Jaeger exporter creation functions (NewRawExporter, NewExportPipeline, and InstallNewPipeline) no longer accept the removed Option type as a variadic argument. (#1830)


    • Removed Jaeger Environment variables: JAEGER_SERVICE_NAME, JAEGER_DISABLED, JAEGER_TAGS These environment variables will no longer be used to override values of the Jaeger exporter (#1752)
    • No longer set the links for a Span in that is configured to be a new root. This is unspecified behavior that the OpenTelemetry community plans to standardize in the future. To prevent backwards incompatible changes when it is specified, these links are removed. (#1726)
    • 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 "".RemoteSpanContextFromContext is removed as it is no longer needed. Instead, "".SpanContextFromContex can be used to return the current Span. If needed, that Span's SpanContext.IsRemote() can then be used to determine if it is remote or not. (#1731)
    • The HasRemoteParent field of the "".SamplingParameters is removed. This field is redundant to the information returned from the Remote method of the SpanContext held in the ParentContext field. (#1749)
    • The trace.FlagsDebug and trace.FlagsDeferred constants have been removed and will be localized to the B3 propagator. (#1770)
    • Remove Process configuration, WithProcessFromEnv and ProcessFromEnv, and type from the Jaeger exporter package. The information that could be configured in the Process struct should be configured in a Resource instead. (#1776, #1804)
    • Remove the WithDisabled option from the Jaeger exporter. To disable the exporter unregister it from the TracerProvider or use a no-operation TracerProvider. (#1806)
    • Removed the functions CollectorEndpointFromEnv and WithCollectorEndpointOptionFromEnv from the Jaeger exporter. These functions for retrieving specific environment variable values are redundant of other internal functions and are not intended for end user use. (#1824)
    • Removed the Jaeger exporter WithSDKOptions Option. This option was used to set SDK options for the exporter creation convenience functions. These functions are provided as a way to easily setup or install the exporter with what are deemed reasonable SDK settings for common use cases. If the SDK needs to be configured differently, the NewRawExporter function and direct setup of the SDK with the desired settings should be used. (#1825)
    • The WithBufferMaxCount and WithBatchMaxCount Options from the Jaeger exporter are removed. The exporter no longer batches exports, instead relying on the SDK's BatchSpanProcessor for this functionality. (#1830)
    • The Jaeger exporter Option type is removed. The type is no longer used by the exporter to configure anything. All of the previous configuration these options provided were duplicates of SDK configuration. They have all 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)

    Raw changes made between v0.19.0 and v0.20.0

    02d8bdd5d9163f32c48f4db23bf2e589f89f16c0 (HEAD -> main, tag: v0.20.0, tag: trace/v0.20.0, tag: sdk/v0.20.0, tag: sdk/metric/v0.20.0, tag: sdk/export/metric/v0.20.0, tag: oteltest/v0.20.0, tag: metric/v0.20.0, tag: exporters/trace/zipkin/v0.20.0, tag: exporters/trace/jaeger/v0.20.0, tag: exporters/stdout/v0.20.0, tag: exporters/otlp/v0.20.0, tag: exporters/metric/prometheus/v0.20.0, tag: example/zipkin/v0.20.0, tag: example/prometheus/v0.20.0, tag: example/prom-collector/v0.20.0, tag: example/otel-collector/v0.20.0, tag: example/opencensus/v0.20.0, tag: example/namedtracer/v0.20.0, tag: example/jaeger/v0.20.0, tag: bridge/opentracing/v0.20.0, tag: bridge/opencensus/v0.20.0, upstream/main, origin/main) Release v0.20.0 (#1837) aa66fe75e481c573676e4031bd4f31970e2ce450 OS and Process resource detectors (#1788) 7374d67961bc71103a3d60390d8eb6822cf03c1f Fix Links documents (#1835) 856f5b84014d4ae5e74e772e8f396fd1cbd31167 Add feature request issue template (#1831) 0fdc3d78a2cb9e125da7eae31afac7e8ca524e38 Remove bundler from Jaeger exporter (#1830) 738ef11e3108955b1a2619fd32b39869f2625919 Fix flaky global ErrorHandler delegation test (#1829) e43d9c00bcdf4fcd11d66bb1b16afac60dc0240b Update Default Value for Jaeger Exporter Endpoint (#1824) 0032bd6499c650801eb69fcb020e4177c80116b9 Fix default merging of resource attributes from environment variable (#1785) 96c5e4baacd0fe49020c557e597bfdda6db03d98 Add SpanProcessor example for Span annotation on start (#1733) 543c8144b9c7d4b5bc0dc57328a3bfe383f6d995 Remove the WithSDKOptions from the Jaeger exporter (#1825) 66389ad617a91a16a099e47fcaa74057f30f363d Update function docs in sdk.go (#1826) 70bc9eb391965ba22e4d9f938dc300f7e9fbc128 Adds support for timeout on the otlp/gRPC exporter (#1821) 081cc61d989e2201b0bfd9de314176839976ccad Update Jaeger exporter convenience functions (#1822) 1b9f16d3afdc5fc477f57c47b7578dea578c6e4b Remove the WithDisabled option from Jaeger exporter (#1806) 6867faa0969634c8cee953fa87a3248c6f932f1d Bump actions/cache from v2.1.4 to v2.1.5 (#1818) a2bf04dc367dbd2828423e629975935377ea7a65 Build context pipeline in Jaeger upload process (#1809) 2de86f23c3f93ac3b6eb9e448edd3a30842d331c Remove locking from Jaeger exporter shutdown/export (#1807) 4f9fec29da01e3d9963922ed0c0368efd0ca0d31 Add ExportSpans benchmark to Jaeger exporter (#1805) d9566abea935609972a44f0075cdc51f7c270b9b Fix OTLP testing flake: signal connection from mock collector (#1816) a2cecb6e80f6a0712187b080a97f8efb5a61082a add support for env var configuration to otlp/gRPC (#1811) d616df61f5d163589228c5ff3be4aa5415f5a884 (fix-1527) Fix flaky OTLP exporter reconnect test (#1814) b09df84a24b35cb5f287a501e31d9dec324be5a9 Changes stdout to expose the *sdktrace.TracerProvider (#1800) 04890608968c599b8b9626c5490374a05f64df35 Remove options field from Jaeger exporter (#1808) 6db20e008dc272efaa29bb87d5d8341ad7c06da0 Remove the abandoned Process struct in Jaeger exporter (#1804) 086abf342d8bb60c6fa2dfb68c4bf49a03c31cd2 docs: use test example to document prometheus.InstallNewPipeline (#1796) d0cea04b352a8e0ff0df3acd505c14ceae22d219 Bump from 0.43.0 to 0.44.0 in /exporters/trace/jaeger (#1792) 99c477feb834abb5121c978eb798e7dd3d36538e Fixed typo for default service name in Jaeger Exporter (#1797) 95fd8f50925ffa8992f0fc8a9f31d7b14705ef8f Bump from 1.36.1 to 1.37.0 in /exporters/otlp (#1791) 9b25164481857e6bf7c39eb41be4ef124d69606d Zipkin Exporter: Use default resouce's serviceName as default serivce name (#1777) (#1786) 4d141e475297f177340019314e345e8b5276e2a8 Add and k8s.node.uid to semconv (#1789) 5c99a34cd837d289dea7a230e8ab3d418a76cda7 Fix golint issue caused by incorrect comment (#1795) c5d006c07ab78e6b21690e86c859e5f6752d0086 Update Jaeger environment variables (#1752) 584328080a31963debf9e41e003937d6494934d3 add NewExportPipeline and InstallNewPipeline for otlp (#1373) 7d8e6bd781123cb6df6b035947df3c4558fe3fc3 Zipkin Exporter: Adjust span transformation to comply with the spec (#1688) 2817c09174dcc4772572bfa02daf0c52dd50a8d4 (ro-span) Merge sdk/export/trace into sdk/trace (#1778) c61e654cd492385ed602a4f5b9b37e1b890c74a7 Refactor prometheus exporter tests to match file headers as well (#1470) 23422c56df5578ae4f70f8bd5c0225dbad6be388 Remove process config for Jaeger exporter (#1776) 0d49b592ecafda5ba38b53c2d035d7072cb26e92 Add test to check bsp ignores OnEnd and ForceFlush post Shutdown (#1772) e9aaa04b8f88b0f8158bd27f72e57d33878f5bdd Record links/events attribute drops independently (#1771) 5bbfc22cbc5bdcb65eb5c354c264b33f9faa9d76 Make ExportSpans for Jaeger Exporter honor deadline (#1773) 0786fe3250ab13745ae3d7bb0a448ba0b8de0a2c (default-res) Add Bug report issue templates (#1775) 3c7facee73444f8deef39ba20afb99e13e2e2e75 Add ExportTimeout option to batch span processor (#1755) c6b92d5b20a1f4d6d2ed15f6f9d1d12b0b145fed Make TraceFlags spec-compliant (#1770) ee687ca5c850ca66ff30f2e30f8c401b17c5ddc9 Bump from 0.12.2 to 0.12.3 in /internal/tools (#1774) 52a24774daf69ca391bec9bf16f10d34d5e47bde add support for configuring tls certs via env var to otlp/HTTP (#1769) 35cfbc7e872bbaddadcd51bd0462d8ebf682a6e0 Update precedence of event name in Jaeger exporter (#1768) 33699d242d3b0823345488d8cfd5188781dfda5e Adds semantic conventions for exceptions (#1492) 928e3c38e6795e5fb40d1175ff18b8c7ad61f202 Modify ForceFlush to abort after timeout/cancellation (#1757) 3947cab4be663dbd14c7d78cadad0672262b715f Fix testCollectorEndpoint typo and add tag assertions in jaeger_test (#1753) ecc635dc1d76a53978d3655987e47fcb6096f4b3 add website docs (#1747) 07a8d195e21336a1f6e691d2c322c5c87e88567c Fix Jaeger span status reporting and unify tag keys (#1761) 4fa35c90921c2733a67ac58b9866f6de54f74caa add partial support for env var config to otlp/HTTP (#1758) bf180d0fd21fe95662781ecd9a0e835a08de8f0f improve OTLP/gRPC connection errors (#1737) d575865b1e1f5917c2d90360d94d81cec77ab0fc Fix span IsRecording when not sampling (#1750) 20c93b01ebe6ab0cb68c43eb1d2f10233db96f8b Update SamplingParameters (#1749) 97501a3fee7647a3a14b6d4429d814ffb17c2a67 Update SpanSnapshot to use parent SpanContext (#1748) 604b05cbcf5796c85794272456448c1d0d081547 Store current Span instead of local and remote SpanContext in context.Context (#1731) c61f4b6dfc0387726ab8f6192d62f5d1faa63026 Set @lizthegrey to emeritus status (#1745) b1342fec1ff5139191b568a32478ef45a06cf387 Bump in /internal/tools (#1743) 54e1bd19a0e2b817213fa89cddf5ca2cbe29758c Bump from 0.41.0 to 0.43.0 in /exporters/trace/jaeger (#1741) 4d25b6a27054c8f44ae02df55cea5f7834d720d0 Bump from 1.9.0 to 1.10.0 in /exporters/metric/prometheus (#1740) 0a47b66f95bc50316b7ca7b8009c5f38aaf853df Bump from 1.36.0 to 1.36.1 in /exporters/otlp (#1739) 26f006b806158548c01347f93f044f3e6d715a02 Reinstate @paivagustavo as an Approver (#1734) 382c7ced31a4a07b40f8f115834cab19935759ea Remove hasRemoteParent field from SDK span (#1728) 862a5a68a8a0186b12abc6c2ca42941ee15441b7 Remove setting error status while recording error with Span from oteltest package (#1729) 6defcfdf457ac642bc01c77e91aa8079de3b6682 Remove links on NewRoot spans (#1726) a9b2f85134dc918ff44969ff0b05fe3c5ac1a1f2 upgrade thrift to v0.14.1 in jaeger exporter (#1712) 5a6a854d50840470dbfa5d9e400eed27be7d957f Bump from 1.25.0 to 1.26.0 in /exporters/otlp (#1724) 234862136de0b172d86eb001ca195163e61b141b Migrate to using (#1713) 5d559b4007efd6214cdce1c5503837828be8e36a Remove makeSamplingDecision func (#1711) e24702daad7022ef7606f301859c2dfe3d71e1fa Update the TraceContext.Extract docs (#1720) 9d4eb1f6d39cf644ad2ff92064c4ff1793fac296 Update dates in for 2021 releases (#1723)

    Source code(tar.gz)
    Source code(zip)
  • v0.19.0(Mar 19, 2021)


    • Added Marshaler config option to otlphttp to enable otlp over json or protobufs. (#1586)
    • A ForceFlush method to the "".TracerProvider to flush all registered SpanProcessors. (#1608)
    • Added WithSampler and WithSpanLimits to tracer provider. (#1633, #1702)
    • "".SpanContext now has a remote property, and IsRemote() predicate, that is true when the SpanContext has been extracted from remote context data. (#1701)
    • A Valid method to the "".KeyValue type. (#1703)


    • trace.SpanContext is now immutable and has no exported fields. (#1573)
      • trace.NewSpanContext() can be used in conjunction with the trace.SpanContextConfig struct to initialize a new SpanContext where all values are known.
    • Update the ForceFlush method signature to the "".SpanProcessor to accept a context.Context and return an error. (#1608)
    • Update the Shutdown method to the "".TracerProvider return an error on shutdown failure. (#1608)
    • The SimpleSpanProcessor will now shut down the enclosed SpanExporter and gracefully ignore subsequent calls to OnEnd after Shutdown is called. (#1612)
    • "".WithPusher is replaced with WithExporter to provide consistent naming across project. (#1656)
    • Added non-empty string check for trace Attribute keys. (#1659)
    • Add description to SpanStatus only when StatusCode is set to error. (#1662)
    • Jaeger exporter falls back to resource.Default's if the exported Span does not have one. (#1673)
    • Jaeger exporter populates Jaeger's Span Process from Resource. (#1673)
    • Renamed the LabelSet method of "".Resource to Set. (#1692)
    • Changed WithSDK to WithSDKOptions to accept variadic arguments of TracerProviderOption type in package. (#1693)
    • Changed WithSDK to WithSDKOptions to accept variadic arguments of TracerProviderOption type in package. (#1693)
    • "".NewWithAttributes will now drop any invalid attributes passed. (#1703)
    • "".StringDetector will now error if the produced attribute is invalid. (#1703)


    • Removed serviceName parameter from Zipkin exporter and uses resource instead. (#1549)
    • Removed WithConfig from tracer provider to avoid overriding configuration. (#1633)
    • Removed the exported SimpleSpanProcessor and BatchSpanProcessor structs. These are now returned as a SpanProcessor interface from their respective constructors. (#1638)
    • Removed WithRecord() from trace.SpanOption when creating a span. (#1660)
    • Removed setting status to Error while recording an error as a span event in RecordError. (#1663)
    • Removed jaeger.WithProcess configuration option. (#1673)
    • Removed ApplyConfig method from "".TracerProvider and the now unneeded Config struct. (#1693)


    • Jaeger Exporter: Ensure mapping between OTEL and Jaeger span data complies with the specification. (#1626)
    • SamplingResult.TraceState is correctly propagated to a newly created span's SpanContext. (#1655)
    • The otel-collector example now correctly flushes metric events prior to shutting down the exporter. (#1678)
    • Do not set span status message in SpanStatusFromHTTPStatusCode if it can be inferred from http.status_code. (#1681)
    • Synchronization issues in global trace delegate implementation. (#1686)
    • Reduced excess memory usage by global TracerProvider. (#1687)

    Raw changes made between v0.18.0 and v0.19.0

    2b4fa9681bd0c69574aaa879039382002b220204 (HEAD -> main, tag: v0.19.0, tag: trace/v0.19.0, tag: sdk/v0.19.0, tag: sdk/metric/v0.19.0, tag: sdk/export/metric/v0.19.0, tag: oteltest/v0.19.0, tag: metric/v0.19.0, tag: exporters/trace/zipkin/v0.19.0, tag: exporters/trace/jaeger/v0.19.0, tag: exporters/stdout/v0.19.0, tag: exporters/otlp/v0.19.0, tag: exporters/metric/prometheus/v0.19.0, tag: example/zipkin/v0.19.0, tag: example/prometheus/v0.19.0, tag: example/prom-collector/v0.19.0, tag: example/otel-collector/v0.19.0, tag: example/opencensus/v0.19.0, tag: example/namedtracer/v0.19.0, tag: example/jaeger/v0.19.0, tag: bridge/opentracing/v0.19.0, tag: bridge/opencensus/v0.19.0, upstream/main, origin/main) Release v0.19.0 (#1710) 4beb70416e1272c578edfe1d5f88a3a2236da178 sdk/trace: removing ApplyConfig and Config (#1693) 1d42be1601e2d9bbd1101780759520e3f3960a29 Rename WithDefaultSampler TracerProvider option to WithSampler and update docs (#1702) 860d5d86e7ace12bf2b2ca8e437d2d4fc68a6913 Add flag to determine whether SpanContext is remote (#1701) 0fe65e6bd2b3fad00289427e0bac1974086d4326 Comply with OpenTelemetry attributes specification (#1703) 888843519dae308f165d1d20c095bb6352baeb52 Bump from 0.40.0 to 0.41.0 in /exporters/trace/jaeger (#1700) 345f264a137ed7162c30d14dd4739b5b72f76537 (global-docs) breaking(zipkin): removes servicName from zipkin exporter. (#1697) 62cbf0f240112813105d7056506496b59740e0c2 Populate Jaeger's Span.Process from Resource (#1673) 28eaaa9a919d03227856d83e2149b85f78d57775 Add a test to prove the Tracer is safe for concurrent calls (#1665) 8b1be11a549eefb6efeda2f940cbda70b3c3d08d Rename resource pkg label vars and methods (#1692) a1539d44857a29ea43c9da9bc95e0229f79c2663 OpenCensus metric exporter bridge (#1444) 77aa218d4d8fa2ebda14a7a0b58db22fd20398b7 Fix issue #1490, apply same logic as in the SDK (#1687) 9d3416cc915ba4bfe0e7328da24bb6a3000549f9 Fix synchronization issues in global trace delegate implementation (#1686) 58f69f091e61db2ca7a8ca31d518c5de02411184 Span status from HTTP code: Do not set status message if it can be inferred (#1681) 9c305bde9c27bc2252f13ca21fc869918601b124 Flush metric events prior to shutdown in OTLP example (#1678) 66b1135af4afdd1740d1c0738b9e2c5e6fe4e937 Fix CHANGELOG (#1680) 90bd4ab50c6e85743f2b8f3a1768a5afceeb1fc0 Update employer information for maintainers (#1683) 368419133859dcd7a97a881ce57082d1c0a3fbfe Remove WithRecord() option from trace.SpanOption when starting a span (#1660) 65c7de206921411cc4220c107bcad893a12033c5 Remove trace prefix from NoOp src files. (#1679) e88a091a72e4cf4c3f3a6d6e4b440d757bd3ecac Make SpanContext Immutable (#1573) d75e268053a7a3fc19394cb48a98d22fd15eb36a Avoid overriding configuration of tracer provider (#1633) 2b4d5ac3293eee30536754a5d5efec5124433ded Bump in /internal/tools (#1671) 150b868d02c8b9844f3db446d91267ad4e75beb9 Bump from 0.5.4 to 0.5.5 (#1667) 76aa924e75b22f95bb189337fb9d46b64bc66c53 Fix the examples target info messaging (#1676) a3aa9fdab061197aae67ac4a2c57712cfe5ef38e Bump from 0.12.1 to 0.12.2 in /internal/tools (#1672) a5edd79e312675f0cccf75aa324495205c95fe73 Removed setting error status while recording err as span event (#1663) e9814758278b57ef5bd939aa6fcb6a1a10772db0 chore(zipkin): improves zipkin example to not to depend on timeouts. (#1566) 3dc91f2d76146ac6a08012b8c451cc00e59ef481 Add ForceFlush method to TracerProvider (#1608) bd0bba43b5a1edb1da059760462fa15d81ff7cd9 exporter: swap pusher for exporter (#1656) 569048591c2661808ebddbd953c41c6808289454 Update the SimpleSpanProcessor (#1612) a7f7abac654d0c3fc93732c7f47c2bef05976eb4 SpanStatus description set only when status code is set to Error (#1662) 05252f40d807999388813afb2802918a38cc0e8a Jaeger Exporter: Fix minor mapping discrepancies (#1626) 238e7c61ba9e5b2ca3f66f20a5db5711e062f36e Add non-empty string check for attribute keys (#1659) e9b9aca8a6dc8cd0b13ffea4f7a26186f4b316fd Add tests for propagation of Sampler Tracestate changes (#1655) 875a25835fcfcddd61e94d87b1a0b14db4d5a0e5 Add docs on when reviews should be cleared (#1556) 7153ef2dc294fbfebaafd355ab98050b4181ff1f Add HTTP/JSON to the otlp exporter (#1586) 62e2a0f766d001e48867866ba7293565b9caa0c0 Unexport the simple and batch SpanProcessors (#1638) 992837f195eacbd84f0596bfaa79470dba7408e5 Add TracerProvider tests to oteltest harness (#1607)

    Source code(tar.gz)
    Source code(zip)
  • v0.18.0(Mar 3, 2021)


    • Added resource.Default() for use with meter and tracer providers. (#1507)
    • AttributePerEventCountLimit and AttributePerLinkCountLimit for SpanLimits. (#1535)
    • Added Keys() method to propagation.TextMapCarrier and propagation.HeaderCarrier to adapt http.Header to this interface. (#1544)
    • Added code attributes to package. (#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 |


    • Replaced interface oteltest.SpanRecorder with its existing implementation StandardSpanRecorder (#1542).
    • Default span limit values to 128. (#1535)
    • Rename MaxEventsPerSpan, MaxAttributesPerSpan and MaxLinksPerSpan to EventCountLimit, AttributeCountLimit and LinkCountLimit, and move these fields into SpanLimits. (#1535)
    • Renamed the otel/label package to otel/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 than WithBatchTimeout(5). (#1621)
    • Prevent end-users from implementing some interfaces (#1575)


    • Removed attempt to resample spans upon changing the span name with span.SetName(). (#1545)
    • The test-benchmark is no longer a dependency of the precommit make target. (#1567)
    • Removed the test-386 make target. This was replaced with a full compatibility testing suite (i.e. multi OS/arch) in the CI system. (#1567)


    • 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 are now setup explicitly to be sequential (#1578). (#1579)
    • Validate tracestate header keys with vedors according to the W3C TraceContext specification (#1475). (#1581)
    • The OTLP exporter includes related labels for translations of a GaugeArray (#1563). (#1570)

    Raw changes made between v0.17.0 and v0.18.0

    bb4c297eb36f6af082bfa1d3216d33bd90da05f0 Pre release v0.18.0 (#1635) 712c3dccf805f2397a4b15ce467e234c7b515c18 Fix makefile ci target and coverage test packages (#1634) 841d2a5885b37fc25fe77e72dca3b0f6bac945b2 Rename local var new to not collide with builtin (#1610) 13938ab5a867b7840c6c829b74a9ab39b828730e Update SpanProcessor docs (#1611) e25503a00edef6baf2b3deb1a5884d4501e08dcf Add compatibility tests to CI (#1567) 1519d959829b2fd7a7a1b9b904b57235eb54e114 Use reasonable interval in sdktrace.WithBatchTimeout (#1621) 7d4496e0fefc99cfa70b86a09e3f8af8eae537f6 Pass metric labels when transforming to gaugeArray (#1570) 6d4a5e0df334546987f7d0583e0e86cdf01f2e66 Bump from 1.35.0 to 1.36.0 in /exporters/otlp (#1619) a93393a0d754d3b16227fbfa9df4f37b07351028 Bump in /example/prom-collector (#1620) e499ca86b7ef54b42f6dd684ccbf73f226af10bd Fix validation for tracestate with vendor and add tests (#1581) 43886e52f38de640d5f7abf6d9622fc1483ce649 Make timestamps sequential in lastvalue agg check (#1579) 37688ef67616aa5a99e27fb03320fd0dc87e590e revent end-users from implementing some interfaces (#1575) 85e696d20b9a6fee781fd42f68fe1b447559dc5c Updating documentation with an working example for creating NewExporter (#1513) 562eb28b7169cd83959fdb7fe1dddec74ee44ea1 Unify the Added sections of the unreleased changes (#1580) c4cf1aff6bba39f4e0384f5223d33647f9973a77 Fix Windows build of Jaeger tests (#1577) 4a163beaa103fd57b4cf6e07dc19781ab2fda4a9 Fix stdout TestStdoutTimestamp failure with sleep (#1572) bd4701eb935b94b0cfa21f925410fcb13cc1e389 Stagger timestamps in exact aggregator tests (#1569) b94cd4b24917d0099eb0ddee6f9d6be0bddee469 add code attributes to semconv package (#1558) 78c06cef3537999b4692c9f88dfb91a6451337a0 Update docs from gitter to slack for communication (#1554) 1307c9116265619812781cf5b02898acabc1ef83 Remove vendor exclude from license-check (#1552) 5d2636e5bfa8538c8f36b8f11145d96351dbcd6b Bump in /internal/tools (#1565) d7aff47338ec7f6957a15262721da7fdfe5524ca Vendor Thrift dependency (#1551) 298c5a142f4e4eb9eb9f249ff4d2fdff63bbd702 Update span limits to conform with OpenTelemetry specification (#1535) ecf65d7968225482a4d50e4955d6bc826119b49c Rename otel/label -> otel/attribute (#1541) 1b5b66213656691e3528909fe39fa030eae15423 Remove resampling on span.SetName (#1545) 8da5299621bd6b2de185a1e06c93289a96b1af25 fix: grpc reconnection (#1521) 3bce9c97f800c12a791e78a1611991818f9b4db6 Add Keys() method to propagation.TextMapCarrier (#1544) 0b1a1c7237f3172586bb6332397997bf71e27de0 Make oteltest.SpanRecorder into a concrete type (#1542) 7d0e3e52b69b2ba62ef617719fba5c3ca2aea86b SDK span no modification after ended (#1543) 7de3b58ce9e893f0f1f8214d63329ac82d759327 Remove extra labels types (#1314) 73194e44dbe9ecb2ba68f80b9a687edc66ce4d2d Bump from 0.39.0 to 0.40.0 in /exporters/trace/jaeger (#1536) 8fae0a644ad30b2f45f0e30cdea2efd7c8654ccf Create resource.Default() with required attributes/default values (#1507)

    Source code(tar.gz)
    Source code(zip)
  • v0.17.0(Feb 15, 2021)


    • Rename project default branch from master to main.
    • Reverse order in which Resource attributes 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)

    9b242bc4015d82acd63614a9e9ddba0cd1bceca8 (upstream/main, origin/main, main) Organize API into Go modules based on stability and dependencies (#1528) e50a1c8cecb8c584bdfada6cb21fe0b173a22646 Bump actions/cache from v2 to v2.1.4 (#1518) a6aa7f00d02eb0f97056c51c439ef2874ba2410d Bump from 0.38.0 to 0.39.0 in /exporters/trace/jaeger (#1517) 38efc875cf1c9e9ae72d3021b0a813ed7fa3ce00 Code Improvement - Error strings should not be capitalized (#1488) 6b340501b3b722ca36c4f9ad23678ed0a9783df3 Update default branch name (#1505) b39fd052d472c9100286cd2af61bef735bd5c7fd nit: Fix comment to be up-to-date (#1510) 186c29539f41ce5aa93b732aa70f08d50338164d Fix golint error of package comment form (#1487) 9308d6628ef77b38a9383f13dddaf7ddfe83b882 Bump from 0.37.0 to 0.38.0 in /exporters/trace/jaeger (#1506) 1952d7b6af6bbd1de70fad8abfc2585b750b8fc4 Reverse order of attribute precedence when merging two Resources (#1501) ad7b4715860b3b40abc876093c075bf765a6e120 Remove build flags for runtime/trace support (#1498) 4bf4b69050b7bcfe8c414522d051ebe5566c983d Remove inaccurate and unnecessary import comment (#1481) 7e19eb6a76deb9cc46b33604ce3dee919d398e62 Bump from 0.36.0 to 0.37.0 in /exporters/trace/jaeger (#1504) c6a4406a586feeb14a046c31781899c073d42389 Bump in /internal/tools (#1503) 9524ac095466565e01746600da3d83f27220a5da (upstream/master, origin/master, origin/HEAD) Update workflows to include main branch as trigger (#1497) c066f15ed74fec52c4755014bfcf2bdfb8e0e661 Bump from 1.3.1 to 1.3.2 in /internal/tools (#1478) 894e024027a47cad15c6a6a49449e100f4bfb63a Bump in /internal/tools (#1477) 71ffba39d1f96df023a31df14aa57c99f53017d0 Bump from 1.34.0 to 1.35.0 in /exporters/otlp (#1471) 515809a845a9f5991c3436ce0d8e5d2aa535152a Bump from 0.12.0 to 0.12.1 in /internal/tools (#1472) 3e96ad1ee68eebf5ea4726af58162591a326b32e gitignore: remove unused example path (#1474) c56227771d4c3551cf4eec84a3a6d1881f5dbd9f Histogram aggregator functional options (#1434) 0df8cd620c46567b38a70f1f1a8e968d0a806c06 Rename Makefile.proto to avoid interpretation as proto file (#1468) 979ff51f2229b9a4c66dda798b14a778a9c636a9 Bump from 1.6.1 to 1.7.0 (#1453) 1df8b3b8812a296c68fedb14d67de4ec00f4394b Bump from 1.3.1 to 1.3.2 in /exporters/otlp (#1456) 4c30a90a45f28be483d96565ef3fb35222de1d69 Bump from 1.6.1 to 1.7.0 in /sdk (#1455) 5a9f8f6e4e6c472179585ba743ffb14de372d973 Bump from 1.6.1 to 1.7.0 in /exporters/stdout (#1454) 7786f34cff0cd9e3b40505c9460cf53014cb044c Bump from 1.6.1 to 1.7.0 in /exporters/trace/zipkin (#1457) 4352a7a671347be0c676240bdb60cf87f85f8360 Bump from 1.6.1 to 1.7.0 in /exporters/otlp (#1460) 6990b3b3ea1f792e3e9ac90694dec1b74171b80f Bump from 1.6.1 to 1.7.0 in /exporters/metric/prometheus (#1461) 7af40d2221f0ccdc1cec53b960e55d5767c4c14a Bump from 1.6.1 to 1.7.0 in /exporters/trace/jaeger (#1463) f16f18929b778b2430dca66ccc50ffed1f25300b Bump in /example/otel-collector (#1465) fe363be3994012a06e58c713ed0f6e60a2193151 Move Span Event to API (#1452) 439222408b10859b9b92c9bd410041507a8bbf14 Bump in /example/prom-collector (#1466)

    Source code(tar.gz)
    Source code(zip)
  • v0.16.0(Jan 14, 2021)


    • Add the ReadOnlySpan and ReadWriteSpan interfaces to provide better control for accessing span data. (#1360)
    • NewGRPCDriver function returns a ProtocolDriver that maintains a single gRPC connection to the collector. (#1369)
    • Added documentation about the project's versioning policy. (#1388)
    • Added NewSplitDriver for 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)


    • Rename internal/testing to internal/internaltest. (#1449)
    • Rename export.SpanData to export.SpanSnapshot and use it only for exporting spans. (#1360)
    • Store the parent's full SpanContext rather than just its span ID in the span struct. (#1360)
    • Improve span duration accuracy. (#1360)
    • Migrated CI/CD from CircleCI to GitHub Actions (#1382)
    • Remove duplicate checkout from GitHub Actions workflow (#1407)
    • Metric array aggregator renamed exact to match its aggregation.Kind (#1412)
    • Metric exact aggregator includes per-point timestamps (#1412)
    • Metric stdout exporter uses MinMaxSumCount aggregator for ValueRecorder instruments (#1412)
    • NewExporter from exporters/otlp now takes a ProtocolDriver as 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)
    • SamplingResult now passed a Tracestate from the parent SpanContext (#1432)
    • Moved gRPC driver for OTLP exporter to exporters/otlp/otlpgrpc. (#1420)
    • The TraceContext propagator now correctly propagates TraceState through the SpanContext. (#1447)
    • Metric Push and Pull Controller components are combined into a single "basic" Controller:
      • WithExporter() and Start() to configure Push behavior
      • Start() is optional; use Collect() and ForEach() for Pull behavior
      • Start() and Stop() accept Context. (#1378)


    • Remove errUninitializedSpan as 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)


    • BatchSpanProcessor.Shutdown() will now shutdown underlying export.SpanExporter. (#1443)

    Raw changes made between v0.15.0 and v0.16.0

    0aadfb27bc9e0d6fc0008001720aa5d466c06156 Prepare release v0.16.0 (#1464) 207587b6ab2d658ad39774d6a3cc7fa2f5c6c52b Metric histogram aggregator: Swap in SynchronizedMove to avoid allocations (#1435) c29c6fd1adf4f9c1faf8165fe326f507efd84425 Shutdown underlying span exporter while shutting down BatchSpanProcessor (#1443) dfece3d2b97fd38ac9182db978dbacd953e58f4a Combine the Push and Pull metric controllers (#1378) 74deeddd2608efffe53a2cd9163314af3015eacb Handle tracestate in TraceContext propagator (#1447) 49f699d65742e144cf19b5dd28f3d3a0891bf200 Remove Quantile aggregation, DDSketch aggregator; add Exact timestamps (#1412) 9c949411ce58356a4553732733e5a7144860d1e0 Rename internal/testing to internal/internaltest (#1449) 8d8098146547e28913abfb3f1b228a99050c5563 Move gRPC driver to a subpackage and add an HTTP driver (#1420) 9332af1b460196074d8aa00fb73b3568f6274a29 Bump in /internal/tools (#1445) 5ed96e92446d2d58d131e0672da613a84c16af7a Update exporters/otlp (#1441) bc9cb5e3541f9f8eae6c9e713c3b97b47442f051 Switch CircleCI badge to GitHub Actions (#1440) 716ad08200c47997cddbf9457362351087248405 Remove CircleCI config (#1439) 0682db1e2312731a1c0461e9710a586693f229f3 Adding Security Workflows to GitHub Actions (2/2): gosec workflow (#1429) 11f732b85c7355794030979f8580861fe922fefe Adding Security Workflows to GitHub Actions (1/2): codeql workflow (#1428) 40f1c0039d394231e25031bee264e7dab7f479e2 Add Tracestate into the SamplingResult struct (#1432) db06c8d1cb3c1646098295f6007f6d6128a382c7 Flush metric events before shutdown in collector example (#1438) f6f458e1554dc5221c133155ae8acf64d5054663 Fix golint issue caused by typo in trace.go (#1436) fe9d1f7ec5265272db4cb6bdc959dbffbf22c56c Use uint64 Count consistently in metric aggregation (#1430) 3a337d0b79a568d13c3360e295814b1794df4e32 Bump in /internal/tools (#1433) 1e4c832189e9ace709423f9eca01a0fc3f8ec8a0 cleanup: drop the removed examples in gitignore (#1427) 5c9221cf5379c051249a743f6aee4c7115d6e4d7 Unify endpoint API that related to OTel exporter (#1401) 045c3ffeada5342e34df7759348c4813b3ebceec Build scripts: Replace mapfile with read loop for old bash versions (#1425) 2def8c3db0d988be141457010cae7ee77d370dd9 Add Versioning Documentation (#1388) 6bcd1085d318acc2c8760ee6969eec18035ca1d2 Bump from 0.11.2 to 0.12.0 in /internal/tools (#1424) 38e76efe997331ca747b7eff6c9bb656c6210c86 Add a split protocol driver for otlp exporter (#1418) 439cd31389fec380a160471feb55143df7b6c6df Add TraceState to SpanContext in API (#1340) 35215264dc5f67356cff035c29e168794333bcad Split connection management away from exporter (#1369) add9d933f6a32dd1d4e4fb9624bc68d62ad46ced Bump from 1.8.0 to 1.9.0 in /exporters/metric/prometheus (#1414) 93d426a1a97fedf6663548baf4f1e2db300f0e30 Add @dashpole as a project Approver (#1410) 6fe20ef393446b9a15ceb45501475727fbb579cd Fix small typo (#1409) b22d0d70d9c0cc145614aa8c32ed38dec660ee69 Mention the getting started guide (#1406) 3fb80fb2df8e7b41c4c90390f7b6670edddbf0e6 Fix duplicate checkout action in GitHub workflow (#1407) 2051927b9bb80a36e507cb694d39478727f22b17 Correct CI workflow syntax (#1403) f11a86f7809cb38d46c4cff5934ea0f46af90d8e Fix typo in comment (#1402) bdf87a78965644e2e3444035eb13068972bb7d07 Migrate CircleCI ci.yml workflow to GitHub Actions (#1382) 4e59dd1f01b27cbc4b0ce4d4c4f9059c14806c66 Bump from 1.32.0 to 1.34.0 in /example/otel-collector (#1400) 83513f70f30ef52b466bb7f0f3aaf6a96e623906 Bump from 0.32.0 to 0.36.0 in /exporters/trace/jaeger (#1398) a354fc4152cea4a93cdfb8ecc12960b589f93fa6 Bump from 1.7.1 to 1.8.0 in /exporters/metric/prometheus (#1397) 3528e42c931c66c3bc74cb3fa03fab4d88875a64 Bump from 1.32.0 to 1.34.0 in /exporters/otlp (#1396) af114baf6b5cad9c71adc01d277d173bc71e6d44 Call otel.Handle with non-nil errors (#1384) c3c4273eccd7bfab8fcaa44ccd6be6f9dd532efd Add RO/RW span interfaces (#1360)

    Source code(tar.gz)
    Source code(zip)
  • v0.15.0(Dec 11, 2020)


    • The WithIDGenerator TracerProviderOption is added to the package to configure an IDGenerator for the TracerProvider. (#1363)


    • The Zipkin exporter now uses the Span status code to determine. (#1328)
    • NewExporter and Start functions in now receive context.Context as a first parameter. (#1357)
    • Move the OpenCensus example into example directory. (#1359)
    • Moved the SDK's internal.IDGenerator interface in to the sdk/trace package to enable support for externally-defined ID generators. (#1363)
    • Bump from 0.5.3 to 0.5.4 (#1374)
    • Bump in /internal/tools (#1375)


    • Metric SDK SumObserver and UpDownSumObserver instruments correctness fixes. (#1381)

    Raw changes made between v0.14.0 and v0.15.0

    61e07a0d629ff6a0c8f7054205972adc09540a53 (HEAD -> master, tag: v0.15.0, tag: sdk/v0.15.0, tag: exporters/trace/zipkin/v0.15.0, tag: exporters/trace/jaeger/v0.15.0, tag: exporters/stdout/v0.15.0, tag: exporters/otlp/v0.15.0, tag: exporters/metric/prometheus/v0.15.0, tag: example/zipkin/v0.15.0, tag: example/prometheus/v0.15.0, tag: example/otel-collector/v0.15.0, tag: example/opencensus/v0.15.0, tag: example/namedtracer/v0.15.0, tag: example/jaeger/v0.15.0, tag: example/basic/v0.15.0, tag: bridge/opentracing/v0.15.0, tag: bridge/opencensus/v0.15.0, upstream/master, origin/master, origin/HEAD) Release v0.15.0 (#1392) 599c0803ccf2113875e7934b6bf3fdbf5733494b Fix typo in readme (#1390) eb28005e2fad10fe050b777a585b64be8cf593cb Metric Accumulator fix for SumObservers (#1381) 970755bd087801619575b7473806356818e24e15 Enable support for externally-defined ID generators (#1363) 0021ab0a3a47e4abb116bdb227fd77e912006b9e Rework proto generation (#1371) 787e3f457a07e3659a7c08a0bd886505da1affab chore(zipkin-exporter): relay on the status code for the request but still read the response body. (#1328) 66db2d845ba72bae8fcc1b3d43965470cbe8f5c3 (johananl/master) Build examples last (#1370) 958041ddf619a1282e92cfd4c50859f2bc71f9c8 Bump in /internal/tools (#1375) e1ff2d15cfdebe3516d241048f40baa49980f60f Bump from 0.5.3 to 0.5.4 (#1374) 5d0372dd2ed447fed6fd036f219d208f77d5468d Fix typo in comment (#1377) 55ff27787da2cdbdd5cde3564e57841267757e58 Fix golint issue caused by typo (#1372) 5a728db2e9713b66615943129568834c5af86ff8 Another batch of cleanups in otlp exporter (#1357) e0819780f9d4ea1e8169109cd71b848fe08f788c Move opencensus example to the example directory (#1359)

    Source code(tar.gz)
    Source code(zip)
  • v0.14.0(Nov 20, 2020)


    • An EventOption and the related NewEventConfig function are added to the package to configure Span events. (#1254)
    • A TextMapPropagator and associated TextMapCarrier are added to the package to test TextMap type propagators and their use. (#1259)
    • SpanContextFromContext returns SpanContext from context. (#1255)
    • DeploymentEnvironmentKey added to package. (#1323)
    • Add an OpenCensus to OpenTelemetry tracing bridge. (#1305)
    • Add a parent context argument to SpanProcessor.OnStart to follow the specification. (#1333)
    • Add missing tests for sdk/trace/attributes_map.go. (#1337)


    • Move the package into with the following changes. (#1229) (#1307)
      • ID has been renamed to TraceID.
      • IDFromHex has been renamed to TraceIDFromHex.
      • EmptySpanContext is removed.
    • Move the package into (#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 Kind type from the package was renamed to InstrumentKind to more specifically describe what it is and avoid semantic ambiguity. (#1240)
    • The MetricKind method of the Descriptor type in the package was renamed to Descriptor.InstrumentKind. This matches the returned type and fixes misuse of the term metric. (#1240)
    • Move test harness from the package into (#1241)
    • Move the package into as part of #964. (#1252)
    • Move the package into as part of #1303. (#1321)
    • Move the package into as a part of #1303. (#1316)
    • Move the Number type (together with related functions) from package into as a part of #1303. (#1316)
    • The function signature of the Span AddEvent method in is updated to no longer take an unused context and instead take a required name and a variable number of EventOptions. (#1254)
    • The function signature of the Span RecordError method in is updated to no longer take an unused context and instead take a required error value and a variable number of EventOptions. (#1254)
    • Move the package to (#1262) (#1330)
    • Move the Version function from to (#1330)
    • Rename correlation context header from "otcorrelations" to "baggage" to match the OpenTelemetry specification. (#1267)
    • Fix Code.UnmarshalJSON to work with valid JSON only. (#1276)
    • The resource.New() method changes signature to support builtin attributes and functional options, including telemetry.sdk.* and semantic conventions; the former method is renamed resource.NewWithAttributes. (#1235)
    • The Prometheus exporter now exports non-monotonic counters (i.e. UpDownCounters) as gauges. (#1210)
    • Correct the Span.End method documentation in the otel API 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.HTTPUrlKey to semconv.HTTPURLKey. (#1338)


    • The ErrInvalidHexID, ErrInvalidTraceIDLength, ErrInvalidSpanIDLength, ErrInvalidSpanIDLength, or ErrNilSpanID from the package are unexported now. (#1243)
    • The AddEventWithTimestamp method on the Span interface in is removed due to its redundancy. It is replaced by using the AddEvent method with a WithTimestamp option. (#1254)
    • The MockSpan and MockTracer types are removed from Tracer and Span from the same module should be used in their place instead. (#1306)
    • WorkerCount option is removed from (#1350)


    • Rename MergeItererator to MergeIterator in the package. (#1244)
    • The packages global TextMapPropagator now delegates functionality to a globally set delegate for all previously returned propagators. (#1258)
    • Fix condition in label.Any. (#1299)
    • Fix global TracerProvider to pass options to its configured provider. (#1329)
    • Fix missing handler for ExactKind aggregator in OTLP metrics transformer (#1309)

    Raw changes made between v0.13.0 and v0.14.0

    575df22b7973e921dcbc52df61701e8f62f69a83 (HEAD -> master, tag: v0.14.0, tag: sdk/v0.14.0, tag: exporters/trace/zipkin/v0.14.0, tag: exporters/trace/jaeger/v0.14.0, tag: exporters/stdout/v0.14.0, tag: exporters/otlp/v0.14.0, tag: exporters/metric/prometheus/v0.14.0, tag: example/zipkin/v0.14.0, tag: example/prometheus/v0.14.0, tag: example/otel-collector/v0.14.0, tag: example/namedtracer/v0.14.0, tag: example/jaeger/v0.14.0, tag: example/basic/v0.14.0, tag: bridge/opentracing/v0.14.0, tag: bridge/opencensus/v0.14.0, tag: bridge/opencensus/examples/bridge/v0.14.0, upstream/master, origin/master, origin/HEAD) Release v0.14.0 (#1355) 34aa6816c1e568dc910344fd5eb10e87b42c901d revert part of #1334. Move binary propagation to contrib (#1353) 6eb68013b5afc4b68f38e6a8e01d4b170dcf1476 Some cleanups in otlp exporter (#1350) 5b5b4ab1ea9ecec5cb6d3a9d8de9c693aa5455b2 Update OTLP to v0.6.0 (#1354) 4619c068e28176797b333c5a8eaf64206332f8f6 Add opencensus bridge example and readme (#1348) 2c2f9852fef1d85d8a08e6d763777ccea3797648 Add missing tests for attributesMap (#1337) fd3c82bec5fc8012da1fdd0402149b38bd8ec59d support exact kind in OTLP metrics exporter (#1309) c857a3da18cb85194b8906531684e07a82327850 Pass options to configured TracerProvider (#1329) 7022c12bfce8bad1de7244f9c7b690dbff64a239 Update the package docs for the new API layout (#1346) bbc9465ddb47b3791db8213d0b47e6d4c9be8b1b Add opencensus binary propagation to bridge (#1334) 73a05393a0a1824565e03cc00f3ea6dcd69bbf6e chore(semconv): Add PR number to changelog (#1323) 3207770f88d4ef840a3aae3d958fbc966e3e7351 Set resource attribute to "opentelemetry" (#1332) 380d9455fd1bf1735c6d5510f1e428d1a9fd5036 s/HTTPUrlKey/HTTPURLKey/ in semconv (#1338) 3d6e8b5078443c822c3800e89bdb84289d82b084 Move Version function and code from global to toplevel (#1330) 20c78fed0ab37829680e98147e3be1f6e059bc25 Bump from 0.5.2 to 0.5.3 (#1339) 070b657c215f4cd2087492a7d6a800a82c61f5c7 Add parent context to SpanProcessor.OnStart (#1333) 63a11144cf5a5fd185e40eba7dd22bce2b2980ef Move baggage and propagation to separate packages (#1325) f6df5df9388279ee4627ed9e4999f0b83d09d1a8 add opencensus tracing bridge (#1305) 27aa1f601124468cde6c796935460435b6723700 update go documentation badge image (#1322) 75d4911c95a66b3ed4e869790c0b62d76b10d326 Move metric code to a separate package (#1321) 386331a472deda26020f125501cba346cacf0193 Prepare to move metrics code to separate subpackage (#1316) f9984f2d4ec2a09f42358406d3bac8d83b589494 Support configurable AggregationTemporality in exporters; add OTLP missing sum point temporality/monotonic fields (#1296) 3a06b393b98134c2db0b7af9baa2b01a2aeadb3c Update span collection limits to 1000 (#1318) b7508da6fa3f7c76f51c65de9db47123aafd1876 Export non monotonic counters as gauge values from the prometheus exporter (#1269) 757030dc78051d90dd1c33c1d292c4d4e8fa63cb Update Span End method documentation (#1310) a354c026b64309830d152572a4be1afbc3d96d22 Clean up SDK span field docs (#1312) 1041adaf58b889eecf5262a599bee6975c3f3e7a Bump in /internal/tools (#1315) 32685019109ef57e44919ad7d7ed6e016df3eee6 Move tracing code to trace package (#1307) 9ac3a08eef14d96687edb260e2c27114a658d6b7 Remove MockSpan and MockTracer (#1306) c9ae670c8a96d779e63cbb31d8644ec1b0706a19 Fix zipkin example module name (#1308) e22a48de5a1353fb5450783ca9bb5edf651e9849 chore: adds vanity import for files that don't have it. (#1297) 911d7be43dc815d9fe5a87d8751243e2450692fc Check marshalled value instead of iface (#1299) 238d2c015ceeb03faa4f9c230916027a1735f098 Bump in /internal/tools (#1301) 187adeb25163b4deb529b770649ec5d0afd21206 Change resource.New() to use functional options; add builtin attributes for (host., telemetry.sdk.) (#1235) 034195692aa8cf728c01af2621440c068610fd4a Update README and documentation to better communicate pre-GA state (#1281) 23e32b19ec227702d6f9d62b1b8aec69c075d21b Minor readability fixes to the Jeager example (#1282) d98ad1042ccf788482b47e7c75ef3b9cf9ad6223 Fix Code.UnmarshalJSON to work with valid json only (#1276) a6b31e0da1ad6c0e7e66624386a4fc8fd932f521 Update SpanProcessor Shutdown with context and error (#1264) 412ee70ad27befbdb0c0c1071f07b0d17767ce62 Fix typo in example (#1278) da3f60ac96779dee397a46a450bd3de7b929c56b Bump in /internal/tools (#1274) d75ccbb378461144d53c878b043ff9f18b44d8ef Add a Shutdown method to sdk TraceProvider (#1227) 230bdd10f0d3a2d00eaebcb153a5341f0882548f Add SpanContextFromContext() (#1255) c9bc90b3e40247aa20dde76ef74b93dd6b466ae9 Renaming otcorrelations header to baggage (#1267) d6dd84f6fa740ddfcf028dab0d79c07513b072cb Move the otel/api/global package to otel/global (#1262) 818c7b14b39eccf708aec8ea45e94c94c3ba9208 Move metric api package into otel (#1252) 90de306c2542309a1576f7b0e5bad5039e8932a5 Add global propagator testing and other fixes (#1260) b7197d568f02a0cbc29cc4472300674188238722 Update the internal global TextMapPropagator (#1261) ec300b28ada49f907c9e65b8140573fa441eba69 Update Span API event methods (#1254) 786a78ea367796751e301d9b3d178c0c8a1c97b3 Add delegating global propagator (#1258) 8fd4b2665503854067c8ae5a6afd4e2eef864daf Add oteltest TextMap propagator and carrier (#1259) 8ed55f5980611f2e1effe471f9946aba263f255d Update README with Org GA project board (#1253) 4ea0a208851651020cf1a65b7f139e63f0157816 Update semconv comments (#1249) 5c21e88fde7869105120bb1f5b23dbad72d83638 Update documentation for otel/oteltest (#1248) 396dd6053cbb7643d04fe1a468e1994f40ee44ba (spanfromcontext) Rename Kind from the api/metric package (#1240) 65044a118bc4a26d40b694c11f142e43fd083544 Move api/apitest into the otel/oteltest package (#1241) a46f88ee8db8b63ecc04b94395f9e55314b94c01 Fix lint issues in otel package (#1243) bafde86b29eac6dddae4c12221b40ab97ca4ee34 Fix lint issues in the label package (#1244) 7ecc55581b013a7d44b8f979dc13ee7c65328d9c Update documentation for the OTLP exporter (#1242) f60f51d0a20f0df2c95d86dc4ff241cc9ea2b00e Move asyncronous metrics state helper out of apimetric/metrictes (#1234) 02cd1235426d16656120f78cf57c859c77072456 Call sampler on local child spans. (#1233) 25ccf5a08ac6d7fd63192be7c30c6d8f9aeaebdc Update proto v0.5.0 (#1230) 27c84d689d64167e8a1873311782750da6defa39 Move trace api package into otel (#1229)

    Source code(tar.gz)
    Source code(zip)
  • v0.13.0(Oct 8, 2020)


    • OTLP Metric exporter supports Histogram aggregation. (#1209)
    • The Code struct from the package now supports JSON marshaling and unmarshaling as well as implements the Stringer interface. (#1214)
    • A Baggage API to implement the OpenTelemetry specification. (#1217)


    • Set default propagator to no-op propagator. (#1184)
    • The HTTPSupplier, HTTPExtractor, HTTPInjector, and HTTPPropagator from the package were replaced with unified TextMapCarrier and TextMapPropagator in the package. (#1212)
    • The New function from the package was replaced with NewCompositeTextMapPropagator in the package. (#1212)
    • The status codes of the package have been updated to match the latest OpenTelemetry specification. They now are Unset, Error, and Ok. They no longer track the gRPC codes. (#1214)
    • The StatusCode field of the SpanData struct in the package now uses the codes package from this package instead of the gRPC project. (#1214)
    • Move the package into (#1217)


    • Copies of data from arrays and slices passed to are now used in the returned Value instead of using the mutable data itself. (#1226)


    • The ExtractHTTP and InjectHTTP functions from the package were removed. (#1212)
    • The Propagators interface from the package was removed to conform to the OpenTelemetry specification. The explicit TextMapPropagator type can be used in its place as this is the Propagator type the specification defines. (#1212)
    • The SetAttribute method of the Span from the package was removed given its redundancy with the SetAttributes method. (#1216)
    • The internal implementation of Baggage storage is removed in favor of using the new Baggage API functionality. (#1217)
    • Remove duplicate hostname key HostHostNameKey in Resource semantic conventions. (#1219)
    • Nested array/slice support has been removed. (#1226)

    Raw changes made between v0.12.0 and v0.13.0

    9ebca887f06dd4a4093c26426e6f3b2f6610c7ca Pre release v0.13.0 (#1231) 5660b0b59f4c0fbb9e2879bb645b632b50f5f3bd Update label.ArrayValue to store copies of 1D arrays (#1226) 577b21745b6648fd04ae251ae8a03c5a00f5921b Update codes to match specification (#1214) e9c80e62a4bb5a85af379d3378fdbf64ece9665f Bump from 0.2.4 to 0.2.5 in /exporters/trace/zipkin (#1224) b0fd424c2056c548928b5d9d484db0d95ea74a7a Bump from 0.11.1 to 0.11.2 in /internal/tools (#1225) 5e6634059427be53d366d29070c8209e005bc7d4 Add Baggage API and move Baggage propagator (#1217) de50711fcc13f7da5c42c71c1f7ad0fb5ff2e7ae feat(span): remove SetAttribute method (#1216) 6e184cd16f2251f377c081d5fa44ba768284adfa Update propagation to conform with OpenTelemetry specification (#1212) dc79f7fe25712c4674dbc6c3a565d7c3925effda Remove duplicate hostname in Resource (#1219) 423c891359841f3362079fcb2493f74eae17131d Set default propagator to no-op propagator (#1204) 04297f4d043e1cce6dd8c3b159cc23405a167fa6 Enable exporting Histogram aggregation to OTLP metric (#1209) a69f8fbe7a4618c736792683a2e364bfc0143d87 Add integration tests for span processor ordering (#1208) 3a9f5fe15f50a35ad8da5c5396a9ed3bbb82360c Test benchmarks in precommit (#1207)

    Source code(tar.gz)
    Source code(zip)
  • v0.12.0(Sep 24, 2020)


    • A SpanConfigure function in to create a new SpanConfig from SpanOptions. (#1108)
    • In the package, NewTracerConfig was added to construct new TracerConfigs. 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 a ForceFlush() 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 and EndOption in with SpanOption. This change is matched by replacing the StartConfig and EndConfig with a unified SpanConfig. (#1108)
    • Replace the LinkedTo span option in with WithLinks. This is be more consistent with our other option patterns, i.e. passing the item to be configured directly instead of its component parts, and provides a cleaner function signature. (#1108)
    • The TracerOption was changed to an interface to conform to project option conventions. (#1109)
    • Move the B3 and TraceContext from within the package to their own package. This removal of the propagators is reflective of the OpenTelemetry specification for these propagators as well as cleans up the API. (#1118)
    • Rename Jaeger tags used for instrumentation library information to reflect changes in OpenTelemetry specification. (#1119)
    • Rename ProbabilitySampler to TraceIDRatioBased and change semantics to ignore parent span sampling status. (#1115)
    • Move tools package under internal. (#1141)
    • Move package to (#1142) The correlation.CorrelationContext propagator has been renamed baggage.Baggage. Other exported functions and types are unchanged.
    • Rename ParentOrElse sampler to ParentBased and allow setting samplers depending on parent span. (#1153)
    • In the package, SpanConfigure was renamed to NewSpanConfig. (#1155)
    • Change dependabot.yml to add a Skip Changelog label to dependabot-sourced PRs. (#1161)
    • The configuration style guide has been updated to recommend the use of newConfig() instead of configure(). (#1163)
    • The otlp.Config type has been unexported and changed to otlp.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 to NewInstrumentConfig and to NewMeterConfig.
    • ValueObserver instruments use LastValue aggregator by default. (#1165)
    • OTLP Metric exporter supports LastValue aggregation. (#1165)
    • Move the package to (#1185)
    • Rename Provider to MeterProvider in the package. (#1190)
    • Rename NoopProvider to NoopMeterProvider in the package. (#1190)
    • Rename NewProvider to NewMeterProvider in the package. (#1190)
    • Rename Provider to MeterProvider in the package. (#1190)
    • Rename NewProvider to NewMeterProvider in the package. (#1190)
    • Rename Provider to TracerProvider in the package. (#1190)
    • Rename NoopProvider to NoopTracerProvider in the package. (#1190)
    • Rename Provider to TracerProvider in the package. (#1190)
    • Rename NewProvider to NewTracerProvider in the package. (#1190)
    • Rename WrapperProvider to WrapperTracerProvider in the package. (#1190)
    • Rename NewWrapperProvider to NewWrapperTracerProvider in the package. (#1190)
    • Rename Provider method of the pull controller to MeterProvider in the package. (#1190)
    • Rename Provider method of the push controller to MeterProvider in the package. (#1190)
    • Rename ProviderOptions to TracerProviderConfig in the package. (#1190)
    • Rename ProviderOption to TracerProviderOption in the package. (#1190)
    • Rename Provider to TracerProvider in the package. (#1190)
    • Rename NewProvider to NewTracerProvider in the package. (#1190)
    • Renamed SamplingDecision values to comply with OpenTelemetry specification change. (#1192)
    • Renamed Zipkin attribute names from ot.status_code & ot.status_description to otel.status_code & otel.status_description. (#1201)
    • The default SDK now invokes registered SpanProcessors in the order they were registered with the TracerProvider. (#1195)


    • Remove the B3 propagator from It is now located in the module. (#1191)
    • Remove the semantic convention for HTTP status text, HTTPStatusTextKey from package (#1194)


    • Zipkin example no longer mentions ParentSampler, corrected to ParentBased. (#1171)
    • Fix missing shutdown processor in otel-collector example. (#1186)
    • Fix missing shutdown processor in basic and namedtracer examples. (#1197)

    Raw changes made between v0.11.0 and v0.12.0

    0b348c345f51b19beaa2588e0cd6ffc3ae767772 (HEAD -> master, tag: v0.12.0, tag: sdk/v0.12.0, tag: exporters/trace/zipkin/v0.12.0, tag: exporters/trace/jaeger/v0.12.0, tag: exporters/stdout/v0.12.0, tag: exporters/otlp/v0.12.0, tag: exporters/metric/prometheus/v0.12.0, tag: exa mple/zipkin/v0.12.0, tag: example/prometheus/v0.12.0, tag: example/otel-collector/v0.12.0, tag: example/namedtracer/v0.12.0, tag: example/jaeger/v0.12.0, tag: example/basic/v0.12.0, tag: bridge/opentracing/v0.12.0, origin/master, origin/HEAD) Prepare v0.12.0 release (#1205) 8c3cc4399245deab10a089024467467f450fe0d4 Use LastValue by default for ValueObserver instruments (#1165) 304d4cdffcbd655fb4473f77fb873d9d1da059b9 ensure batch span processors are shutdown in examples (#1199) 1e72b51b31c82e7bd8e908774ba876dd3b22ffb9 Add example test for a custom SpanProcessor (#1196) b97533a74bd0c436d527d4630680b7f1891a18e6 Register/unregister in the fixed order (#1198) 559fecd73ede982801bad9f2e4f6fe4ac8d521a3 Update the attribute names for the OTel attributes for the zipkin exporter (#1201) 7d718676444c9c2f18f8355ae262b64744fed331 Rename *Provider names (#1190) 5dd296220226c92f50f5658a9fdc9744b750522c Remove semantic convention for http status text (#1194) 038f505d12a63d5121e07936981930e20efb0678 Remove B3 propagator from otel repo (#1191) e7e1dce98299ea97dc90267606faa75c5689ca47 Update sampling decision names (#1192) b9357d7ee2b37b475521db639f0c738f02ca8e57 Remove flaky BatchSpanProcessor.ForceFlush() test (#1189) fa741472e77dc61e1fd2f36f57f508daccb4fc89 Bump from 0.31.0 to 0.32.0 in /exporters/trace/jaeger (#1188) 4b46365d1d6414c03bb3188c2cd6af267399d14b Move api/unit to top level (#1185) 930b4d01f6cf46eda3ebfca2c4313be6ed70bca7 Fix missing shutdown of the batch processor (#1186) 995be31f426a4c8a4248977e6e48772b8041443f Add ForceFlush() method to SpanProcessor interface (#1166) a12224a454135a5d7ec17831b6b39cf9723c0cdb Ensure exported interfaces have named method parameters (#1172) 2621bd4847caafe395e1572d6f8267fdb59b28c5 Convert XConfigure into constructor for metrics (#1175) 3de7a0708922da1871351c91712afbc27628b82d Merge otel into one file and add package doc (#1176) 1f7c2206522accd0a176ed8d93183f1168d70939 Don't consider unset env var to be an error during resource detection (#1170) 77de1998cf5364262e06527157be49aba8d3e7a3 Minor change: ParentSampler -> ParentBased in Zipkin example description (#1171) 6f048eb8329be668683c98bb319eda7dbabaa7a5 Add more semantic conventions for k8s as resource attributes (#1167) d91de437b2ecc2b464df8a0ec217c62080af9bd5 Recommend use of initializers for config structs (#1163) c9726efd6075c1dccbafc5a17724f0299fd1998a Allow up to 0.5% coverage change before failing build (#1162) 0041e2d26efba124778a0f378c223cb53f6200b6 Rename ParentOrElse sampler to ParentBased and enhance it according to the spec (#1153) 34c02d1d249903a36e5627b1f47d4b49f118c482 Add Skip Changelog label to Dependabot-sourced PRs (#1161) 9f4525847fe215e3a42e0d52eea171a36445d3b1 Convert XConfigure into constructors (#1155) a787f09536357d91c64f253e140d55a980115799 Update to reflect PR process-as-applied (#1159) 36c323ffca1cd4a74d3c8c3d586a4b3ff555d436 Add the missing vanity import path directive (#1157) 7fac2795b63c227780fdff439d416f6aa65f6578 Rename package.go to doc.go for consistency (#1156) 4c5f8348c3738e5ab2cad0edbecd5763f05aa27d Document make test for testing (#1154) 06689a01bd0244c6ff40333d544d6fa682dfc5d2 Rename CorrelationContext to Baggage (#1142) 9a4981cc67543fca1fcbed775d21124435b4c905 Bump from 1.31.1 to 1.32.0 in /sdk (#1145) 422188a85f45411d2db8ab9eb7dcc4044736d502 Correct SDK trace Exporter interface (#1078) da96fd0c5e3e22b7276dd86d7eea302fc806c146 Bump from 1.31.1 to 1.32.0 in /exporters/otlp (#1146) a1b43b4b03cea19547a63db1b4c8da70ee83e176 Bump from 1.31.1 to 1.32.0 in /exporters/stdout (#1148) 932638697af311c91b7215357e85f1794242eec3 Bump from 1.31.1 to 1.32.0 in /exporters/trace/jaeger (#1151) 71a1b233b24c178b262ef5df936d24b851e08f8d Bump from 1.30.0 to 1.31.0 in /internal/tools (#1152) e58e347f932dfe922cf68e0754a873e9408054ce Bump from 1.31.1 to 1.32.0 in /exporters/trace/zipkin (#1149) dd3d4f2ae0911a96bf08b465e5678d93ac859bd5 Bump from 0.2.3 to 0.2.4 in /exporters/trace/zipkin (#1150) 2f0538ac372f4f2e6f111fc01325c68e8c64027e Bump in /example/otel-collector (#1147) 2e221fdf3e1539b68f79c4b1254c7ee1b4149692 Move tools package under internal (#1141) 1d2189088dbfe62fc65bfd481c547d33ba59c522 Add workflow to check for presence of CHANGELOG changes on PRs (#1067) a2c75c6d783399049e2368ab6acef2d8dcdb3e77 Unexport NoopXXX trace types (#1134) f1dad21e4724662778416d7e53d88d685d2a8db9 Move propagators out of API and into their own package (#1118) bc1a59274f5934b883dd5cc7a504948adbb2e472 Add a test for jaeger udp client (#1137) 224629bd0ba38bd65f6abd347ddff878e7d7e4dc Bump from 0.30.0 to 0.31.0 in /exporters/trace/jaeger (#1124) b0f978c307724aa33affa40681d355d79daa24fd Add receiver names to TraceContext methods (#1136) 9ad4824394292806361f9832886127ca4869dccf Added missing package document and canonical import paths (#1125) 74357106b0fd67b902a2f4de2a76a70d0749e625 Add missing argument names to the Span interface (#1135) d143b8fbf809225ab2b07f6ed0486e9e1974d549 Unify API Span Start/End Options (#1108) 4d83d5b57190f433ca268ce8d78832c67f543189 Change name of ProbabilitySampler to TraceIdRatioBased (#1115) f38e1902f998b4e9864df99c0af680e51e6cf85d Add InstrumentationLibrary info to Zipkin/Jaeger exporters (#1119) 440c4bd060deada9af58b0c1cba61cc2cdeac3d6 Stop find complaining due to missing directory starting point (#1116) 0fec28040dde5ac35d6ff0b742c394cf58d16536 Update trace API TracerOption (#1109) a304e8280d3304f06af22bacdfad0def93ad85f3 Add reconnecting udp connection type to jaeger exporter (#1063) e3abf31b0b925875bdac582fbc6caca22b3cc090 Make trace testhelpers public (#1111) 1ab708e4b844ceb6b5db5ebd4973e3d5f81ab634 Rename global SetTraceProvider and TraceProvider (#1102) f36759aa477cf7865becb9890557fb865147fd80 Add @XSAM as project approver (#1110) 1c3626e636ea0b3dde7b75abb97b831842fbf545 #872 Make metric test helpers public (#1040) 5d9daf065402a297a0b8fb9bf5c5d4fe8a215844 Bump from 1.31.0 to 1.31.1 in /sdk (#1105) 06a0be789aa0a7c251835c4570d45cd4921a6528 Update (#1106) 3b3c263d9a222e307f9fd27274c413d82b8b37a6 Update dependabot config (#1100) 737d81208b31988d177365871a19258b57c4896b Bump from 0.5.1 to 0.5.2 (#1093) 170b6c6986be596a8c8ce1f133505d161b9624e7 Bump from 0.5.1 to 0.5.2 in /exporters/otlp (#1095) 2351c8cf7dbf43e7d90a6d1e8fe4982d5c6a8069 Bump from 0.5.1 to 0.5.2 in /exporters/trace/jaeger (#1097) 9ce71fe2e5b1451b1ed0bf48a66b222e7af653e1 Bump from 1.31.0 to 1.31.1 in /exporters/trace/zipkin (#1096) b933f31a205c4f38d97e614d9d4f58a48551fac0 Bump from 1.31.0 to 1.31.1 in /exporters/trace/jaeger (#1098) 750848e993219f987ecdcbb921125f10194ce641 Bump from 1.31.0 to 1.31.1 in /exporters/stdout (#1099)

    Source code(tar.gz)
    Source code(zip)
  • v0.11.0(Aug 25, 2020)


    • Noop and InMemory SpanBatcher implementations to help with testing integrations. (#994)
    • Integration tests for more OTel Collector Attribute types. (#1062)
    • A dimensionality-reducing metric Processor. (#1057)
    • Support for filtering metric label sets. (#1047)
    • Support for exporting array-valued attributes via OTLP. (#992)


    • Rename sdk/metric/processor/test to sdk/metric/processor/processortest. (#1049)
    • Rename sdk/metric/controller/test to sdk/metric/controller/controllertest. (#1049)
    • Rename api/testharness to api/apitest. (#1049)
    • Rename api/trace/testtrace to api/trace/tracetest. (#1049)
    • Change Metric Processor to merge multiple observations. (#1024)
    • The 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 package to to avoid the ambiguous and generic name standard 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 to OTEL_RESOURCE_ATTRIBUTES (#1042)
    • Replace WithSyncer with WithBatcher in examples. (#1044)
    • Replace the dependency in the API with an equivalent package. (#1046)
    • Merge the and into the new 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)


    • Duplicate, unused API sampler interface. (#999) Use the Sampler interface provided by the SDK instead.
    • The grpctrace instrumentation was moved to the repository and out of this repository. This move includes moving the grpc example to the as well. (#1027)
    • The WithSpan method of the Tracer interface. The functionality this method provided was limited compared to what a user can provide themselves. It was removed with the understanding that if there is sufficient user need it can be added back based on actual user usage. (#1043)
    • The RegisterSpanProcessor and UnregisterSpanProcessor functions. These were holdovers from an approach prior to the TracerProvider design. They were not used anymore. (#1077)
    • The oterror package. (#1026)
    • The othttp and httptrace instrumentations were moved to (#1032)


    • The semconv.HTTPServerMetricAttributesFromHTTPRequest() function no longer generates the high-cardinality http.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 to the OTLP exporter to reduce dependency overhead. (#1050)
    • The otel-collector example referenced outdated collector processors. (#1006)
    Source code(tar.gz)
    Source code(zip)
OpenTelemetry - CNCF
OpenTelemetry makes robust, portable telemetry a built-in feature of cloud-native software.
OpenTelemetry - CNCF
Terraform provider implementation for interacting with the Tailscale API.

Terraform Provider Tailscale This repository contains a Terraform provider implementation for interacting with the Tailscale API.

David Bond 106 Jul 21, 2022
A simple implementation to upload file to AWS S3

A simple implementation to upload file to AWS S3.

Leonardo Comelli 0 Nov 19, 2021
School POC of an AES implementation in an API/Client system

poc_aes_implement School POC of an AES implementation in an API/Client system How to use : Start the api with : poc-aes -api start Client commands : p

Thryn 0 Nov 29, 2021
A work-in-progress implementation of MobileMe.

mobileme A work-in-progress implementation of MobileMe. At the moment, authentication is assumed to be with the username someuser and password testing

Spotlight 2 May 28, 2022
An implementation of a simple RESTful API in Golang on AWS infrastructure.

go-api An implementation of a simple RESTful API in Golang on AWS infrastructure. Tech Stack Serverless framework Go language AWS API Gateway AWS Lamb

Amirmohsen 0 Dec 25, 2021
Unofficial golang implementation for the Preev API

go-preev The unofficial golang implementation for the API Table of Contents Installation Documentation Examples & Tests Benchmarks Code Stan

Mr. Z 6 Jun 2, 2022
Unofficial golang implementation for the search API

go-pipl The unofficial golang wrapper for the API. Table of Contents Installation Documentation Examples & Tests Benchmarks Code Standards Us

Mr. Z 5 Dec 27, 2021
Arweave-api - Arweave API implementation in golang

Arweave API Go implementation of the Arweave API Todo A list of endpoints that a

Joshua Lawson 1 Jan 16, 2022
ABAG - The implementation for the alternating trees problem specified in the task

ABAG - GO task This repo contains the implementation for the alternating trees p

Kene 0 Jan 6, 2022
Implementation of Technical Test - Article API

Technical Test on Article API Abstract For the technical test on an set of article API, this document outlines its requirements, and the design, devel

Spenser Kao 0 Feb 8, 2022
🔗 Unofficial golang implementation for the NOWNodes API

go-nownodes The unofficial golang implementation for the API Table of Contents Installation Documentation Examples & Tests Benchmarks Code

Mr. Z 2 Jan 30, 2022
Qfy - Self-hosted implementation of Synthetics - Monitoring checks to validate your service availability

qfy Self-hosted implementation of Synthetics - Monitoring checks to validate you

Milan Pavlik 1 Feb 23, 2022
OpenTelemetry log collection library

opentelemetry-log-collection Status This project was originally developed by observIQ under the name Stanza. It has been contributed to the OpenTeleme

OpenTelemetry - CNCF 88 Jul 11, 2022
A CLI tool that generates OpenTelemetry Collector binaries based on a manifest.

OpenTelemetry Collector builder This program generates a custom OpenTelemetry Collector binary based on a given configuration. TL;DR $ go get github.c

OpenTelemetry - CNCF 51 Aug 3, 2022
OpenTelemetry instrumentation for database/sql

otelsql It is an OpenTelemetry instrumentation for Golang database/sql, a port from

Sam Xie 105 Aug 1, 2022
Example instrumentation of Golang Application with OpenTelemetry with supported configurations to export to Sentry.

Sentry + Opentelemetry Go Example Requirements To run this example, you will need a kubernetes cluster. This example has been tried and tested on Mini

Uddeshya Singh 10 Apr 9, 2022
OpenTelemetry integration for Watermill

Watermill OpenTelemetry integration Bringing distributed tracing support to Watermill with OpenTelemetry.

Voi Technology AB 12 Jul 20, 2022
Tool for generating OpenTelemetry tracing decorators.

tracegen Tool for generating OpenTelemetry tracing decorators. Installation go get -u Usage tracegen generate

Marketplace Technologies 5 Apr 7, 2022
OpenTelemetry instrumentations for Go

OpenTelemetry instrumentations for Go Instrumentation Package Metrics Traces database/sql ✔️ ✔️ GORM ✔️ ✔️ sqlx ✔️ ✔️ logrus ✔️ Zap ✔️ Contributing To

Uptrace 94 Aug 12, 2022
Instrumentations of third-party libraries using opentelemetry-go library

OpenTelemetry Go Contributions About This reopsitory hosts instrumentations of the following OpenTelemetry libraries: confluentinc/confluent-kafka-go

eTF1 1 Oct 27, 2021
OpenTelemetry plugin for GORM v2

gorm-opentelemetry OpenTelemetry plugin for GORM v2 Traces all queries along with the query SQL. Usage Example: // Copyright The OpenTelemetry Authors

ZopSmart 0 Jan 11, 2022
logger wraps uber/zap and trace with opentelemetry

logger 特性 支持 uber/zap 日志 支持 log rolling,使用 lumberjace 支持日志追踪 支持debug、info、warn、e

xiaolei 7 Jul 26, 2022
Shikhandi: a tiny load generator for opentelemetry and heavily

shikhandi is a tiny load generator for opentelemetry and heavily inspired by thi

Srikanth Chekuri 6 Jul 22, 2022
Distributed tracing using OpenTelemetry and ClickHouse

Distributed tracing backend using OpenTelemetry and ClickHouse Uptrace is a dist

Uptrace 774 Aug 2, 2022
Rest API to get KVB departures - Written in Go with hexagonal architecture and tracing via OpenTelemetry and Jaeger

KVB API Rest API to get upcoming departures per KVB train station Implemented in Go with hexagonal architecture and tracing via OpenTelemetry and Jaeg

Jan Ritter 3 May 7, 2022
Uptrace - Distributed tracing backend using OpenTelemetry and ClickHouse

Distributed tracing backend using OpenTelemetry and ClickHouse Uptrace is a dist

Rohan 0 Mar 8, 2022
Fibonacci by golang, opentelemetry, jaeger

Fibonacci Technology stack Opentelemetry Jaeger Prometheus Development Run Run docker-compose and main.go: make all Run docker-compose down: make down

null 0 Jan 14, 2022
Otelsql - OpenTelemetry SQL database driver wrapper for Go

OpenTelemetry SQL database driver wrapper for Go Add a OpenTelemetry wrapper to

Nhat 26 Jul 3, 2022
A simple scraper to export data from buildkite to honeycomb using opentelemetry SDK

A quick scraper program that let you export builds on BuildKite as OpenTelemetry data and then send them to for slice-n-dice high cardinality analysis.

Son Luong Ngoc 3 Jul 7, 2022