You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2025-07-17 01:12:45 +02:00
Unify trace and metric stdout exporters (#956)
* Consolidate stdout exporter * Move config to own file and match project standard * Abstract Exporter into unified struct * Rename trace part of the exporter * Update import paths and configuration * Update tests * Update InstallNewPipeline to not return traceProvider It is a registered global, access it that way. * Update example_test * Update docs * Update example to be for whole package * Update metric output Closer match the span output. * Clean up span output Print as a batch and cleanup marshaling. * Correct spelling error in doc * Add Exporters README * Update Changelog * Propagate changes to rest of project * Lint fixes * Fix example test in metric SDK * Add disable config options for trace and metric Co-authored-by: Liz Fong-Jones <lizf@honeycomb.io>
This commit is contained in:
@ -23,11 +23,7 @@ import (
|
||||
"go.opentelemetry.io/otel/api/kv"
|
||||
"go.opentelemetry.io/otel/api/metric"
|
||||
"go.opentelemetry.io/otel/api/trace"
|
||||
metricstdout "go.opentelemetry.io/otel/exporters/metric/stdout"
|
||||
tracestdout "go.opentelemetry.io/otel/exporters/trace/stdout"
|
||||
"go.opentelemetry.io/otel/sdk/metric/controller/push"
|
||||
"go.opentelemetry.io/otel/sdk/resource"
|
||||
sdktrace "go.opentelemetry.io/otel/sdk/trace"
|
||||
"go.opentelemetry.io/otel/exporters/stdout"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -37,37 +33,15 @@ var (
|
||||
anotherKey = kv.Key("ex.com/another")
|
||||
)
|
||||
|
||||
// initTracer creates and registers trace provider instance.
|
||||
func initTracer() {
|
||||
var err error
|
||||
exp, err := tracestdout.NewExporter(tracestdout.Options{PrettyPrint: false})
|
||||
if err != nil {
|
||||
log.Panicf("failed to initialize trace stdout exporter %v", err)
|
||||
return
|
||||
}
|
||||
tp, err := sdktrace.NewProvider(sdktrace.WithSyncer(exp),
|
||||
sdktrace.WithConfig(sdktrace.Config{DefaultSampler: sdktrace.AlwaysSample()}),
|
||||
sdktrace.WithResource(resource.New(kv.String("rk1", "rv11"), kv.Int64("rk2", 5))))
|
||||
if err != nil {
|
||||
log.Panicf("failed to initialize trace provider %v", err)
|
||||
}
|
||||
global.SetTraceProvider(tp)
|
||||
}
|
||||
|
||||
func initMeter() *push.Controller {
|
||||
pusher, err := metricstdout.InstallNewPipeline(metricstdout.Config{
|
||||
Quantiles: []float64{0.5, 0.9, 0.99},
|
||||
PrettyPrint: false,
|
||||
})
|
||||
if err != nil {
|
||||
log.Panicf("failed to initialize metric stdout exporter %v", err)
|
||||
}
|
||||
return pusher
|
||||
}
|
||||
|
||||
func main() {
|
||||
defer initMeter().Stop()
|
||||
initTracer()
|
||||
pusher, err := stdout.InstallNewPipeline([]stdout.Option{
|
||||
stdout.WithQuantiles([]float64{0.5, 0.9, 0.99}),
|
||||
stdout.WithPrettyPrint(),
|
||||
}, nil)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to initialize stdout export pipeline: %v", err)
|
||||
}
|
||||
defer pusher.Stop()
|
||||
|
||||
tracer := global.Tracer("ex.com/basic")
|
||||
meter := global.Meter("ex.com/basic")
|
||||
@ -93,7 +67,7 @@ func main() {
|
||||
valuerecorder := valuerecorderTwo.Bind(commonLabels...)
|
||||
defer valuerecorder.Unbind()
|
||||
|
||||
err := tracer.WithSpan(ctx, "operation", func(ctx context.Context) error {
|
||||
err = tracer.WithSpan(ctx, "operation", func(ctx context.Context) error {
|
||||
|
||||
trace.SpanFromContext(ctx).AddEvent(ctx, "Nice operation!", kv.Key("bogons").Int(100))
|
||||
|
||||
|
Reference in New Issue
Block a user