82 lines
1.8 KiB
Go
82 lines
1.8 KiB
Go
package tracing
|
|
|
|
import (
|
|
"github.com/juju/errors"
|
|
|
|
"go.opentelemetry.io/otel/sdk/resource"
|
|
|
|
sdktrace "go.opentelemetry.io/otel/sdk/trace"
|
|
semconv "go.opentelemetry.io/otel/semconv/v1.12.0"
|
|
)
|
|
|
|
// Init will try to initialize tracing by trying to retrieve config from multiple source.
|
|
func Init() (*sdktrace.TracerProvider, error) {
|
|
|
|
// loading configuration
|
|
c, err := loadConfig()
|
|
if err != nil {
|
|
return nil, errors.Trace(err)
|
|
}
|
|
|
|
return initFromSource(c)
|
|
}
|
|
|
|
// InitFromCustomVaultSecret will initialize tracing with a vault secret.
|
|
func InitFromCustomVaultSecret(secret string) (*sdktrace.TracerProvider, error) {
|
|
|
|
c, err := loadConfigFromVault(secret)
|
|
if err != nil {
|
|
return nil, errors.Trace(err)
|
|
}
|
|
|
|
return initFromSource(c)
|
|
}
|
|
|
|
// InitFromCustomFile will initialize tracing with a config file.
|
|
func InitFromCustomFile(path string) (*sdktrace.TracerProvider, error) {
|
|
|
|
c, err := loadConfigFromFile(path)
|
|
if err != nil {
|
|
return nil, errors.Trace(err)
|
|
}
|
|
|
|
return initFromSource(c)
|
|
}
|
|
|
|
func initFromSource(c *ConfigStruct) (*sdktrace.TracerProvider, error) {
|
|
err := c.applyEnv()
|
|
if err != nil {
|
|
return nil, errors.Trace(err)
|
|
}
|
|
|
|
return InitFromCustomConfig(c)
|
|
}
|
|
|
|
// InitFromCustomConfig will initialize tracing from a gaven config.
|
|
func InitFromCustomConfig(c *ConfigStruct) (*sdktrace.TracerProvider, error) {
|
|
|
|
err := c.IsValid()
|
|
if err != nil {
|
|
return nil, errors.Trace(err)
|
|
}
|
|
|
|
// Ensure default SDK resources and the required service name are set.
|
|
r, err := resource.Merge(
|
|
resource.Default(),
|
|
resource.NewWithAttributes(
|
|
semconv.SchemaURL,
|
|
semconv.ServiceNameKey.String("myService"),
|
|
semconv.ServiceVersionKey.String("1.0.0"),
|
|
semconv.ServiceInstanceIDKey.String("abcdef12345"),
|
|
),
|
|
)
|
|
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return sdktrace.NewTracerProvider(
|
|
sdktrace.WithResource(r),
|
|
), nil
|
|
}
|