Skip to content

Commit 79451e4

Browse files
authored
fix(net/ghttp&gclient,contrib/rpc/grpcx): remove request and response contents in opentelemetry tracing attributes (#3810)
1 parent a716c6b commit 79451e4

6 files changed

+9
-82
lines changed

contrib/rpc/grpcx/internal/tracing/tracing.go

-2
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,10 @@ const (
2929
tracingInstrumentGrpcClient = "github.com/gogf/gf/contrib/rpc/grpcx/v2/krpc.GrpcClient"
3030
tracingInstrumentGrpcServer = "github.com/gogf/gf/contrib/rpc/grpcx/v2/krpc.GrpcServer"
3131
tracingEventGrpcRequest = "grpc.request"
32-
tracingEventGrpcRequestMessage = "grpc.request.message"
3332
tracingEventGrpcRequestBaggage = "grpc.request.baggage"
3433
tracingEventGrpcMetadataOutgoing = "grpc.metadata.outgoing"
3534
tracingEventGrpcMetadataIncoming = "grpc.metadata.incoming"
3635
tracingEventGrpcResponse = "grpc.response"
37-
tracingEventGrpcResponseMessage = "grpc.response.message"
3836
)
3937

4038
type metadataSupplier struct {

contrib/rpc/grpcx/internal/tracing/tracing_interceptor_client.go

-16
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import (
1919
"google.golang.org/grpc/status"
2020

2121
"github.com/gogf/gf/contrib/rpc/grpcx/v2/internal/grpcctx"
22-
"github.com/gogf/gf/contrib/rpc/grpcx/v2/internal/utils"
2322
"github.com/gogf/gf/v2"
2423
"github.com/gogf/gf/v2/net/gtrace"
2524
"github.com/gogf/gf/v2/util/gconv"
@@ -59,25 +58,10 @@ func UnaryClientInterceptor(ctx context.Context, method string, req, reply inter
5958
span.AddEvent(tracingEventGrpcRequest, trace.WithAttributes(
6059
attribute.String(tracingEventGrpcRequestBaggage, gconv.String(gtrace.GetBaggageMap(ctx))),
6160
attribute.String(tracingEventGrpcMetadataOutgoing, gconv.String(grpcctx.Ctx{}.OutgoingMap(ctx))),
62-
attribute.String(
63-
tracingEventGrpcRequestMessage,
64-
utils.MarshalMessageToJsonStringForTracing(
65-
req, "Request", tracingMaxContentLogSize,
66-
),
67-
),
6861
))
6962

7063
err := invoker(ctx, method, req, reply, cc, callOpts...)
7164

72-
span.AddEvent(tracingEventGrpcResponse, trace.WithAttributes(
73-
attribute.String(
74-
tracingEventGrpcResponseMessage,
75-
utils.MarshalMessageToJsonStringForTracing(
76-
reply, "Response", tracingMaxContentLogSize,
77-
),
78-
),
79-
))
80-
8165
if err != nil {
8266
s, _ := status.FromError(err)
8367
span.SetStatus(codes.Error, s.Message())

contrib/rpc/grpcx/internal/tracing/tracing_interceptor_server.go

-16
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"google.golang.org/grpc/status"
2121

2222
"github.com/gogf/gf/contrib/rpc/grpcx/v2/internal/grpcctx"
23-
"github.com/gogf/gf/contrib/rpc/grpcx/v2/internal/utils"
2423
"github.com/gogf/gf/v2"
2524
"github.com/gogf/gf/v2/net/gtrace"
2625
"github.com/gogf/gf/v2/util/gconv"
@@ -58,25 +57,10 @@ func UnaryServerInterceptor(ctx context.Context, req interface{}, info *grpc.Una
5857
span.AddEvent(tracingEventGrpcRequest, trace.WithAttributes(
5958
attribute.String(tracingEventGrpcRequestBaggage, gconv.String(gtrace.GetBaggageMap(ctx))),
6059
attribute.String(tracingEventGrpcMetadataIncoming, gconv.String(grpcctx.Ctx{}.IncomingMap(ctx))),
61-
attribute.String(
62-
tracingEventGrpcRequestMessage,
63-
utils.MarshalMessageToJsonStringForTracing(
64-
req, "Request", tracingMaxContentLogSize,
65-
),
66-
),
6760
))
6861

6962
res, err := handler(ctx, req)
7063

71-
span.AddEvent(tracingEventGrpcResponse, trace.WithAttributes(
72-
attribute.String(
73-
tracingEventGrpcResponseMessage,
74-
utils.MarshalMessageToJsonStringForTracing(
75-
res, "Response", tracingMaxContentLogSize,
76-
),
77-
),
78-
))
79-
8064
if err != nil {
8165
s, _ := status.FromError(err)
8266
span.SetStatus(codes.Error, s.Message())

net/gclient/gclient_observability.go

+4-14
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ package gclient
99
import (
1010
"context"
1111
"fmt"
12-
"io"
1312
"net/http"
1413
"net/http/httptrace"
1514

@@ -21,7 +20,6 @@ import (
2120

2221
"github.com/gogf/gf/v2"
2322
"github.com/gogf/gf/v2/internal/httputil"
24-
"github.com/gogf/gf/v2/internal/utils"
2523
"github.com/gogf/gf/v2/net/gtrace"
2624
"github.com/gogf/gf/v2/os/gctx"
2725
"github.com/gogf/gf/v2/os/gmetric"
@@ -39,10 +37,8 @@ const (
3937
tracingEventHttpRequest = "http.request"
4038
tracingEventHttpRequestHeaders = "http.request.headers"
4139
tracingEventHttpRequestBaggage = "http.request.baggage"
42-
tracingEventHttpRequestBody = "http.request.body"
4340
tracingEventHttpResponse = "http.response"
4441
tracingEventHttpResponseHeaders = "http.response.headers"
45-
tracingEventHttpResponseBody = "http.response.body"
4642
tracingMiddlewareHandled gctx.StrKey = `MiddlewareClientTracingHandled`
4743
)
4844

@@ -101,18 +97,12 @@ func internalMiddlewareObservability(c *Client, r *http.Request) (response *Resp
10197
if response == nil || response.Response == nil {
10298
return
10399
}
104-
// TODO ignore binary content ReadAll, for example downloading request.
105-
reqBodyContentBytes, _ := io.ReadAll(response.Body)
106-
response.Body = utils.NewReadCloser(reqBodyContentBytes, false)
107-
108-
resBodyContent, err := gtrace.SafeContentForHttp(reqBodyContentBytes, response.Header)
109-
if err != nil {
110-
span.SetStatus(codes.Error, fmt.Sprintf(`converting safe content failed: %s`, err.Error()))
111-
}
112100

113101
span.AddEvent(tracingEventHttpResponse, trace.WithAttributes(
114-
attribute.String(tracingEventHttpResponseHeaders, gconv.String(httputil.HeaderToMap(response.Header))),
115-
attribute.String(tracingEventHttpResponseBody, resBodyContent),
102+
attribute.String(
103+
tracingEventHttpResponseHeaders,
104+
gconv.String(httputil.HeaderToMap(response.Header)),
105+
),
116106
))
117107
return
118108
}

net/gclient/gclient_tracer_tracing.go

-6
Original file line numberDiff line numberDiff line change
@@ -218,14 +218,8 @@ func (ct *clientTracerTracing) WroteRequest(info httptrace.WroteRequestInfo) {
218218
ct.span.SetStatus(codes.Error, fmt.Sprintf(`%+v`, info.Err))
219219
}
220220

221-
reqBodyContent, err := gtrace.SafeContentForHttp(ct.requestBody, ct.request.Header)
222-
if err != nil {
223-
ct.span.SetStatus(codes.Error, fmt.Sprintf(`converting safe content failed: %s`, err.Error()))
224-
}
225-
226221
ct.span.AddEvent(tracingEventHttpRequest, trace.WithAttributes(
227222
attribute.String(tracingEventHttpRequestHeaders, gconv.String(ct.headers)),
228223
attribute.String(tracingEventHttpRequestBaggage, gtrace.GetBaggageMap(ct.Context).String()),
229-
attribute.String(tracingEventHttpRequestBody, reqBodyContent),
230224
))
231225
}

net/ghttp/ghttp_middleware_tracing.go

+5-28
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ package ghttp
99
import (
1010
"context"
1111
"fmt"
12-
"io"
1312

1413
"go.opentelemetry.io/otel"
1514
"go.opentelemetry.io/otel/attribute"
@@ -18,9 +17,7 @@ import (
1817
"go.opentelemetry.io/otel/trace"
1918

2019
"github.com/gogf/gf/v2"
21-
"github.com/gogf/gf/v2/errors/gerror"
2220
"github.com/gogf/gf/v2/internal/httputil"
23-
"github.com/gogf/gf/v2/internal/utils"
2421
"github.com/gogf/gf/v2/net/gtrace"
2522
"github.com/gogf/gf/v2/os/gctx"
2623
"github.com/gogf/gf/v2/util/gconv"
@@ -31,10 +28,8 @@ const (
3128
tracingEventHttpRequest = "http.request"
3229
tracingEventHttpRequestHeaders = "http.request.headers"
3330
tracingEventHttpRequestBaggage = "http.request.baggage"
34-
tracingEventHttpRequestBody = "http.request.body"
3531
tracingEventHttpResponse = "http.response"
3632
tracingEventHttpResponseHeaders = "http.response.headers"
37-
tracingEventHttpResponseBody = "http.response.body"
3833
tracingEventHttpRequestUrl = "http.request.url"
3934
tracingMiddlewareHandled gctx.StrKey = `MiddlewareServerTracingHandled`
4035
)
@@ -80,24 +75,10 @@ func internalMiddlewareServerTracing(r *Request) {
8075
return
8176
}
8277

83-
// Request content logging.
84-
reqBodyContentBytes, err := io.ReadAll(r.Body)
85-
if err != nil {
86-
r.SetError(gerror.Wrap(err, `read request body failed`))
87-
span.SetStatus(codes.Error, fmt.Sprintf(`%+v`, err))
88-
return
89-
}
90-
r.Body = utils.NewReadCloser(reqBodyContentBytes, false)
91-
reqBodyContent, err := gtrace.SafeContentForHttp(reqBodyContentBytes, r.Header)
92-
if err != nil {
93-
span.SetStatus(codes.Error, fmt.Sprintf(`converting safe content failed: %s`, err.Error()))
94-
}
95-
9678
span.AddEvent(tracingEventHttpRequest, trace.WithAttributes(
9779
attribute.String(tracingEventHttpRequestUrl, r.URL.String()),
9880
attribute.String(tracingEventHttpRequestHeaders, gconv.String(httputil.HeaderToMap(r.Header))),
9981
attribute.String(tracingEventHttpRequestBaggage, gtrace.GetBaggageMap(ctx).String()),
100-
attribute.String(tracingEventHttpRequestBody, reqBodyContent),
10182
))
10283

10384
// Continue executing.
@@ -109,18 +90,14 @@ func internalMiddlewareServerTracing(r *Request) {
10990
}
11091

11192
// Error logging.
112-
if err = r.GetError(); err != nil {
93+
if err := r.GetError(); err != nil {
11394
span.SetStatus(codes.Error, fmt.Sprintf(`%+v`, err))
11495
}
11596

116-
// Response content logging.
117-
resBodyContent, err := gtrace.SafeContentForHttp(r.Response.Buffer(), r.Response.Header())
118-
if err != nil {
119-
span.SetStatus(codes.Error, fmt.Sprintf(`converting safe content failed: %s`, err.Error()))
120-
}
121-
12297
span.AddEvent(tracingEventHttpResponse, trace.WithAttributes(
123-
attribute.String(tracingEventHttpResponseHeaders, gconv.String(httputil.HeaderToMap(r.Response.Header()))),
124-
attribute.String(tracingEventHttpResponseBody, resBodyContent),
98+
attribute.String(
99+
tracingEventHttpResponseHeaders,
100+
gconv.String(httputil.HeaderToMap(r.Response.Header())),
101+
),
125102
))
126103
}

0 commit comments

Comments
 (0)