You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package detect
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
|
|
"github.com/pkg/errors"
|
|
"go.opentelemetry.io/otel/exporters/otlp/otlptrace"
|
|
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
|
|
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
|
|
sdktrace "go.opentelemetry.io/otel/sdk/trace"
|
|
)
|
|
|
|
func init() {
|
|
Register("otlp", otlpExporter, 10)
|
|
}
|
|
|
|
func otlpExporter() (sdktrace.SpanExporter, error) {
|
|
set := os.Getenv("OTEL_TRACES_EXPORTER") == "otlp" || os.Getenv("OTEL_EXPORTER_OTLP_ENDPOINT") != "" || os.Getenv("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT") != ""
|
|
if !set {
|
|
return nil, nil
|
|
}
|
|
|
|
proto := os.Getenv("OTEL_EXPORTER_OTLP_TRACES_PROTOCOL")
|
|
if proto == "" {
|
|
proto = os.Getenv("OTEL_EXPORTER_OTLP_PROTOCOL")
|
|
}
|
|
if proto == "" {
|
|
proto = "grpc"
|
|
}
|
|
|
|
var c otlptrace.Client
|
|
|
|
switch proto {
|
|
case "grpc":
|
|
c = otlptracegrpc.NewClient()
|
|
case "http/protobuf":
|
|
c = otlptracehttp.NewClient()
|
|
// case "http/json": // unsupported by library
|
|
default:
|
|
return nil, errors.Errorf("unsupported otlp protocol %v", proto)
|
|
}
|
|
|
|
return otlptrace.New(context.Background(), c)
|
|
}
|