OpenTelemetry Tracing Specification now 1.0!

Our goal is to provide a generally available, production quality release for the tracing data source across most OpenTelemetry components in the first half of 2021. Several components have already reached this milestone! We expect metrics to reach the same status in the second half of 2021 and are targeting logs in 2022.

Project Status

The OpenTelemetry project consists of multiple components that support multiple data sources. Each component defines its own versioning and stability guarantees. These guarantees may be data source specific.

Latest Releases


.NET

1.0.0-rc3 of all non-core components

**OpenTelemetry.Extensions.Hosting**

**OpenTelemetry.Instrumentation.AspNet**

* Leverages added AddLegacySource API from OpenTelemetry SDK to trigger Samplers
  and ActivityProcessors. Samplers, ActivityProcessor.OnStart will now get the
  Activity before any enrichment done by the instrumentation.
  ([#1836](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1836))
* Performance optimization by leveraging sampling decision and short circuiting
  activity enrichment.
  ([#1903](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1903))

**OpenTelemetry.Instrumentation.AspNetCore**

* Leverages added AddLegacySource API from OpenTelemetry SDK to trigger Samplers
  and ActivityProcessors. Samplers, ActivityProcessor.OnStart will now get the
  Activity before any enrichment done by the instrumentation.
  ([#1836](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1836))
* Performance optimization by leveraging sampling decision and short circuiting
  activity enrichment. `Filter` and `Enrich` are now only called if
  `activity.IsAllDataRequested` is `true`
  ([#1899](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1899))

**OpenTelemetry.Instrumentation.GrpcNetClient**

* Leverages added AddLegacySource API from OpenTelemetry SDK to trigger Samplers
  and ActivityProcessors. Samplers, ActivityProcessor.OnStart will now get the
  Activity before any enrichment done by the instrumentation.
  ([#1836](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1836))
* Performance optimization by leveraging sampling decision and short circuiting
  activity enrichment.
  ([#1903](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1904))

**OpenTelemetry.Instrumentation.Http**

* Leverages added AddLegacySource API from OpenTelemetry SDK to trigger Samplers
  and ActivityProcessors. Samplers, ActivityProcessor.OnStart will now get the
  Activity before any enrichment done by the instrumentation.
  ([#1836](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1836))
* Performance optimization by leveraging sampling decision and short circuiting
  activity enrichment.
  ([#1903](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1894))

**OpenTelemetry.Instrumentation.SqlClient**

**OpenTelemetry.Instrumentation.StackExchangeRedis**

**OpenTelemetry.Shims.OpenTracing**

Go

Release v0.19.0

### Added

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

### Changed

- `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 `"go.opentelemetry.io/otel/sdk/trace".SpanProcessor` to accept a `context.Context` and return an error. (#1608)
- Update the `Shutdown` method to the `"go.opentelemetry.io/otel/sdk/trace".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)
- `"go.opentelemetry.io/sdk/metric/controller.basic".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 `service.name` if the exported Span does not have one. (#1673)
- Jaeger exporter populates Jaeger's Span Process from Resource. (#1673)
- Renamed the `LabelSet` method of `"go.opentelemetry.io/otel/sdk/resource".Resource` to `Set`. (#1692)
- Changed `WithSDK` to `WithSDKOptions` to accept variadic arguments of `TracerProviderOption` type in `go.opentelemetry.io/otel/exporters/trace/jaeger` package. (#1693)
- Changed `WithSDK` to `WithSDKOptions` to accept variadic arguments of `TracerProviderOption` type in `go.opentelemetry.io/otel/exporters/trace/zipkin` package. (#1693)
- `"go.opentelemetry.io/otel/sdk/resource".NewWithAttributes` will now drop any invalid attributes passed. (#1703)
- `"go.opentelemetry.io/otel/sdk/resource".StringDetector` will now error if the produced attribute is invalid. (#1703)

### Removed

- 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 `"go.opentelemetry.io/otel/sdk/trace".TracerProvider` and the now unneeded `Config` struct. (#1693)

### Fixed

- 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 google.golang.org/api 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 github.com/golangci/golangci-lint in /internal/tools (#1671)
150b868d02c8b9844f3db446d91267ad4e75beb9 Bump github.com/google/go-cmp from 0.5.4 to 0.5.5 (#1667)
76aa924e75b22f95bb189337fb9d46b64bc66c53 Fix the examples target info messaging (#1676)
a3aa9fdab061197aae67ac4a2c57712cfe5ef38e Bump github.com/itchyny/gojq 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)

JavaScript

v0.18.2

### :bug: (Bug Fix)

* `opentelemetry-api-metrics`, `opentelemetry-context-async-hooks`, `opentelemetry-context-zone-peer-dep`, `opentelemetry-core`, `opentelemetry-exporter-collector-grpc`, `opentelemetry-exporter-collector-proto`, `opentelemetry-exporter-collector`, `opentelemetry-exporter-jaeger`, `opentelemetry-exporter-prometheus`, `opentelemetry-exporter-zipkin`, `opentelemetry-grpc-utils`, `opentelemetry-instrumentation-fetch`, `opentelemetry-instrumentation-grpc`, `opentelemetry-instrumentation-http`, `opentelemetry-instrumentation-xml-http-request`, `opentelemetry-instrumentation`, `opentelemetry-metrics`, `opentelemetry-node`, `opentelemetry-plugin-grpc-js`, `opentelemetry-plugin-grpc`, `opentelemetry-plugin-http`, `opentelemetry-plugin-https`, `opentelemetry-propagator-b3`, `opentelemetry-propagator-jaeger`, `opentelemetry-resource-detector-aws`, `opentelemetry-resource-detector-gcp`, `opentelemetry-resources`, `opentelemetry-sdk-node`, `opentelemetry-shim-opentracing`, `opentelemetry-tracing`, `opentelemetry-web`
  * [#2056](https://github.com/open-telemetry/opentelemetry-js/pull/2056) chore: downgrade API for patch release ([@dyladan](https://github.com/dyladan))

### Committers: 1

* Daniel Dyla ([@dyladan](https://github.com/dyladan))

Java

Version 1.1.0

### API

#### Bugfixes

- We now use our own internal `@GuardedBy` annotation for errorprone so there won't be an accidental 
transitive dependency on a 3rd-party jar.
- The `TraceStateBuilder` now will not crash when an empty value is provided.
  
#### Enhancements

- The `Context` class now provides methods to wrap `java.util.concurrent.Executor` and `java.util.concurrent.ExecutorService` 
instances to do context propagation using the current context. See `io.opentelemetry.context.Context.taskWrapping(...)` for
more details.
  
### OpenTracing Shim (alpha)

- The shim now supports methods that take a timestamp as a parameter. 
- You can now specify both the `TEXT_MAP` and the `HTTP_HEADER` type propagators for the shim. 
See `io.opentelemetry.opentracingshim.OpenTracingPropagators` for details.

### Extensions

- The AWS X-Ray propagator is now able to extract 64-bit trace ids.

### SDK

#### Bugfixes

- The `CompletableResultCode.join(long timeout, TimeUnit unit)` method will no longer `fail` the result
when the timeout happens. Nor will `whenComplete` actions be executed in that case.
- The `SimpleSpanProcessor` now keeps track of pending export calls and will wait for them to complete
via a CompletableResultCode when `forceFlush()` is called. Similiarly, this is also done on `shutdown()`.
- The Jaeger Thrift exporter now correctly populates the parent span id into the exporter span.

#### Enhancements

- The SpanBuilder provided by the SDK will now ignore `Link` entries that are reference an invalid SpanContext. 
This is an update from the OpenTelemetry Specification v1.1.0 release.
- The OTLP Exporters will now log more helpful messages when the collector is unavailable or misconfigured.
- The internals of the `BatchSpanProcessor` have had some optimization done on them, to reduce CPU
usage under load.
- The `Resource` class now has `builder()` and `toBuilder()` methods and a corresponding `ResourceBuilder` class
has been introduced for more fluent creation and modification of `Resource` instances.
- The standard exporters will now throttle error logging when export errors are too frequent. If more than 5
error messages are logged in a single minute by an exporter, logging will be throttled down to only a single
log message per minute.

### SDK Extensions

#### Bugfixes

- Removed a stacktrace on startup when using the `autoconfigure` module without a metrics SDK on the classpath.

#### Enhancements

- The `autoconfigure` module now supports `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` and `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`
settings, in addition to the combined `OTEL_EXPORTER_OTLP_ENDPOINT` environment variable. Corresponding 
system properties are also supported (`-Dotel.exporter.otlp.metrics.endpoint` and `-Dotel.exporter.otlp.traces.endpoint`).
- An `SdkMeterProviderConfigurer` SPI is now available in the `autoconfigure` module. 

### Semantic Conventions (alpha)

- The SemanticAttributes and ResourceAttributes have both been updated to match the OpenTelemetry Specification v1.1.0 release.
This includes a breaking changes to the constants defined in the `ResourceAttributes` class:
`ResourceAttributes.CLOUD_ZONE` has been replaced with `ResourceAttributes.CLOUD_AVAILABILITY_ZONE`.
  
### Metrics (alpha)

#### Breaking Changes

- The `ViewRegistry` now lets you register `View` objects, rather than `AggregatorFactory` instances.
- `GlobalMetricsProvider` has been renamed to `GlobalMeterProvider`.
- `View` registration has been moved to the `SdkMeterProviderBuilder` and the methods on the `SdkMeterProvider`
to add views have been deprecated. They will be removed in the next release.

#### Enhancements

- A new option for aggregation as Histograms is now available. 

### Many thanks to all the people who contributed to this release:
@anuraaga @jkwatson @jack-berg @Oberon00 @beanliu @malafeev @sbandadd @breedx-splk @as-polyakov @kubawach @austinlparker @harshita19244 @mateuszrzeszutek @piotr-sumo @topher1120 

Python

opentelemetry v1.10a0

This release adds the experimental metrics API/SDK and will include the following packages:

```
  opentelemetry-exporter-prometheus
  opentelemetry-api
  opentelemetry-sdk
  opentelemetry-exporter-otlp-proto-grpc
  opentelemetry-exporter-otlp
```

PHP

Initial pre-alpha release

This is an initial, pre-alpha release.  This release is not production ready, it's just being produced in order to receive feedback from the PHP community at large.

Ruby

opentelemetry-instrumentation-http 0.16.2

### v0.16.2 / 2021-03-29

* FIXED: HTTP instrumenter should check for gem presence

Erlang

OpenTelemetry API v0.3.2

* `create_span` has been renamed `start_inactive_span` (#53)
* Fix `add_event` Elixir function (#56)
* Add accessors to deconstruct Span (#54)
* Attributes and events that aren't a list are now silently dropped (#51)
* Fix bug where there is no current span ctx and update_name is called (#52)
* Readme, typespec and doc fixes #45 #46 #50 #59 

Collector

## v0.24.0 Beta

## 🛑 Breaking changes 🛑

- Remove legacy internal metrics for memorylimiter processor, `spans_dropped` and `trace_batches_dropped` (#2841)
  - For `spans_dropped` use `processor/refused_spans` with `processor=memorylimiter`
- Rename pdata.*.[Start|End]Time to pdata.*.[Start|End]Timestamp (#2847)
- Rename pdata.DoubleExemplar to pdata.Exemplar (#2804)
- Rename pdata.DoubleHistogram to pdata.Histogram (#2797)
- Rename pdata.DoubleSummary to pdata.Summary (#2774)
- Refactor `consumererror` package (#2768)
  - Remove `PartialError` type in favor of signal-specific types
  - Rename `CombineErrors()` to `Combine()`
- Refactor `componenthelper` package (#2778)
  - Remove `ComponentSettings` and `DefaultComponentSettings()`
  - Rename `NewComponent()` to `New()`
- obsReport.NewExporter accepts a settings struct (#2668)
- Remove ErrorWaitingHost from `componenttest` (#2582)
- Move `config.Load` to use `configparser.Load` (#2796)
- Remove `configtest.NewViperFromYamlFile()`, use `config.Parser.NewParserFromFile()` (#2806)
- Move `config.ViperSubExact()` to use `config.Parser.Sub()` (#2806)
- Update LoadReceiver signature to remove unused params (#2823)
- Move `configerror.ErrDataTypeIsNotSupported` to `componenterror.ErrDataTypeIsNotSupported` (#2886)
- Rename`CreateTraceExporter` type to `CreateTracesExporter` in `exporterhelper` (#2779)
- Move `fluentbit` extension to contrib (#2795)
- Move `configmodels` to `config` (#2808)
- Move `fluentforward` receiver to contrib (#2723)

## 💡 Enhancements 💡

- `batch` processor: - Support max batch size for logs (#2736)
- Use `Endpoint` for health check extension (#2782)
- Use `confignet.TCPAddr` for `pprof` and `zpages` extensions (#2829)
- Deprecate `consumetest.New[${SIGNAL}]Nop` in favor of `consumetest.NewNop` (#2878)
- Deprecate `consumetest.New[${SIGNAL}]Err` in favor of `consumetest.NewErr` (#2878)
- Add watcher to values retrieved via config sources (#2803)
- Updates for cloud semantic conventions (#2809)
  - `cloud.infrastructure_service` -> `cloud.platform`
  - `cloud.zone` -> `cloud.availability_zone`
- Add systemd environment file for deb/rpm packages (#2822)
- Add validate interface in `configmodels` to force each component do configuration validation (#2802, #2856)
- Add `aws.ecs.task.revision` to semantic conventions list (#2816)
- Set unprivileged user to container image (#2838)
- Add New funcs for extension, exporter, processor config settings (#2872)
- Report metric about current size of the exporter retry queue (#2858)
- Allow adding new signals in `ProcessorFactory` by forcing everyone to embed `BaseProcessorFactory` (#2885)

## 🧰 Bug fixes 🧰

- `pdata.TracesFromOtlpProtoBytes`: Fixes to handle backwards compatibility changes in proto (#2798)
- `jaeger` receiver: Escape user input used in output (#2815)
- `prometheus` exporter: Ensure same time is used for updated time (#2745)
- `prometheusremotewrite` exporter: Close HTTP response body (#2875)