2019-08-05 22:58:24 +02:00
|
|
|
# OpenTelemetry-Go
|
|
|
|
|
2019-07-03 16:43:54 +02:00
|
|
|
[![Circle CI](https://circleci.com/gh/open-telemetry/opentelemetry-go.svg?style=svg)](https://circleci.com/gh/open-telemetry/opentelemetry-go)
|
2019-11-01 20:40:29 +02:00
|
|
|
[![Docs](https://godoc.org/go.opentelemetry.io/otel?status.svg)](http://godoc.org/go.opentelemetry.io/otel)
|
|
|
|
[![Go Report Card](https://goreportcard.com/badge/go.opentelemetry.io/otel)](https://goreportcard.com/report/go.opentelemetry.io/otel)
|
2019-11-01 06:56:25 +02:00
|
|
|
[![Gitter](https://badges.gitter.im/open-telemetry/opentelemetry-go.svg)](https://gitter.im/open-telemetry/opentelemetry-go?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
2019-07-03 01:22:54 +02:00
|
|
|
|
2019-11-01 20:40:29 +02:00
|
|
|
The Go [OpenTelemetry](https://opentelemetry.io/otel/) client.
|
2019-06-14 20:37:05 +02:00
|
|
|
|
2019-10-02 07:43:06 +02:00
|
|
|
## Installation
|
|
|
|
|
|
|
|
This repository includes multiple packages. The `api`
|
|
|
|
package contains core data types, interfaces and no-op implementations that comprise the OpenTelemetry API following
|
|
|
|
[the
|
|
|
|
specification](https://github.com/open-telemetry/opentelemetry-specification).
|
|
|
|
The `sdk` package is the reference implementation of the API.
|
|
|
|
|
2019-10-28 21:46:52 +02:00
|
|
|
Libraries that produce telemetry data should only depend on `api`
|
2019-10-02 07:43:06 +02:00
|
|
|
and defer the choice of the SDK to the application developer. Applications may
|
2019-10-28 21:46:52 +02:00
|
|
|
depend on `sdk` or another package that implements the API.
|
2019-10-02 07:43:06 +02:00
|
|
|
|
|
|
|
To install the API and SDK packages,
|
|
|
|
|
|
|
|
```
|
2019-11-01 20:40:29 +02:00
|
|
|
$ go get -u go.opentelemetry.io/otel
|
2019-10-02 07:43:06 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
## Quick Start
|
|
|
|
|
|
|
|
```go
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"log"
|
|
|
|
|
2019-11-01 20:40:29 +02:00
|
|
|
apitrace "go.opentelemetry.io/otel/api/trace"
|
|
|
|
"go.opentelemetry.io/otel/exporter/trace/stdout"
|
|
|
|
sdktrace "go.opentelemetry.io/otel/sdk/trace"
|
2019-10-02 07:43:06 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
func initTracer() {
|
|
|
|
sdktrace.Register()
|
|
|
|
|
|
|
|
exporter, err := stdout.NewExporter(stdout.Options{PrettyPrint: true})
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
ssp := sdktrace.NewSimpleSpanProcessor(exporter)
|
|
|
|
sdktrace.RegisterSpanProcessor(ssp)
|
|
|
|
|
|
|
|
// For the demonstration, use sdktrace.AlwaysSample sampler to sample all traces.
|
|
|
|
// In a production application, use sdktrace.ProbabilitySampler with a desired probability.
|
|
|
|
sdktrace.ApplyConfig(sdktrace.Config{DefaultSampler: sdktrace.AlwaysSample()})
|
|
|
|
}
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
initTracer()
|
|
|
|
|
|
|
|
apitrace.GlobalTracer().WithSpan(context.Background(), "foo",
|
|
|
|
func(ctx context.Context) error {
|
|
|
|
apitrace.GlobalTracer().WithSpan(ctx, "bar",
|
|
|
|
func(ctx context.Context) error {
|
|
|
|
apitrace.GlobalTracer().WithSpan(ctx, "baz",
|
|
|
|
func(ctx context.Context) error {
|
|
|
|
return nil
|
|
|
|
},
|
|
|
|
)
|
|
|
|
return nil
|
|
|
|
},
|
|
|
|
)
|
|
|
|
return nil
|
|
|
|
},
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
See the [API
|
2019-11-01 20:40:29 +02:00
|
|
|
documentation](https://go.opentelemetry.io/otel/) for more
|
2019-10-02 07:43:06 +02:00
|
|
|
detail, and the
|
|
|
|
[opentelemetry-example-app](./example/README.md)
|
|
|
|
for a complete example.
|
|
|
|
|
2019-10-01 18:16:45 +02:00
|
|
|
## Contributing
|
|
|
|
|
|
|
|
See the [contributing file](CONTRIBUTING.md).
|
|
|
|
|
2019-10-02 07:43:06 +02:00
|
|
|
## Release Schedule
|
|
|
|
|
|
|
|
OpenTelemetry Go is under active development. Below is the release schedule
|
2019-10-28 21:46:52 +02:00
|
|
|
for the Go library. The first version of the release isn't guaranteed to conform
|
2019-10-02 07:43:06 +02:00
|
|
|
to a specific version of the specification, and future releases will not
|
2019-10-28 21:46:52 +02:00
|
|
|
attempt to maintain backward compatibility with the alpha release.
|
2019-06-14 20:37:05 +02:00
|
|
|
|
2019-10-02 07:43:06 +02:00
|
|
|
| Component | Version | Target Date |
|
|
|
|
| --------------------------- | ------- | --------------- |
|
2019-10-14 23:42:01 +02:00
|
|
|
| Tracing API | Alpha | October 28 2019 |
|
|
|
|
| Tracing SDK | Alpha | October 28 2019 |
|
|
|
|
| Metrics API | Alpha | October 28 2019 |
|
|
|
|
| Metrics SDK | Alpha | October 28 2019 |
|
2019-10-02 07:43:06 +02:00
|
|
|
| Zipkin Trace Exporter | Alpha | Unknown |
|
2019-10-14 23:42:01 +02:00
|
|
|
| Jaeger Trace Exporter | Alpha | October 28 2019 |
|
|
|
|
| Prometheus Metrics Exporter | Alpha | October 28 2019 |
|
2019-10-02 07:43:06 +02:00
|
|
|
| Trace Context Propagation | Alpha | Unknown |
|
|
|
|
| OpenTracing Bridge | Alpha | October |
|
|
|
|
| OpenCensus Bridge | Alpha | Unknown |
|