1
0
mirror of https://github.com/open-telemetry/opentelemetry-go.git synced 2024-12-10 09:50:58 +02:00
opentelemetry-go/README.md

107 lines
3.7 KiB
Markdown
Raw Normal View History

# 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)
[![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-11-16 01:22:17 +02:00
The Go [OpenTelemetry](https://opentelemetry.io/) client.
## 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`
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.
To install the API and SDK packages,
```
$ go get -u go.opentelemetry.io/otel
```
## Quick Start
```go
package main
import (
"context"
"log"
apitrace "go.opentelemetry.io/otel/api/trace"
"go.opentelemetry.io/otel/exporter/trace/stdout"
2019-11-05 15:49:02 +02:00
"go.opentelemetry.io/otel/global"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
)
func initTracer() {
exporter, err := stdout.NewExporter(stdout.Options{PrettyPrint: true})
if err != nil {
log.Fatal(err)
}
2019-11-05 15:49:02 +02:00
tp, err := sdktrace.NewProvider(sdktrace.WithConfig(sdktrace.Config{DefaultSampler: sdktrace.AlwaysSample()}),
sdktrace.WithSyncer(exporter))
if err != nil {
log.Fatal(err)
}
global.SetTraceProvider(tp)
}
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
documentation](https://go.opentelemetry.io/otel/) for more
detail, and the
[opentelemetry-example-app](./example/README.md)
for a complete example.
## Contributing
See the [contributing file](CONTRIBUTING.md).
## 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
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-11-05 15:49:02 +02:00
| Component | Version | Target Date | Release Date |
| --------------------------- | ------------ | --------------- | ---------------- |
| Tracing API | Alpha v0.1.0 | October 28 2019 | November 05 2019 |
| Tracing SDK | Alpha v0.1.0 | October 28 2019 | November 05 2019 |
| Metrics API | Alpha | October 28 2019 | - |
| Metrics SDK | Alpha | October 28 2019 | - |
| Zipkin Trace Exporter | Alpha | Unknown | - |
| Jaeger Trace Exporter | Alpha v0.1.0 | October 28 2019 | November 05 2019 |
| Prometheus Metrics Exporter | Alpha | October 28 2019 | - |
| Trace Context Propagation | Alpha v0.1.0 | Unknown | November 05 2019 |
| OpenTracing Bridge | Alpha v0.1.0 | October | November 05 2019 |
| OpenCensus Bridge | Alpha | Unknown | - |