diff --git a/CHANGELOG.md b/CHANGELOG.md index 725072191..9ed642619 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ## [Unreleased] +## [0.4.0] - 2021-06-30 + +The primary change of this release is updating the dependency of `go.opentelemetry.io/otel*` packages from [`v0.20.0`][otel-v0.20.0] to [`v1.0.0-RC1`][otel-v1.0.0-RC1] and `go.opentelemetry.io/contrib*` packages from [`v0.20.0`][contrib-v0.20.0] to [`v0.21.0`][contrib-v0.21.0]. + ### Changed - Update `go.opentelemetry.io/otel*` dependencies from [`v0.20.0`][otel-v0.20.0] to [`v1.0.0-RC1`][otel-v1.0.0-RC1]. @@ -43,7 +47,7 @@ for sending data directly to Splunk Observability Cloud. ## [0.2.0] - 2021-04-27 -The primary change of this release is updating the dependency of `go.opentelemetry.io/otel*` packages from [`v0.19.0`][otel-v0.19.0] to [`v0.20.0`][otel-v0.20.0] and similarly `go.opentelemetry.io/contrib*` package from [`v0.19.0`][contrib-v0.19.0] to [`v0.20.0`][contrib-v0.20.0]. +The primary change of this release is updating the dependency of `go.opentelemetry.io/otel*` packages from [`v0.19.0`][otel-v0.19.0] to [`v0.20.0`][otel-v0.20.0] and similarly `go.opentelemetry.io/contrib*` packages from [`v0.19.0`][contrib-v0.19.0] to [`v0.20.0`][contrib-v0.20.0]. This includes [a fix](https://github.com/open-telemetry/opentelemetry-go/pull/1830) in the Jaeger exporter. This fix removes the duplicate batching that the exporter implemented. Now the `BatchSpanProcessor` that `distro` configures by default will not experience an impedance mismatch with this duplicate batching. @@ -60,7 +64,8 @@ Now the `BatchSpanProcessor` that `distro` configures by default will not experi - Add [`distro`](./distro) package providing functionality to quickly setup the OpenTelemetry Go implementation with useful Splunk defaults. - Add [`splunkhttp`](./instrumentation/net/http/splunkhttp) module providing additional Splunk specific instrumentation for `net/http`. -[Unreleased]: https://github.com/signalfx/splunk-otel-go/compare/v0.3.0...HEAD +[Unreleased]: https://github.com/signalfx/splunk-otel-go/compare/v0.4.0...HEAD +[0.4.0]: https://github.com/signalfx/splunk-otel-go/releases/tag/v0.4.0 [0.3.0]: https://github.com/signalfx/splunk-otel-go/releases/tag/v0.3.0 [0.2.0]: https://github.com/signalfx/splunk-otel-go/releases/tag/v0.2.0 [0.1.0]: https://github.com/signalfx/splunk-otel-go/releases/tag/v0.1.0 diff --git a/Makefile b/Makefile index 00c2960e0..44f394ee7 100644 --- a/Makefile +++ b/Makefile @@ -12,6 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +SHELL := /bin/bash + GO = go TIMEOUT = 15 PKGS = ./... diff --git a/README.md b/README.md index 95872019f..8c511815b 100644 --- a/README.md +++ b/README.md @@ -15,35 +15,36 @@ application to capture and report distributed traces to Splunk APM. This Splunk distribution comes with the following defaults: - [B3 context propagation](https://github.com/openzipkin/b3-propagation). -- [Jaeger thrift - exporter](https://opentelemetry-python.readthedocs.io/en/stable/exporter/jaeger/jaeger.html) - configured to send spans to a locally running [SignalFx Smart - Agent](https://docs.signalfx.com/en/latest/apm/apm-getting-started/apm-smart-agent.html) - (`http://localhost:9080/v1/trace`). -- Unlimited default limits for [configuration options](#trace-configuration) to +- [Jaeger Thrift over HTTP + exporter](https://pkg.go.dev/go.opentelemetry.io/otel/exporters/jaeger) + configured to send spans to a locally running Splunk OpenTelemetry Connector](https://github.com/signalfx/splunk-otel-collector) + (`http://localhost:14268/api/traces`). +- Unlimited default limits for configuration options to support full-fidelity traces. > :construction: This project is currently in **BETA**. It is **officially supported** by Splunk. However, breaking changes **MAY** be introduced. ## Getting Started -Supported libraries are listed -[here](https://github.com/open-telemetry/opentelemetry-go-contrib/tree/master/instrumentation). +### Bootstrapping + +Configure OpenTelemetry using the [`distro`](./distro) package: + +```go +package main -To ensure OpenTelemetry is correctly configured to participate in traces and send telemetry to Splunk, use the [`distro`](./distro) package. +import ( + "context" + + "github.com/signalfx/splunk-otel-go/distro" +) -```golang func main() { - // By default, the Run function will create a Jaeger exporter to a locally - // running Splunk Smart Agent at http://localhost:9080 and will configure - // the B3 context propagation format to be used in extracting and - // injecting trace context. sdk, err := distro.Run() if err != nil { panic(err) } - // To ensure all spans are flushed before the application exits, make sure - // to shutdown. + // Ensure all spans are flushed before the application exits. defer func() { if err := sdk.Shutdown(context.Background()); err != nil { panic(err) @@ -53,7 +54,16 @@ func main() { /* ... */ ``` -## Manually instrument an application +### Library instrumentation + +Supported libraries are listed +[here](https://github.com/open-telemetry/opentelemetry-go-contrib/tree/master/instrumentation). + +Splunk specific instrumentations: + +- [`splunkhttp`](./instrumentation/net/http/splunkhttp) + +### Manual instrumentation Documentation on how to manually instrument a Go application is available [here](https://opentelemetry.io/docs/go/getting-started/). @@ -66,13 +76,9 @@ Documentation on how to manually instrument a Go application is available [1]: The [Splunk's organization access token](https://docs.splunk.com/observability/admin/authentication-tokens/org-tokens.html) allows exporters sending data directly to the [Splunk Observability Cloud](https://dev.splunk.com/observability/docs/apibasics/api_list/). -To do so, the `OTEL_EXPORTER_JAEGER_ENDPOINT` or `contrib.WithEndpoint` must be set +To do so, the `OTEL_EXPORTER_JAEGER_ENDPOINT` or `distro.WithEndpoint` must be passed to `distro.Run` with Splunk back-end ingest endpoint URL: `https://ingest..signalfx.com/v2/trace`. -## Splunk specific instrumentations - -- [`splunkhttp`](./instrumentation/net/http/splunkhttp) - ## License and versioning The Splunk distribution of OpenTelemetry Go is a diff --git a/RELEASING.md b/RELEASING.md index 10ffa0e76..4fce68b7a 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -4,23 +4,15 @@ Update go.mod for submodules to depend on the new release which will happen in the next step. -1. Update [CHANGELOG.md](CHANGELOG.md) with new the new release. - -2. Run the pre-release script. It creates a branch `pre_release_` that will contain all release changes. +1. Run the pre-release script. It creates a branch `pre_release_` that will contain all release changes. ```sh ./pre_release.sh -t ``` -3. Verify the changes. - - ```sh - git diff - ``` - - This should have changed the version for all modules to be ``. +2. Update [CHANGELOG.md](CHANGELOG.md) with new the new release. -4. Push the changes to upstream and create a Pull Request on GitHub. +3. Push the changes to upstream and create a Pull Request on GitHub. ## Tag diff --git a/distro/example_test.go b/distro/example_test.go index c07990ea7..cccac58eb 100644 --- a/distro/example_test.go +++ b/distro/example_test.go @@ -21,10 +21,9 @@ import ( ) func Example() { - // By default, the Run function will create a Jaeger exporter to a locally - // running Splunk Smart Agent at http://localhost:9080 and will configure - // the B3 context propagation format to be used in extracting and - // injecting trace context. + // By default, the Run function creates a Jaeger Thrift over HTTP exporter + // to http://localhost:14268/api/traces and configures the B3 context + // propagation format to be used in extracting and injecting trace context. sdk, err := distro.Run() if err != nil { panic(err) diff --git a/distro/otel.go b/distro/otel.go index c579a83f9..ed219f1dc 100644 --- a/distro/otel.go +++ b/distro/otel.go @@ -16,10 +16,9 @@ Package distro provides functionality to quickly setup the OpenTelemetry Go implementation with useful Splunk defaults. -The default configuration will correctly set the default OpenTelemetry SDK to -propagate traces and export all spans to a locally running Splunk Smart Agent. -Information about the Splunk Smart Agent can be found here -https://docs.signalfx.com/en/latest/apm/apm-getting-started/apm-smart-agent.html +The default configuration sets the default OpenTelemetry SDK to propagate traces +using B3 propagator and export all spans to a locally running +Splunk OpenTelemetry Connector (http://localhost:14268/api/traces). */ package distro diff --git a/version.go b/version.go index 4c05b1030..49d847f5d 100644 --- a/version.go +++ b/version.go @@ -20,5 +20,5 @@ package splunkotel // import "github.com/signalfx/splunk-otel-go" // Version is the current release version of splunk-otel-go in use. func Version() string { - return "0.3.0" + return "0.4.0" }