Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

example/dice: Do not use semconv #4849

Merged
merged 6 commits into from Jan 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 5 additions & 1 deletion example/dice/doc.go
Expand Up @@ -12,5 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.

// Dice is the "Roll the dice" getting started example application.
// Dice is the "Roll the dice" application.
//
// [Getting Started] uses this example to demonstrate OpenTelemetry Go.
//
// [Getting Started]: https://opentelemetry.io/docs/languages/net/automatic/getting-started/
package main
4 changes: 1 addition & 3 deletions example/dice/main.go
Expand Up @@ -39,9 +39,7 @@ func run() (err error) {
defer stop()

// Set up OpenTelemetry.
serviceName := "dice"
serviceVersion := "0.1.0"
otelShutdown, err := setupOTelSDK(ctx, serviceName, serviceVersion)
otelShutdown, err := setupOTelSDK(ctx)
if err != nil {
return
}
Expand Down
29 changes: 5 additions & 24 deletions example/dice/otel.go
Expand Up @@ -24,14 +24,12 @@ import (
"go.opentelemetry.io/otel/exporters/stdout/stdouttrace"
"go.opentelemetry.io/otel/propagation"
"go.opentelemetry.io/otel/sdk/metric"
"go.opentelemetry.io/otel/sdk/resource"
"go.opentelemetry.io/otel/sdk/trace"
semconv "go.opentelemetry.io/otel/semconv/v1.24.0"
)

// setupOTelSDK bootstraps the OpenTelemetry pipeline.
// If it does not return an error, make sure to call shutdown for proper cleanup.
func setupOTelSDK(ctx context.Context, serviceName, serviceVersion string) (shutdown func(context.Context) error, err error) {
func setupOTelSDK(ctx context.Context) (shutdown func(context.Context) error, err error) {
var shutdownFuncs []func(context.Context) error

// shutdown calls cleanup functions registered via shutdownFuncs.
Expand All @@ -51,19 +49,12 @@ func setupOTelSDK(ctx context.Context, serviceName, serviceVersion string) (shut
err = errors.Join(inErr, shutdown(ctx))
}

// Set up resource.
res, err := newResource(serviceName, serviceVersion)
if err != nil {
handleErr(err)
return
}

// Set up propagator.
prop := newPropagator()
otel.SetTextMapPropagator(prop)

// Set up trace provider.
tracerProvider, err := newTraceProvider(res)
tracerProvider, err := newTraceProvider()
if err != nil {
handleErr(err)
return
Expand All @@ -72,7 +63,7 @@ func setupOTelSDK(ctx context.Context, serviceName, serviceVersion string) (shut
otel.SetTracerProvider(tracerProvider)

// Set up meter provider.
meterProvider, err := newMeterProvider(res)
meterProvider, err := newMeterProvider()
if err != nil {
handleErr(err)
return
Expand All @@ -83,22 +74,14 @@ func setupOTelSDK(ctx context.Context, serviceName, serviceVersion string) (shut
return
}

func newResource(serviceName, serviceVersion string) (*resource.Resource, error) {
return resource.Merge(resource.Default(),
resource.NewWithAttributes(semconv.SchemaURL,
semconv.ServiceName(serviceName),
semconv.ServiceVersion(serviceVersion),
))
}

func newPropagator() propagation.TextMapPropagator {
return propagation.NewCompositeTextMapPropagator(
propagation.TraceContext{},
propagation.Baggage{},
)
}

func newTraceProvider(res *resource.Resource) (*trace.TracerProvider, error) {
func newTraceProvider() (*trace.TracerProvider, error) {
traceExporter, err := stdouttrace.New(
stdouttrace.WithPrettyPrint())
if err != nil {
Expand All @@ -109,19 +92,17 @@ func newTraceProvider(res *resource.Resource) (*trace.TracerProvider, error) {
trace.WithBatcher(traceExporter,
// Default is 5s. Set to 1s for demonstrative purposes.
trace.WithBatchTimeout(time.Second)),
trace.WithResource(res),
)
return traceProvider, nil
}

func newMeterProvider(res *resource.Resource) (*metric.MeterProvider, error) {
func newMeterProvider() (*metric.MeterProvider, error) {
metricExporter, err := stdoutmetric.New()
if err != nil {
return nil, err
}

meterProvider := metric.NewMeterProvider(
metric.WithResource(res),
metric.WithReader(metric.NewPeriodicReader(metricExporter,
// Default is 1m. Set to 3s for demonstrative purposes.
metric.WithInterval(3*time.Second))),
Expand Down