You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2025-07-15 01:04:25 +02:00
add shorter version for global providers (#538)
This commit is contained in:
committed by
GitHub
parent
9674c81cb7
commit
85751428a3
@ -54,7 +54,7 @@ func initTracer() {
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
initTracer()
|
initTracer()
|
||||||
tracer := global.TraceProvider().Tracer("ex.com/basic")
|
tracer := global.Tracer("ex.com/basic")
|
||||||
|
|
||||||
tracer.WithSpan(context.Background(), "foo",
|
tracer.WithSpan(context.Background(), "foo",
|
||||||
func(ctx context.Context) error {
|
func(ctx context.Context) error {
|
||||||
|
@ -21,11 +21,21 @@ import (
|
|||||||
"go.opentelemetry.io/otel/api/trace"
|
"go.opentelemetry.io/otel/api/trace"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Tracer creates a named tracer that implements Tracer interface.
|
||||||
|
// If the name is an empty string then provider uses default name.
|
||||||
|
//
|
||||||
|
// This is short for TraceProvider().Tracer(name)
|
||||||
|
func Tracer(name string) trace.Tracer {
|
||||||
|
return TraceProvider().Tracer(name)
|
||||||
|
}
|
||||||
|
|
||||||
// TraceProvider returns the registered global trace provider.
|
// TraceProvider returns the registered global trace provider.
|
||||||
// If none is registered then an instance of trace.NoopProvider is returned.
|
// If none is registered then an instance of trace.NoopProvider is returned.
|
||||||
//
|
//
|
||||||
// Use the trace provider to create a named tracer. E.g.
|
// Use the trace provider to create a named tracer. E.g.
|
||||||
// tracer := global.TraceProvider().Tracer("example.com/foo")
|
// tracer := global.TraceProvider().Tracer("example.com/foo")
|
||||||
|
// or
|
||||||
|
// tracer := global.Tracer("example.com/foo")
|
||||||
func TraceProvider() trace.Provider {
|
func TraceProvider() trace.Provider {
|
||||||
return internal.TraceProvider()
|
return internal.TraceProvider()
|
||||||
}
|
}
|
||||||
@ -35,12 +45,22 @@ func SetTraceProvider(tp trace.Provider) {
|
|||||||
internal.SetTraceProvider(tp)
|
internal.SetTraceProvider(tp)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Meter gets a named Meter interface. If the name is an
|
||||||
|
// empty string, the provider uses a default name.
|
||||||
|
//
|
||||||
|
// This is short for MeterProvider().Meter(name)
|
||||||
|
func Meter(name string) metric.Meter {
|
||||||
|
return MeterProvider().Meter(name)
|
||||||
|
}
|
||||||
|
|
||||||
// MeterProvider returns the registered global meter provider. If
|
// MeterProvider returns the registered global meter provider. If
|
||||||
// none is registered then a default meter provider is returned that
|
// none is registered then a default meter provider is returned that
|
||||||
// forwards the Meter interface to the first registered Meter.
|
// forwards the Meter interface to the first registered Meter.
|
||||||
//
|
//
|
||||||
// Use the meter provider to create a named meter. E.g.
|
// Use the meter provider to create a named meter. E.g.
|
||||||
// meter := global.MeterProvider().Meter("example.com/foo")
|
// meter := global.MeterProvider().Meter("example.com/foo")
|
||||||
|
// or
|
||||||
|
// meter := global.Meter("example.com/foo")
|
||||||
func MeterProvider() metric.Provider {
|
func MeterProvider() metric.Provider {
|
||||||
return internal.MeterProvider()
|
return internal.MeterProvider()
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ func (fix *benchFixture) Meter(name string) metric.Meter {
|
|||||||
func BenchmarkGlobalInt64CounterAddNoSDK(b *testing.B) {
|
func BenchmarkGlobalInt64CounterAddNoSDK(b *testing.B) {
|
||||||
internal.ResetForTest()
|
internal.ResetForTest()
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
sdk := global.MeterProvider().Meter("test")
|
sdk := global.Meter("test")
|
||||||
labs := sdk.Labels(key.String("A", "B"))
|
labs := sdk.Labels(key.String("A", "B"))
|
||||||
cnt := sdk.NewInt64Counter("int64.counter")
|
cnt := sdk.NewInt64Counter("int64.counter")
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ func BenchmarkGlobalInt64CounterAddWithSDK(b *testing.B) {
|
|||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
fix := newFixture(b)
|
fix := newFixture(b)
|
||||||
|
|
||||||
sdk := global.MeterProvider().Meter("test")
|
sdk := global.Meter("test")
|
||||||
|
|
||||||
global.SetMeterProvider(fix)
|
global.SetMeterProvider(fix)
|
||||||
|
|
||||||
@ -103,7 +103,7 @@ func BenchmarkGlobalInt64CounterAddWithSDK(b *testing.B) {
|
|||||||
func BenchmarkStartEndSpan(b *testing.B) {
|
func BenchmarkStartEndSpan(b *testing.B) {
|
||||||
// Comapare with BenchmarkStartEndSpan() in ../../sdk/trace/benchmark_test.go
|
// Comapare with BenchmarkStartEndSpan() in ../../sdk/trace/benchmark_test.go
|
||||||
traceBenchmark(b, func(b *testing.B) {
|
traceBenchmark(b, func(b *testing.B) {
|
||||||
t := global.TraceProvider().Tracer("Benchmark StartEndSpan")
|
t := global.Tracer("Benchmark StartEndSpan")
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
b.ResetTimer()
|
b.ResetTimer()
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
|
@ -21,8 +21,8 @@ func TestDirect(t *testing.T) {
|
|||||||
internal.ResetForTest()
|
internal.ResetForTest()
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
meter1 := global.MeterProvider().Meter("test1")
|
meter1 := global.Meter("test1")
|
||||||
meter2 := global.MeterProvider().Meter("test2")
|
meter2 := global.Meter("test2")
|
||||||
lvals1 := key.String("A", "B")
|
lvals1 := key.String("A", "B")
|
||||||
labels1 := meter1.Labels(lvals1)
|
labels1 := meter1.Labels(lvals1)
|
||||||
lvals2 := key.String("C", "D")
|
lvals2 := key.String("C", "D")
|
||||||
@ -141,7 +141,7 @@ func TestBound(t *testing.T) {
|
|||||||
// Note: this test uses opposite Float64/Int64 number kinds
|
// Note: this test uses opposite Float64/Int64 number kinds
|
||||||
// vs. the above, to cover all the instruments.
|
// vs. the above, to cover all the instruments.
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
glob := global.MeterProvider().Meter("test")
|
glob := global.Meter("test")
|
||||||
lvals1 := key.String("A", "B")
|
lvals1 := key.String("A", "B")
|
||||||
labels1 := glob.Labels(lvals1)
|
labels1 := glob.Labels(lvals1)
|
||||||
|
|
||||||
@ -191,7 +191,7 @@ func TestUnbind(t *testing.T) {
|
|||||||
// Tests Unbind with SDK never installed.
|
// Tests Unbind with SDK never installed.
|
||||||
internal.ResetForTest()
|
internal.ResetForTest()
|
||||||
|
|
||||||
glob := global.MeterProvider().Meter("test")
|
glob := global.Meter("test")
|
||||||
lvals1 := key.New("A").String("B")
|
lvals1 := key.New("A").String("B")
|
||||||
labels1 := glob.Labels(lvals1)
|
labels1 := glob.Labels(lvals1)
|
||||||
|
|
||||||
@ -214,7 +214,7 @@ func TestDefaultSDK(t *testing.T) {
|
|||||||
internal.ResetForTest()
|
internal.ResetForTest()
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
meter1 := global.MeterProvider().Meter("builtin")
|
meter1 := global.Meter("builtin")
|
||||||
lvals1 := key.String("A", "B")
|
lvals1 := key.String("A", "B")
|
||||||
labels1 := meter1.Labels(lvals1)
|
labels1 := meter1.Labels(lvals1)
|
||||||
|
|
||||||
@ -251,7 +251,7 @@ func TestUnbindThenRecordOne(t *testing.T) {
|
|||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
sdk := metrictest.NewProvider()
|
sdk := metrictest.NewProvider()
|
||||||
meter := global.MeterProvider().Meter("test")
|
meter := global.Meter("test")
|
||||||
counter := meter.NewInt64Counter("test.counter")
|
counter := meter.NewInt64Counter("test.counter")
|
||||||
boundC := counter.Bind(meter.Labels())
|
boundC := counter.Bind(meter.Labels())
|
||||||
global.SetMeterProvider(sdk)
|
global.SetMeterProvider(sdk)
|
||||||
@ -260,6 +260,6 @@ func TestUnbindThenRecordOne(t *testing.T) {
|
|||||||
require.NotPanics(t, func() {
|
require.NotPanics(t, func() {
|
||||||
boundC.Add(ctx, 1)
|
boundC.Add(ctx, 1)
|
||||||
})
|
})
|
||||||
mock := global.MeterProvider().Meter("test").(*metrictest.Meter)
|
mock := global.Meter("test").(*metrictest.Meter)
|
||||||
require.Equal(t, 0, len(mock.MeasurementBatches))
|
require.Equal(t, 0, len(mock.MeasurementBatches))
|
||||||
}
|
}
|
||||||
|
@ -441,7 +441,7 @@ func (tm *tracerMessTest) setup(t *testing.T, tracer *internal.MockTracer) {
|
|||||||
|
|
||||||
func (tm *tracerMessTest) check(t *testing.T, tracer *internal.MockTracer) {
|
func (tm *tracerMessTest) check(t *testing.T, tracer *internal.MockTracer) {
|
||||||
globalOtTracer := ot.GlobalTracer()
|
globalOtTracer := ot.GlobalTracer()
|
||||||
globalOtelTracer := otelglobal.TraceProvider().Tracer("")
|
globalOtelTracer := otelglobal.Tracer("")
|
||||||
if len(tm.recordedOTSpanTracers) != 3 {
|
if len(tm.recordedOTSpanTracers) != 3 {
|
||||||
t.Errorf("Expected 3 recorded OpenTracing tracers from spans, got %d", len(tm.recordedOTSpanTracers))
|
t.Errorf("Expected 3 recorded OpenTracing tracers from spans, got %d", len(tm.recordedOTSpanTracers))
|
||||||
}
|
}
|
||||||
@ -685,7 +685,7 @@ func min(a, b int) int {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func runOtelOTOtel(t *testing.T, ctx context.Context, name string, callback func(*testing.T, context.Context) context.Context) {
|
func runOtelOTOtel(t *testing.T, ctx context.Context, name string, callback func(*testing.T, context.Context) context.Context) {
|
||||||
tr := otelglobal.TraceProvider().Tracer("")
|
tr := otelglobal.Tracer("")
|
||||||
ctx, span := tr.Start(ctx, fmt.Sprintf("%s_Otel_OTOtel", name), oteltrace.WithSpanKind(oteltrace.SpanKindClient))
|
ctx, span := tr.Start(ctx, fmt.Sprintf("%s_Otel_OTOtel", name), oteltrace.WithSpanKind(oteltrace.SpanKindClient))
|
||||||
defer span.End()
|
defer span.End()
|
||||||
ctx = callback(t, ctx)
|
ctx = callback(t, ctx)
|
||||||
@ -702,7 +702,7 @@ func runOtelOTOtel(t *testing.T, ctx context.Context, name string, callback func
|
|||||||
}
|
}
|
||||||
|
|
||||||
func runOTOtelOT(t *testing.T, ctx context.Context, name string, callback func(*testing.T, context.Context) context.Context) {
|
func runOTOtelOT(t *testing.T, ctx context.Context, name string, callback func(*testing.T, context.Context) context.Context) {
|
||||||
tr := otelglobal.TraceProvider().Tracer("")
|
tr := otelglobal.Tracer("")
|
||||||
span, ctx := ot.StartSpanFromContext(ctx, fmt.Sprintf("%s_OT_OtelOT", name), ot.Tag{Key: "span.kind", Value: "client"})
|
span, ctx := ot.StartSpanFromContext(ctx, fmt.Sprintf("%s_OT_OtelOT", name), ot.Tag{Key: "span.kind", Value: "client"})
|
||||||
defer span.Finish()
|
defer span.Finish()
|
||||||
ctx = callback(t, ctx)
|
ctx = callback(t, ctx)
|
||||||
|
@ -70,8 +70,8 @@ func main() {
|
|||||||
// Note: Have to get the meter and tracer after the global is
|
// Note: Have to get the meter and tracer after the global is
|
||||||
// initialized. See OTEP 0005.
|
// initialized. See OTEP 0005.
|
||||||
|
|
||||||
tracer := global.TraceProvider().Tracer("ex.com/basic")
|
tracer := global.Tracer("ex.com/basic")
|
||||||
meter := global.MeterProvider().Meter("ex.com/basic")
|
meter := global.Meter("ex.com/basic")
|
||||||
|
|
||||||
commonLabels := meter.Labels(lemonsKey.Int(10), key.String("A", "1"), key.String("B", "2"), key.String("C", "3"))
|
commonLabels := meter.Labels(lemonsKey.Int(10), key.String("A", "1"), key.String("B", "2"), key.String("C", "3"))
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ func UnaryServerInterceptor(ctx context.Context, req interface{}, info *grpc.Una
|
|||||||
grpcServerKey.String("hello-world-server"),
|
grpcServerKey.String("hello-world-server"),
|
||||||
}
|
}
|
||||||
|
|
||||||
tr := global.TraceProvider().Tracer("example/grpc")
|
tr := global.Tracer("example/grpc")
|
||||||
ctx, span := tr.Start(
|
ctx, span := tr.Start(
|
||||||
trace.ContextWithRemoteSpanContext(ctx, spanCtx),
|
trace.ContextWithRemoteSpanContext(ctx, spanCtx),
|
||||||
"hello-api-op",
|
"hello-api-op",
|
||||||
@ -64,7 +64,7 @@ func UnaryClientInterceptor(ctx context.Context, method string, req, reply inter
|
|||||||
requestMetadata, _ := metadata.FromOutgoingContext(ctx)
|
requestMetadata, _ := metadata.FromOutgoingContext(ctx)
|
||||||
metadataCopy := requestMetadata.Copy()
|
metadataCopy := requestMetadata.Copy()
|
||||||
|
|
||||||
tr := global.TraceProvider().Tracer("example/grpc")
|
tr := global.Tracer("example/grpc")
|
||||||
err := tr.WithSpan(ctx, "hello-api-op",
|
err := tr.WithSpan(ctx, "hello-api-op",
|
||||||
func(ctx context.Context) error {
|
func(ctx context.Context) error {
|
||||||
grpctrace.Inject(ctx, &metadataCopy)
|
grpctrace.Inject(ctx, &metadataCopy)
|
||||||
|
@ -59,7 +59,7 @@ func main() {
|
|||||||
|
|
||||||
var body []byte
|
var body []byte
|
||||||
|
|
||||||
tr := global.TraceProvider().Tracer("example/client")
|
tr := global.Tracer("example/client")
|
||||||
err := tr.WithSpan(ctx, "say hello",
|
err := tr.WithSpan(ctx, "say hello",
|
||||||
func(ctx context.Context) error {
|
func(ctx context.Context) error {
|
||||||
req, _ := http.NewRequest("GET", "http://localhost:7777/hello", nil)
|
req, _ := http.NewRequest("GET", "http://localhost:7777/hello", nil)
|
||||||
|
@ -47,7 +47,7 @@ func initTracer() {
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
initTracer()
|
initTracer()
|
||||||
tr := global.TraceProvider().Tracer("example/server")
|
tr := global.Tracer("example/server")
|
||||||
|
|
||||||
helloHandler := func(w http.ResponseWriter, req *http.Request) {
|
helloHandler := func(w http.ResponseWriter, req *http.Request) {
|
||||||
attrs, entries, spanCtx := httptrace.Extract(req.Context(), req)
|
attrs, entries, spanCtx := httptrace.Extract(req.Context(), req)
|
||||||
|
@ -58,14 +58,14 @@ func main() {
|
|||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
tr := global.TraceProvider().Tracer("component-main")
|
tr := global.Tracer("component-main")
|
||||||
ctx, span := tr.Start(ctx, "foo")
|
ctx, span := tr.Start(ctx, "foo")
|
||||||
bar(ctx)
|
bar(ctx)
|
||||||
span.End()
|
span.End()
|
||||||
}
|
}
|
||||||
|
|
||||||
func bar(ctx context.Context) {
|
func bar(ctx context.Context) {
|
||||||
tr := global.TraceProvider().Tracer("component-bar")
|
tr := global.Tracer("component-bar")
|
||||||
_, span := tr.Start(ctx, "bar")
|
_, span := tr.Start(ctx, "bar")
|
||||||
defer span.End()
|
defer span.End()
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ func SubOperation(ctx context.Context) error {
|
|||||||
|
|
||||||
// Using global provider. Alternative is to have application provide a getter
|
// Using global provider. Alternative is to have application provide a getter
|
||||||
// for its component to get the instance of the provider.
|
// for its component to get the instance of the provider.
|
||||||
tr := global.TraceProvider().Tracer("example/namedtracer/foo")
|
tr := global.Tracer("example/namedtracer/foo")
|
||||||
return tr.WithSpan(
|
return tr.WithSpan(
|
||||||
ctx,
|
ctx,
|
||||||
"Sub operation...",
|
"Sub operation...",
|
||||||
|
@ -50,7 +50,7 @@ func initMeter() *push.Controller {
|
|||||||
func main() {
|
func main() {
|
||||||
defer initMeter().Stop()
|
defer initMeter().Stop()
|
||||||
|
|
||||||
meter := global.MeterProvider().Meter("ex.com/basic")
|
meter := global.Meter("ex.com/basic")
|
||||||
observerLock := new(sync.RWMutex)
|
observerLock := new(sync.RWMutex)
|
||||||
observerValueToReport := new(float64)
|
observerValueToReport := new(float64)
|
||||||
observerLabelSetToReport := new(metric.LabelSet)
|
observerLabelSetToReport := new(metric.LabelSet)
|
||||||
|
@ -48,7 +48,7 @@ func Example_insecure() {
|
|||||||
|
|
||||||
global.SetTraceProvider(tp)
|
global.SetTraceProvider(tp)
|
||||||
|
|
||||||
tracer := global.TraceProvider().Tracer("test-tracer")
|
tracer := global.Tracer("test-tracer")
|
||||||
|
|
||||||
// Then use the OpenTelemetry tracing library, like we normally would.
|
// Then use the OpenTelemetry tracing library, like we normally would.
|
||||||
ctx, span := tracer.Start(context.Background(), "CollectorExporter-Example")
|
ctx, span := tracer.Start(context.Background(), "CollectorExporter-Example")
|
||||||
@ -89,7 +89,7 @@ func Example_withTLS() {
|
|||||||
|
|
||||||
global.SetTraceProvider(tp)
|
global.SetTraceProvider(tp)
|
||||||
|
|
||||||
tracer := global.TraceProvider().Tracer("test-tracer")
|
tracer := global.Tracer("test-tracer")
|
||||||
|
|
||||||
// Then use the OpenTelemetry tracing library, like we normally would.
|
// Then use the OpenTelemetry tracing library, like we normally would.
|
||||||
ctx, span := tracer.Start(context.Background(), "Securely-Talking-To-Collector-Span")
|
ctx, span := tracer.Start(context.Background(), "Securely-Talking-To-Collector-Span")
|
||||||
|
@ -158,7 +158,7 @@ func TestExporter_ExportSpan(t *testing.T) {
|
|||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
global.SetTraceProvider(tp)
|
global.SetTraceProvider(tp)
|
||||||
_, span := global.TraceProvider().Tracer("test-tracer").Start(context.Background(), "test-span")
|
_, span := global.Tracer("test-tracer").Start(context.Background(), "test-span")
|
||||||
span.End()
|
span.End()
|
||||||
|
|
||||||
assert.True(t, span.SpanContext().IsValid())
|
assert.True(t, span.SpanContext().IsValid())
|
||||||
|
@ -53,7 +53,7 @@ func NewClientTrace(ctx context.Context) *httptrace.ClientTrace {
|
|||||||
activeHooks: make(map[string]trace.Span),
|
activeHooks: make(map[string]trace.Span),
|
||||||
}
|
}
|
||||||
|
|
||||||
ct.tr = global.TraceProvider().Tracer("go.opentelemetry.io/otel/plugin/httptrace")
|
ct.tr = global.Tracer("go.opentelemetry.io/otel/plugin/httptrace")
|
||||||
|
|
||||||
return &httptrace.ClientTrace{
|
return &httptrace.ClientTrace{
|
||||||
GetConn: ct.getConn,
|
GetConn: ct.getConn,
|
||||||
|
@ -128,7 +128,7 @@ func WithMessageEvents(events ...event) Option {
|
|||||||
func NewHandler(handler http.Handler, operation string, opts ...Option) http.Handler {
|
func NewHandler(handler http.Handler, operation string, opts ...Option) http.Handler {
|
||||||
h := Handler{handler: handler, operation: operation}
|
h := Handler{handler: handler, operation: operation}
|
||||||
defaultOpts := []Option{
|
defaultOpts := []Option{
|
||||||
WithTracer(global.TraceProvider().Tracer("go.opentelemetry.io/plugin/othttp")),
|
WithTracer(global.Tracer("go.opentelemetry.io/plugin/othttp")),
|
||||||
WithPropagators(global.Propagators()),
|
WithPropagators(global.Propagators()),
|
||||||
WithSpanOptions(trace.WithSpanKind(trace.SpanKindServer)),
|
WithSpanOptions(trace.WithSpanKind(trace.SpanKindServer)),
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user