From 9fd960c17f08875509955d33fa526dafa6b5b1a4 Mon Sep 17 00:00:00 2001 From: Rogee Date: Tue, 7 Jan 2025 23:22:36 +0800 Subject: [PATCH] fix:issues --- templates/project/providers/otel/funcs.go.tpl | 91 +++++++++++++++++++ .../project/providers/otel/provider.go.tpl | 22 ++--- 2 files changed, 99 insertions(+), 14 deletions(-) create mode 100644 templates/project/providers/otel/funcs.go.tpl diff --git a/templates/project/providers/otel/funcs.go.tpl b/templates/project/providers/otel/funcs.go.tpl new file mode 100644 index 0000000..34db99f --- /dev/null +++ b/templates/project/providers/otel/funcs.go.tpl @@ -0,0 +1,91 @@ +package otel + +import ( + "context" + + "go.opentelemetry.io/otel/metric" + "go.opentelemetry.io/otel/trace" +) + +var ( + tracer trace.Tracer + meter metric.Meter +) + +func Start(ctx context.Context, spanName string, opts ...trace.SpanStartOption) (context.Context, trace.Span) { + return tracer.Start(ctx, spanName, opts...) +} + +func Int64Counter(name string, options ...metric.Int64CounterOption) (metric.Int64Counter, error) { + return meter.Int64Counter(name, options...) +} + +// Int64UpDownCounter +func Int64UpDownCounter(name string, options ...metric.Int64UpDownCounterOption) (metric.Int64UpDownCounter, error) { + return meter.Int64UpDownCounter(name, options...) +} + +// Int64Histogram +func Int64Histogram(name string, options ...metric.Int64HistogramOption) (metric.Int64Histogram, error) { + return meter.Int64Histogram(name, options...) +} + +// Int64Gauge +func Int64Gauge(name string, options ...metric.Int64GaugeOption) (metric.Int64Gauge, error) { + return meter.Int64Gauge(name, options...) +} + +// Int64ObservableCounter +func Int64ObservableCounter(name string, options ...metric.Int64ObservableCounterOption) (metric.Int64ObservableCounter, error) { + return meter.Int64ObservableCounter(name, options...) +} + +// Int64ObservableUpDownCounter +func Int64ObservableUpDownCounter(name string, options ...metric.Int64ObservableUpDownCounterOption) (metric.Int64ObservableUpDownCounter, error) { + return meter.Int64ObservableUpDownCounter(name, options...) +} + +// Int64ObservableGauge +func Int64ObservableGauge(name string, options ...metric.Int64ObservableGaugeOption) (metric.Int64ObservableGauge, error) { + return meter.Int64ObservableGauge(name, options...) +} + +// Float64Counter +func Float64Counter(name string, options ...metric.Float64CounterOption) (metric.Float64Counter, error) { + return meter.Float64Counter(name, options...) +} + +// Float64UpDownCounter +func Float64UpDownCounter(name string, options ...metric.Float64UpDownCounterOption) (metric.Float64UpDownCounter, error) { + return meter.Float64UpDownCounter(name, options...) +} + +// Float64Histogram +func Float64Histogram(name string, options ...metric.Float64HistogramOption) (metric.Float64Histogram, error) { + return meter.Float64Histogram(name, options...) +} + +// Float64Gauge +func Float64Gauge(name string, options ...metric.Float64GaugeOption) (metric.Float64Gauge, error) { + return meter.Float64Gauge(name, options...) +} + +// Float64ObservableCounter +func Float64ObservableCounter(name string, options ...metric.Float64ObservableCounterOption) (metric.Float64ObservableCounter, error) { + return meter.Float64ObservableCounter(name, options...) +} + +// Float64ObservableUpDownCounter +func Float64ObservableUpDownCounter(name string, options ...metric.Float64ObservableUpDownCounterOption) (metric.Float64ObservableUpDownCounter, error) { + return meter.Float64ObservableUpDownCounter(name, options...) +} + +// Float64ObservableGauge +func Float64ObservableGauge(name string, options ...metric.Float64ObservableGaugeOption) (metric.Float64ObservableGauge, error) { + return meter.Float64ObservableGauge(name, options...) +} + +// RegisterCallback +func RegisterCallback(f metric.Callback, instruments ...metric.Observable) (metric.Registration, error) { + return meter.RegisterCallback(f, instruments...) +} diff --git a/templates/project/providers/otel/provider.go.tpl b/templates/project/providers/otel/provider.go.tpl index 0c61489..b8c4d11 100644 --- a/templates/project/providers/otel/provider.go.tpl +++ b/templates/project/providers/otel/provider.go.tpl @@ -18,21 +18,14 @@ import ( "go.opentelemetry.io/otel/exporters/otlp/otlptrace" "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc" "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp" - "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/propagation" sdkmetric "go.opentelemetry.io/otel/sdk/metric" "go.opentelemetry.io/otel/sdk/resource" sdktrace "go.opentelemetry.io/otel/sdk/trace" semconv "go.opentelemetry.io/otel/semconv/v1.15.0" - "go.opentelemetry.io/otel/trace" "google.golang.org/grpc/encoding/gzip" ) -var ( - Tracer trace.Tracer - Meter metric.Meter -) - func Provide(opts ...opt.Option) error { o := opt.New(opts...) var config Config @@ -41,7 +34,7 @@ func Provide(opts ...opt.Option) error { } config.format() return container.Container.Provide(func(ctx context.Context) (contracts.Initial, error) { - o := &OTEL{ + o := &builder{ config: &config, } @@ -57,20 +50,21 @@ func Provide(opts ...opt.Option) error { return o, errors.Wrapf(err, "Failed to create OpenTelemetry tracer provider") } - Tracer = otel.Tracer(config.ServiceName) - Meter = otel.Meter(config.ServiceName) + tracer = otel.Tracer(config.ServiceName) + meter = otel.Meter(config.ServiceName) + log.Info("otel provider init success") return o, nil }, o.DiOptions()...) } -type OTEL struct { +type builder struct { config *Config resource *resource.Resource } -func (o *OTEL) initResource(ctx context.Context) (err error) { +func (o *builder) initResource(ctx context.Context) (err error) { hostName, _ := os.Hostname() o.resource, err = resource.New( @@ -91,7 +85,7 @@ func (o *OTEL) initResource(ctx context.Context) (err error) { return } -func (o *OTEL) initMeterProvider(ctx context.Context) (err error) { +func (o *builder) initMeterProvider(ctx context.Context) (err error) { exporterGrpcFunc := func(ctx context.Context) (sdkmetric.Exporter, error) { opts := []otlpmetricgrpc.Option{ otlpmetricgrpc.WithEndpoint(o.config.EndpointGRPC), @@ -160,7 +154,7 @@ func (o *OTEL) initMeterProvider(ctx context.Context) (err error) { return } -func (o *OTEL) initTracerProvider(ctx context.Context) error { +func (o *builder) initTracerProvider(ctx context.Context) error { exporterGrpcFunc := func(ctx context.Context) (*otlptrace.Exporter, error) { opts := []otlptracegrpc.Option{ otlptracegrpc.WithCompressor(gzip.Name),