51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package telemetry // import "go.opentelemetry.io/collector/service/telemetry"
|
|
|
|
import (
|
|
"context"
|
|
|
|
config "go.opentelemetry.io/contrib/otelconf/v0.3.0"
|
|
"go.opentelemetry.io/otel/sdk/resource"
|
|
semconv "go.opentelemetry.io/otel/semconv/v1.26.0"
|
|
|
|
"go.opentelemetry.io/collector/config/configtelemetry"
|
|
)
|
|
|
|
// NewSDK creates a new OpenTelemetry SDK with the provided configuration.
|
|
func NewSDK(ctx context.Context, cfg *Config, res *resource.Resource) (*config.SDK, error) {
|
|
mpConfig := cfg.Metrics.MeterProvider
|
|
if cfg.Metrics.Level == configtelemetry.LevelNone {
|
|
mpConfig.Readers = nil
|
|
}
|
|
|
|
var resourceAttrs []config.AttributeNameValue
|
|
for _, r := range res.Attributes() {
|
|
resourceAttrs = append(resourceAttrs, config.AttributeNameValue{
|
|
Name: string(r.Key), Value: r.Value.AsString(),
|
|
})
|
|
}
|
|
|
|
sdk, err := config.NewSDK(
|
|
config.WithContext(ctx),
|
|
config.WithOpenTelemetryConfiguration(
|
|
config.OpenTelemetryConfiguration{
|
|
LoggerProvider: &config.LoggerProvider{
|
|
Processors: cfg.Logs.Processors,
|
|
},
|
|
MeterProvider: &mpConfig,
|
|
TracerProvider: &cfg.Traces.TracerProvider,
|
|
Resource: &config.Resource{
|
|
SchemaUrl: ptr(semconv.SchemaURL),
|
|
Attributes: resourceAttrs,
|
|
},
|
|
},
|
|
),
|
|
)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &sdk, nil
|
|
}
|