From 670e33498a6ba07ae7c0908daff7998a992cb01e Mon Sep 17 00:00:00 2001 From: tx7do Date: Fri, 27 Oct 2023 19:55:44 +0800 Subject: [PATCH] feat: tracer --- tag.bat | 2 +- tracer.go | 39 ++++++++++++++++++++++++++++++--------- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/tag.bat b/tag.bat index 52e7857..912a4bd 100644 --- a/tag.bat +++ b/tag.bat @@ -1,3 +1,3 @@ -git tag v0.2.8 +git tag v0.2.9 git push origin --tags \ No newline at end of file diff --git a/tracer.go b/tracer.go index 54fd443..af3a9ef 100644 --- a/tracer.go +++ b/tracer.go @@ -3,6 +3,7 @@ package bootstrap import ( "context" "errors" + "strings" "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc" "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp" @@ -23,15 +24,17 @@ func NewTracerExporter(exporterName, endpoint string) (traceSdk.SpanExporter, er exporterName = "jaeger" } + ctx := context.Background() + switch exporterName { case "zipkin": - return NewZipkinExporter(endpoint) + return NewZipkinExporter(ctx, endpoint) case "jaeger": fallthrough case "otlptracehttp": - return NewOtlpHttpExporter(endpoint) + return NewOtlpHttpExporter(ctx, endpoint) case "otlptracegrpc": - return NewOtlpGrpcExporter(endpoint) + return NewOtlpGrpcExporter(ctx, endpoint) default: return nil, errors.New("exporter type not support") } @@ -81,21 +84,39 @@ func NewTracerProvider(cfg *conf.Tracer, serviceInfo *ServiceInfo) error { } // NewZipkinExporter 创建一个zipkin导出器 -func NewZipkinExporter(endpoint string) (traceSdk.SpanExporter, error) { +func NewZipkinExporter(_ context.Context, endpoint string) (traceSdk.SpanExporter, error) { return zipkin.New(endpoint) } //// NewJaegerExporter 创建一个jaeger导出器 -//func NewJaegerExporter(endpoint string) (traceSdk.SpanExporter, error) { +//func NewJaegerExporter(_ context.Context, endpoint string) (traceSdk.SpanExporter, error) { // return jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(endpoint))) //} // NewOtlpHttpExporter 创建一个OTLP HTTP导出器 -func NewOtlpHttpExporter(endpoint string) (traceSdk.SpanExporter, error) { - return otlptracehttp.New(context.Background(), otlptracehttp.WithEndpoint(endpoint)) +func NewOtlpHttpExporter(ctx context.Context, endpoint string, options ...otlptracehttp.Option) (traceSdk.SpanExporter, error) { + var opts []otlptracehttp.Option + opts = append(opts, otlptracehttp.WithEndpoint(endpoint)) + + if strings.HasPrefix(endpoint, "http://") { + opts = append(opts, otlptracehttp.WithInsecure()) + } + + opts = append(opts, options...) + + return otlptracehttp.New(ctx, opts...) } // NewOtlpGrpcExporter 创建一个OTLP GRPC导出器 -func NewOtlpGrpcExporter(endpoint string) (traceSdk.SpanExporter, error) { - return otlptracegrpc.New(context.Background(), otlptracegrpc.WithEndpoint(endpoint)) +func NewOtlpGrpcExporter(ctx context.Context, endpoint string, options ...otlptracegrpc.Option) (traceSdk.SpanExporter, error) { + var opts []otlptracegrpc.Option + opts = append(opts, otlptracegrpc.WithEndpoint(endpoint)) + + if strings.HasPrefix(endpoint, "http://") { + opts = append(opts, otlptracegrpc.WithInsecure()) + } + + opts = append(opts, options...) + + return otlptracegrpc.New(ctx, opts...) }