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)
|
2020-03-30 21:40:38 +02:00
|
|
|
[![Docs](https://godoc.org/go.opentelemetry.io/otel?status.svg)](https://pkg.go.dev/go.opentelemetry.io/otel)
|
2019-11-01 20:40:29 +02:00
|
|
|
[![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-16 01:22:17 +02:00
|
|
|
The Go [OpenTelemetry](https://opentelemetry.io/) 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
|
|
|
|
2020-03-12 18:52:12 +02:00
|
|
|
All packages are published to [go.opentelemetry.io/otel](https://pkg.go.dev/go.opentelemetry.io/otel) and is the preferred location to import from.
|
2019-10-02 07:43:06 +02:00
|
|
|
|
2020-03-12 18:52:12 +02:00
|
|
|
Additional resources:
|
|
|
|
|
|
|
|
- [Developing using Go Modules](https://blog.golang.org/using-go-modules)
|
|
|
|
- [Adding dependencies and installing them](https://golang.org/cmd/go/#hdr-Add_dependencies_to_current_module_and_install_them)
|
2019-10-02 07:43:06 +02:00
|
|
|
|
|
|
|
## Quick Start
|
|
|
|
|
2020-03-12 18:52:12 +02:00
|
|
|
Below is a brief example of importing OpenTelemetry, initializing a tracer and creating some simple spans.
|
|
|
|
|
2019-10-02 07:43:06 +02:00
|
|
|
```go
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"log"
|
|
|
|
|
2019-11-26 06:41:24 +02:00
|
|
|
"go.opentelemetry.io/otel/api/global"
|
2020-07-22 21:34:44 +02:00
|
|
|
"go.opentelemetry.io/otel/exporters/stdout"
|
2019-11-01 20:40:29 +02:00
|
|
|
sdktrace "go.opentelemetry.io/otel/sdk/trace"
|
2019-10-02 07:43:06 +02:00
|
|
|
)
|
|
|
|
|
2020-07-22 21:34:44 +02:00
|
|
|
func main() {
|
2020-07-23 18:08:26 +02:00
|
|
|
pusher, err := stdout.InstallNewPipeline(nil, nil)
|
2019-11-05 15:49:02 +02:00
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
2020-07-22 21:34:44 +02:00
|
|
|
defer pusher.Stop()
|
2019-10-02 07:43:06 +02:00
|
|
|
|
2020-03-11 17:23:32 +02:00
|
|
|
tracer := global.Tracer("ex.com/basic")
|
2020-08-08 21:10:36 +02:00
|
|
|
ctx, span := tracer.Start(context.Background(), "main")
|
|
|
|
defer span.End()
|
|
|
|
/* … */
|
2019-10-02 07:43:06 +02:00
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
See the [API
|
2020-03-30 21:40:38 +02:00
|
|
|
documentation](https://pkg.go.dev/go.opentelemetry.io/otel) for more
|
2019-10-02 07:43:06 +02:00
|
|
|
detail, and the
|
2020-08-20 04:57:03 +02:00
|
|
|
[opentelemetry examples](./example/).
|
2019-10-02 07:43:06 +02:00
|
|
|
|
2019-12-31 20:48:24 +02:00
|
|
|
## Compatible Exporters
|
|
|
|
|
|
|
|
See the Go packages depending upon
|
|
|
|
[sdk/export/trace](https://pkg.go.dev/go.opentelemetry.io/otel/sdk/export/trace?tab=importedby)
|
|
|
|
and [sdk/export/metric](https://pkg.go.dev/go.opentelemetry.io/otel/sdk/export/metric?tab=importedby)
|
|
|
|
for a list of all exporters compatible with OpenTelemetry's Go SDK.
|
|
|
|
|
2020-04-02 19:58:09 +02:00
|
|
|
## Compatible Libraries
|
|
|
|
|
|
|
|
See the
|
|
|
|
[opentelemetry-go-contrib](https://github.com/open-telemetry/opentelemetry-go-contrib)
|
|
|
|
repo for packages that facilitates instrumenting other useful Go libraries
|
|
|
|
with opentelemetry-go for distributed tracing and monitoring.
|
|
|
|
|
2019-10-01 18:16:45 +02:00
|
|
|
## Contributing
|
|
|
|
|
|
|
|
See the [contributing file](CONTRIBUTING.md).
|