From 9d67cb4f34e6511a73d3d9b54e991667a87a9576 Mon Sep 17 00:00:00 2001 From: houseme Date: Tue, 21 Sep 2021 15:15:37 +0800 Subject: [PATCH 1/3] [feature] upgrade opentelemetry version v1.0.0 --- go.mod | 5 ++--- go.sum | 10 ++++------ net/ghttp/ghttp_middleware_tracing.go | 12 +++++++----- net/ghttp/internal/client/client_tracing.go | 10 ++++++---- .../internal/client/client_tracing_tracer.go | 18 ++++++++++-------- net/gtrace/gtrace.go | 5 +++-- net/gtrace/gtrace_baggage.go | 1 + net/gtrace/gtrace_span.go | 2 ++ net/gtrace/gtrace_tracer.go | 2 +- net/gtrace/gtrace_unit_carrier_test.go | 11 ++++++----- 10 files changed, 42 insertions(+), 34 deletions(-) diff --git a/go.mod b/go.mod index fc660eac6..f17f862f4 100644 --- a/go.mod +++ b/go.mod @@ -12,9 +12,8 @@ require ( github.com/gorilla/websocket v1.4.2 github.com/grokify/html-strip-tags-go v0.0.0-20190921062105-daaa06bf1aaf github.com/olekukonko/tablewriter v0.0.5 - go.opentelemetry.io/otel v1.0.0-RC3 - go.opentelemetry.io/otel/oteltest v1.0.0-RC3 - go.opentelemetry.io/otel/trace v1.0.0-RC3 + go.opentelemetry.io/otel v1.0.0 + go.opentelemetry.io/otel/trace v1.0.0 golang.org/x/net v0.0.0-20210520170846-37e1c6afe023 golang.org/x/text v0.3.6 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b diff --git a/go.sum b/go.sum index 269310b56..e388c06c0 100644 --- a/go.sum +++ b/go.sum @@ -32,12 +32,10 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -go.opentelemetry.io/otel v1.0.0-RC3 h1:kvwiyEkiUT/JaadXzVLI/R1wDO934A7r3Bs2wEe6wqA= -go.opentelemetry.io/otel v1.0.0-RC3/go.mod h1:Ka5j3ua8tZs4Rkq4Ex3hwgBgOchyPVq5S6P2lz//nKQ= -go.opentelemetry.io/otel/oteltest v1.0.0-RC3 h1:MjaeegZTaX0Bv9uB9CrdVjOFM/8slRjReoWoV9xDCpY= -go.opentelemetry.io/otel/oteltest v1.0.0-RC3/go.mod h1:xpzajI9JBRr7gX63nO6kAmImmYIAtuQblZ36Z+LfCjE= -go.opentelemetry.io/otel/trace v1.0.0-RC3 h1:9F0ayEvlxv8BmNmPbU005WK7hC+7KbOazCPZjNa1yME= -go.opentelemetry.io/otel/trace v1.0.0-RC3/go.mod h1:VUt2TUYd8S2/ZRX09ZDFZQwn2RqfMB5MzO17jBojGxo= +go.opentelemetry.io/otel v1.0.0 h1:qTTn6x71GVBvoafHK/yaRUmFzI4LcONZD0/kXxl5PHI= +go.opentelemetry.io/otel v1.0.0/go.mod h1:AjRVh9A5/5DE7S+mZtTR6t8vpKKryam+0lREnfmS4cg= +go.opentelemetry.io/otel/trace v1.0.0 h1:TSBr8GTEtKevYMG/2d21M989r5WJYVimhTHBKVEZuh4= +go.opentelemetry.io/otel/trace v1.0.0/go.mod h1:PXTWqayeFUlJV1YDNhsJYB184+IvAH814St6o6ajzIs= golang.org/x/net v0.0.0-20210520170846-37e1c6afe023 h1:ADo5wSpq2gqaCGQWzk7S5vd//0iyyLeAratkEoG5dLE= golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/net/ghttp/ghttp_middleware_tracing.go b/net/ghttp/ghttp_middleware_tracing.go index 052b4ee7e..43faa8554 100644 --- a/net/ghttp/ghttp_middleware_tracing.go +++ b/net/ghttp/ghttp_middleware_tracing.go @@ -8,7 +8,11 @@ package ghttp import ( "fmt" + "io/ioutil" + "net/http" + "github.com/gogf/gf" + "github.com/gogf/gf/encoding/gjson" "github.com/gogf/gf/internal/utils" "github.com/gogf/gf/net/ghttp/internal/client" "github.com/gogf/gf/net/ghttp/internal/httputil" @@ -19,8 +23,6 @@ import ( "go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/propagation" "go.opentelemetry.io/otel/trace" - "io/ioutil" - "net/http" ) const ( @@ -56,8 +58,8 @@ func MiddlewareServerTracing(r *Request) { r.Body = utils.NewReadCloser(reqBodyContentBytes, false) span.AddEvent(tracingEventHttpRequest, trace.WithAttributes( - attribute.Any(tracingEventHttpRequestHeaders, httputil.HeaderToMap(r.Header)), - attribute.Any(tracingEventHttpRequestBaggage, gtrace.GetBaggageMap(ctx)), + attribute.String(tracingEventHttpRequestHeaders, gjson.New(httputil.HeaderToMap(r.Header)).MustToJsonString()), + attribute.String(tracingEventHttpRequestBaggage, gtrace.GetBaggageMap(ctx).String()), attribute.String(tracingEventHttpRequestBody, gstr.StrLimit( string(reqBodyContentBytes), gtrace.MaxContentLogSize(), @@ -82,7 +84,7 @@ func MiddlewareServerTracing(r *Request) { ) span.AddEvent(tracingEventHttpResponse, trace.WithAttributes( - attribute.Any(tracingEventHttpResponseHeaders, httputil.HeaderToMap(r.Response.Header())), + attribute.String(tracingEventHttpResponseHeaders, gjson.New(httputil.HeaderToMap(r.Response.Header())).MustToJsonString()), attribute.String(tracingEventHttpResponseBody, resBodyContent), )) return diff --git a/net/ghttp/internal/client/client_tracing.go b/net/ghttp/internal/client/client_tracing.go index 567ea6c14..13b23489b 100644 --- a/net/ghttp/internal/client/client_tracing.go +++ b/net/ghttp/internal/client/client_tracing.go @@ -8,7 +8,12 @@ package client import ( "fmt" + "io/ioutil" + "net/http" + "net/http/httptrace" + "github.com/gogf/gf" + "github.com/gogf/gf/encoding/gjson" "github.com/gogf/gf/internal/utils" "github.com/gogf/gf/net/ghttp/internal/httputil" "github.com/gogf/gf/net/gtrace" @@ -18,9 +23,6 @@ import ( "go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/propagation" "go.opentelemetry.io/otel/trace" - "io/ioutil" - "net/http" - "net/http/httptrace" ) const ( @@ -70,7 +72,7 @@ func MiddlewareTracing(c *Client, r *http.Request) (response *Response, err erro response.Body = utils.NewReadCloser(reqBodyContentBytes, false) span.AddEvent(tracingEventHttpResponse, trace.WithAttributes( - attribute.Any(tracingEventHttpResponseHeaders, httputil.HeaderToMap(response.Header)), + attribute.String(tracingEventHttpResponseHeaders, gjson.New(httputil.HeaderToMap(response.Header)).MustToJsonString()), attribute.String(tracingEventHttpResponseBody, gstr.StrLimit( string(reqBodyContentBytes), gtrace.MaxContentLogSize(), diff --git a/net/ghttp/internal/client/client_tracing_tracer.go b/net/ghttp/internal/client/client_tracing_tracer.go index ef4733f45..5d16216cb 100644 --- a/net/ghttp/internal/client/client_tracing_tracer.go +++ b/net/ghttp/internal/client/client_tracing_tracer.go @@ -10,18 +10,20 @@ import ( "context" "crypto/tls" "fmt" - "github.com/gogf/gf/internal/utils" - "github.com/gogf/gf/net/gtrace" - "github.com/gogf/gf/text/gstr" - "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/codes" - "go.opentelemetry.io/otel/trace" "io/ioutil" "net/http" "net/http/httptrace" "net/textproto" "strings" "sync" + + "github.com/gogf/gf/encoding/gjson" + "github.com/gogf/gf/internal/utils" + "github.com/gogf/gf/net/gtrace" + "github.com/gogf/gf/text/gstr" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/codes" + "go.opentelemetry.io/otel/trace" ) type clientTracer struct { @@ -147,8 +149,8 @@ func (ct *clientTracer) wroteRequest(info httptrace.WroteRequestInfo) { } ct.span.AddEvent(tracingEventHttpRequest, trace.WithAttributes( - attribute.Any(tracingEventHttpRequestHeaders, ct.headers), - attribute.Any(tracingEventHttpRequestBaggage, gtrace.GetBaggageMap(ct.Context)), + attribute.String(tracingEventHttpRequestHeaders, gjson.New(ct.headers).MustToJsonString()), + attribute.String(tracingEventHttpRequestBaggage, gtrace.GetBaggageMap(ct.Context).String()), attribute.String(tracingEventHttpRequestBody, gstr.StrLimit( string(ct.requestBody), gtrace.MaxContentLogSize(), diff --git a/net/gtrace/gtrace.go b/net/gtrace/gtrace.go index 6d847474b..1325ddd32 100644 --- a/net/gtrace/gtrace.go +++ b/net/gtrace/gtrace.go @@ -9,6 +9,9 @@ package gtrace import ( "context" + "os" + "strings" + "github.com/gogf/gf/container/gmap" "github.com/gogf/gf/container/gvar" "github.com/gogf/gf/net/gipv4" @@ -17,8 +20,6 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/propagation" "go.opentelemetry.io/otel/trace" - "os" - "strings" ) const ( diff --git a/net/gtrace/gtrace_baggage.go b/net/gtrace/gtrace_baggage.go index d04834645..1e9a89606 100644 --- a/net/gtrace/gtrace_baggage.go +++ b/net/gtrace/gtrace_baggage.go @@ -8,6 +8,7 @@ package gtrace import ( "context" + "github.com/gogf/gf/container/gmap" "github.com/gogf/gf/container/gvar" "github.com/gogf/gf/util/gconv" diff --git a/net/gtrace/gtrace_span.go b/net/gtrace/gtrace_span.go index 72f88c418..40d1c7b33 100644 --- a/net/gtrace/gtrace_span.go +++ b/net/gtrace/gtrace_span.go @@ -8,9 +8,11 @@ package gtrace import ( "context" + "go.opentelemetry.io/otel/trace" ) +// Span 。 type Span struct { trace.Span } diff --git a/net/gtrace/gtrace_tracer.go b/net/gtrace/gtrace_tracer.go index 8394fcebf..7a9e51df3 100644 --- a/net/gtrace/gtrace_tracer.go +++ b/net/gtrace/gtrace_tracer.go @@ -15,7 +15,7 @@ type Tracer struct { trace.Tracer } -// Tracer is a short function for retrieving Tracer. +// NewTracer Tracer is a short function for retrieving Tracer. func NewTracer(name ...string) *Tracer { tracerName := "" if len(name) > 0 { diff --git a/net/gtrace/gtrace_unit_carrier_test.go b/net/gtrace/gtrace_unit_carrier_test.go index 095250c92..f5beceec9 100644 --- a/net/gtrace/gtrace_unit_carrier_test.go +++ b/net/gtrace/gtrace_unit_carrier_test.go @@ -8,12 +8,12 @@ package gtrace_test import ( "context" + "testing" + "github.com/gogf/gf/net/gtrace" "github.com/gogf/gf/test/gtest" "go.opentelemetry.io/otel" - "go.opentelemetry.io/otel/oteltest" "go.opentelemetry.io/otel/trace" - "testing" ) const ( @@ -51,14 +51,15 @@ func TestNewCarrier(t *testing.T) { SpanID: spanID, TraceFlags: trace.FlagsSampled, })) - ctx, _ = oteltest.DefaultTracer().Start(ctx, "inject") + + ctx, _ = otel.Tracer("").Start(ctx, "inject") carrier1 := gtrace.NewCarrier() otel.GetTextMapPropagator().Inject(ctx, carrier1) - t.Assert(carrier1.String(), `{"traceparent":"00-4bf92f3577b34da6a3ce929d0e0e4736-0000000000000002-01"}`) + t.Assert(carrier1.String(), `{"traceparent":"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01"}`) ctx = otel.GetTextMapPropagator().Extract(ctx, carrier1) gotSc := trace.SpanContextFromContext(ctx) t.Assert(gotSc.TraceID().String(), traceID.String()) - t.Assert(gotSc.SpanID().String(), "0000000000000002") + t.Assert(gotSc.SpanID().String(), "00f067aa0ba902b7") }) } From 45b45517c864b6d85882109d6dfbdf2d921c05a7 Mon Sep 17 00:00:00 2001 From: houseme Date: Tue, 21 Sep 2021 23:53:03 +0800 Subject: [PATCH 2/3] [feature] upgrade opentelemetry version v1.0.0 --- net/ghttp/ghttp_middleware_tracing.go | 3 ++- net/ghttp/internal/client/client_tracing.go | 4 ++-- net/ghttp/internal/client/client_tracing_tracer.go | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/net/ghttp/ghttp_middleware_tracing.go b/net/ghttp/ghttp_middleware_tracing.go index 43faa8554..d50c39310 100644 --- a/net/ghttp/ghttp_middleware_tracing.go +++ b/net/ghttp/ghttp_middleware_tracing.go @@ -18,6 +18,7 @@ import ( "github.com/gogf/gf/net/ghttp/internal/httputil" "github.com/gogf/gf/net/gtrace" "github.com/gogf/gf/text/gstr" + "github.com/gogf/gf/util/gconv" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" @@ -58,7 +59,7 @@ func MiddlewareServerTracing(r *Request) { r.Body = utils.NewReadCloser(reqBodyContentBytes, false) span.AddEvent(tracingEventHttpRequest, trace.WithAttributes( - attribute.String(tracingEventHttpRequestHeaders, gjson.New(httputil.HeaderToMap(r.Header)).MustToJsonString()), + attribute.String(tracingEventHttpRequestHeaders, gconv.String(httputil.HeaderToMap(r.Header))), attribute.String(tracingEventHttpRequestBaggage, gtrace.GetBaggageMap(ctx).String()), attribute.String(tracingEventHttpRequestBody, gstr.StrLimit( string(reqBodyContentBytes), diff --git a/net/ghttp/internal/client/client_tracing.go b/net/ghttp/internal/client/client_tracing.go index 13b23489b..138a71966 100644 --- a/net/ghttp/internal/client/client_tracing.go +++ b/net/ghttp/internal/client/client_tracing.go @@ -13,11 +13,11 @@ import ( "net/http/httptrace" "github.com/gogf/gf" - "github.com/gogf/gf/encoding/gjson" "github.com/gogf/gf/internal/utils" "github.com/gogf/gf/net/ghttp/internal/httputil" "github.com/gogf/gf/net/gtrace" "github.com/gogf/gf/text/gstr" + "github.com/gogf/gf/util/gconv" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" @@ -72,7 +72,7 @@ func MiddlewareTracing(c *Client, r *http.Request) (response *Response, err erro response.Body = utils.NewReadCloser(reqBodyContentBytes, false) span.AddEvent(tracingEventHttpResponse, trace.WithAttributes( - attribute.String(tracingEventHttpResponseHeaders, gjson.New(httputil.HeaderToMap(response.Header)).MustToJsonString()), + attribute.String(tracingEventHttpResponseHeaders, gconv.String(httputil.HeaderToMap(response.Header))), attribute.String(tracingEventHttpResponseBody, gstr.StrLimit( string(reqBodyContentBytes), gtrace.MaxContentLogSize(), diff --git a/net/ghttp/internal/client/client_tracing_tracer.go b/net/ghttp/internal/client/client_tracing_tracer.go index 5d16216cb..4cfcfd27b 100644 --- a/net/ghttp/internal/client/client_tracing_tracer.go +++ b/net/ghttp/internal/client/client_tracing_tracer.go @@ -17,10 +17,10 @@ import ( "strings" "sync" - "github.com/gogf/gf/encoding/gjson" "github.com/gogf/gf/internal/utils" "github.com/gogf/gf/net/gtrace" "github.com/gogf/gf/text/gstr" + "github.com/gogf/gf/util/gconv" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/trace" @@ -149,7 +149,7 @@ func (ct *clientTracer) wroteRequest(info httptrace.WroteRequestInfo) { } ct.span.AddEvent(tracingEventHttpRequest, trace.WithAttributes( - attribute.String(tracingEventHttpRequestHeaders, gjson.New(ct.headers).MustToJsonString()), + attribute.String(tracingEventHttpRequestHeaders, gconv.String(ct.headers)), attribute.String(tracingEventHttpRequestBaggage, gtrace.GetBaggageMap(ct.Context).String()), attribute.String(tracingEventHttpRequestBody, gstr.StrLimit( string(ct.requestBody), From cbe704333a4469a0e8260bd7d248598185d5e927 Mon Sep 17 00:00:00 2001 From: houseme Date: Wed, 22 Sep 2021 14:54:42 +0800 Subject: [PATCH 3/3] [feature] upgrade opentelemetry version v1.0.0 map to string --- net/ghttp/ghttp_middleware_tracing.go | 3 +-- net/gtrace/gtrace_carrier.go | 7 +++++-- net/gtrace/gtrace_tracer.go | 1 + 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/net/ghttp/ghttp_middleware_tracing.go b/net/ghttp/ghttp_middleware_tracing.go index d50c39310..aa28222ad 100644 --- a/net/ghttp/ghttp_middleware_tracing.go +++ b/net/ghttp/ghttp_middleware_tracing.go @@ -12,7 +12,6 @@ import ( "net/http" "github.com/gogf/gf" - "github.com/gogf/gf/encoding/gjson" "github.com/gogf/gf/internal/utils" "github.com/gogf/gf/net/ghttp/internal/client" "github.com/gogf/gf/net/ghttp/internal/httputil" @@ -85,7 +84,7 @@ func MiddlewareServerTracing(r *Request) { ) span.AddEvent(tracingEventHttpResponse, trace.WithAttributes( - attribute.String(tracingEventHttpResponseHeaders, gjson.New(httputil.HeaderToMap(r.Response.Header())).MustToJsonString()), + attribute.String(tracingEventHttpResponseHeaders, gconv.String(httputil.HeaderToMap(r.Response.Header()))), attribute.String(tracingEventHttpResponseBody, resBodyContent), )) return diff --git a/net/gtrace/gtrace_carrier.go b/net/gtrace/gtrace_carrier.go index 997f2ea91..c378d884f 100644 --- a/net/gtrace/gtrace_carrier.go +++ b/net/gtrace/gtrace_carrier.go @@ -14,12 +14,12 @@ import ( // Carrier is the storage medium used by a TextMapPropagator. type Carrier map[string]interface{} +// NewCarrier . func NewCarrier(data ...map[string]interface{}) Carrier { if len(data) > 0 && data[0] != nil { return data[0] - } else { - return make(map[string]interface{}) } + return make(map[string]interface{}) } // Get returns the value associated with the passed key. @@ -41,6 +41,7 @@ func (c Carrier) Keys() []string { return keys } +// MustMarshal .returns the JSON encoding of c func (c Carrier) MustMarshal() []byte { b, err := json.Marshal(c) if err != nil { @@ -49,10 +50,12 @@ func (c Carrier) MustMarshal() []byte { return b } +// String . func (c Carrier) String() string { return string(c.MustMarshal()) } +// UnmarshalJSON . func (c Carrier) UnmarshalJSON(b []byte) error { carrier := NewCarrier(nil) return json.UnmarshalUseNumber(b, carrier) diff --git a/net/gtrace/gtrace_tracer.go b/net/gtrace/gtrace_tracer.go index 7a9e51df3..da693df11 100644 --- a/net/gtrace/gtrace_tracer.go +++ b/net/gtrace/gtrace_tracer.go @@ -11,6 +11,7 @@ import ( "go.opentelemetry.io/otel/trace" ) +// Tracer . type Tracer struct { trace.Tracer }