Skip to content

Commit df4d988

Browse files
committed
chore(deps): update dependencies and improve tracing attributes
- Updated `github.com/google/uuid` from v1.4.0 to v1.6.0. - Upgraded OpenTelemetry dependencies to v1.29.0. - Updated `github.com/go-logr/logr` from v1.4.1 to v1.4.2. - Updated `golang.org/x/sys` from v0.18.0 to v0.24.0. - Enhanced tracing attributes in `span.go` and `span_test.go` to include client/server context. - Refactored `peerAttr` function to accept an `isClient` parameter for better attribute handling. - Replaced some deprecated semantic conventions.
1 parent 9580f08 commit df4d988

5 files changed

Lines changed: 103 additions & 57 deletions

File tree

go.mod

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ require (
88
github.com/go-kratos/aegis v0.2.0
99
github.com/go-playground/form/v4 v4.2.0
1010
github.com/golang-jwt/jwt/v5 v5.1.0
11-
github.com/google/uuid v1.4.0
11+
github.com/google/uuid v1.6.0
1212
github.com/gorilla/mux v1.8.1
13-
go.opentelemetry.io/otel v1.24.0
14-
go.opentelemetry.io/otel/metric v1.24.0
15-
go.opentelemetry.io/otel/sdk v1.24.0
16-
go.opentelemetry.io/otel/sdk/metric v1.24.0
17-
go.opentelemetry.io/otel/trace v1.24.0
13+
go.opentelemetry.io/otel v1.29.0
14+
go.opentelemetry.io/otel/metric v1.29.0
15+
go.opentelemetry.io/otel/sdk v1.29.0
16+
go.opentelemetry.io/otel/sdk/metric v1.29.0
17+
go.opentelemetry.io/otel/trace v1.29.0
1818
golang.org/x/sync v0.5.0
1919
google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917
2020
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917
@@ -25,7 +25,7 @@ require (
2525

2626
require (
2727
github.com/envoyproxy/go-control-plane v0.11.2-0.20230627204322-7d0032219fcb // indirect
28-
github.com/go-logr/logr v1.4.1 // indirect
28+
github.com/go-logr/logr v1.4.2 // indirect
2929
github.com/go-logr/stdr v1.2.2 // indirect
3030
github.com/go-ole/go-ole v1.2.6 // indirect
3131
github.com/golang/protobuf v1.5.4 // indirect
@@ -39,7 +39,7 @@ require (
3939
github.com/tklauser/numcpus v0.6.1 // indirect
4040
github.com/yusufpapurcu/wmi v1.2.3 // indirect
4141
golang.org/x/net v0.23.0 // indirect
42-
golang.org/x/sys v0.18.0 // indirect
42+
golang.org/x/sys v0.24.0 // indirect
4343
golang.org/x/text v0.14.0 // indirect
4444
google.golang.org/genproto v0.0.0-20231212172506-995d672761c0 // indirect
4545
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect

go.sum

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbS
1717
github.com/go-kratos/aegis v0.2.0 h1:dObzCDWn3XVjUkgxyBp6ZeWtx/do0DPZ7LY3yNSJLUQ=
1818
github.com/go-kratos/aegis v0.2.0/go.mod h1:v0R2m73WgEEYB3XYu6aE2WcMwsZkJ/Rzuf5eVccm7bI=
1919
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
20-
github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
21-
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
20+
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
21+
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
2222
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
2323
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
2424
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
@@ -35,8 +35,8 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
3535
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
3636
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
3737
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
38-
github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
39-
github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
38+
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
39+
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
4040
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
4141
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
4242
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
@@ -69,25 +69,26 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS
6969
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
7070
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
7171
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
72-
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
7372
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
73+
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
74+
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
7475
github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM=
7576
github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI=
7677
github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4=
7778
github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
7879
github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
7980
github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw=
8081
github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
81-
go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
82-
go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
83-
go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
84-
go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
85-
go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
86-
go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
87-
go.opentelemetry.io/otel/sdk/metric v1.24.0 h1:yyMQrPzF+k88/DbH7o4FMAs80puqd+9osbiBrJrz/w8=
88-
go.opentelemetry.io/otel/sdk/metric v1.24.0/go.mod h1:I6Y5FjH6rvEnTTAYQz3Mmv2kl6Ek5IIrmwTLqMrrOE0=
89-
go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
90-
go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
82+
go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw=
83+
go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8=
84+
go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc=
85+
go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8=
86+
go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo=
87+
go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok=
88+
go.opentelemetry.io/otel/sdk/metric v1.29.0 h1:K2CfmJohnRgvZ9UAj2/FhIf/okdWcNdBwe1m8xFXiSY=
89+
go.opentelemetry.io/otel/sdk/metric v1.29.0/go.mod h1:6zZLdCl2fkauYoZIOn/soQIDSWFmNSRcICarHfuhNJQ=
90+
go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4=
91+
go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ=
9192
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
9293
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
9394
golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE=
@@ -98,8 +99,8 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc
9899
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
99100
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
100101
golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
101-
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
102-
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
102+
golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=
103+
golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
103104
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
104105
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
105106
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

middleware/tracing/span.go

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@ import (
44
"context"
55
"net"
66
"net/url"
7+
"strconv"
78
"strings"
89

910
"github.com/go-kratos/kratos/v2/metadata"
1011
"github.com/go-kratos/kratos/v2/transport"
1112
"github.com/go-kratos/kratos/v2/transport/http"
1213

1314
"go.opentelemetry.io/otel/attribute"
14-
semconv "go.opentelemetry.io/otel/semconv/v1.4.0"
15+
semconv "go.opentelemetry.io/otel/semconv/v1.26.0"
1516
"go.opentelemetry.io/otel/trace"
1617
"google.golang.org/grpc/peer"
1718
"google.golang.org/protobuf/proto"
@@ -34,9 +35,9 @@ func setClientSpan(ctx context.Context, span trace.Span, m any) {
3435
method := ht.Request().Method
3536
route := ht.PathTemplate()
3637
path := ht.Request().URL.Path
37-
attrs = append(attrs, semconv.HTTPMethodKey.String(method))
38+
attrs = append(attrs, semconv.HTTPRequestMethodKey.String(method))
3839
attrs = append(attrs, semconv.HTTPRouteKey.String(route))
39-
attrs = append(attrs, semconv.HTTPTargetKey.String(path))
40+
attrs = append(attrs, semconv.URLPathKey.String(path))
4041
remote = ht.Request().Host
4142
}
4243
case transport.KindGRPC:
@@ -47,7 +48,7 @@ func setClientSpan(ctx context.Context, span trace.Span, m any) {
4748
_, mAttrs := parseFullMethod(operation)
4849
attrs = append(attrs, mAttrs...)
4950
if remote != "" {
50-
attrs = append(attrs, peerAttr(remote)...)
51+
attrs = append(attrs, peerAttr(remote, true)...)
5152
}
5253
if p, ok := m.(proto.Message); ok {
5354
attrs = append(attrs, attribute.Key("send_msg.size").Int(proto.Size(p)))
@@ -73,9 +74,9 @@ func setServerSpan(ctx context.Context, span trace.Span, m any) {
7374
method := ht.Request().Method
7475
route := ht.PathTemplate()
7576
path := ht.Request().URL.Path
76-
attrs = append(attrs, semconv.HTTPMethodKey.String(method))
77+
attrs = append(attrs, semconv.HTTPRequestMethodKey.String(method))
7778
attrs = append(attrs, semconv.HTTPRouteKey.String(route))
78-
attrs = append(attrs, semconv.HTTPTargetKey.String(path))
79+
attrs = append(attrs, semconv.URLPathKey.String(path))
7980
remote = ht.Request().RemoteAddr
8081
}
8182
case transport.KindGRPC:
@@ -87,7 +88,7 @@ func setServerSpan(ctx context.Context, span trace.Span, m any) {
8788
attrs = append(attrs, semconv.RPCSystemKey.String(rpcKind))
8889
_, mAttrs := parseFullMethod(operation)
8990
attrs = append(attrs, mAttrs...)
90-
attrs = append(attrs, peerAttr(remote)...)
91+
attrs = append(attrs, peerAttr(remote, false)...)
9192
if p, ok := m.(proto.Message); ok {
9293
attrs = append(attrs, attribute.Key("recv_msg.size").Int(proto.Size(p)))
9394
}
@@ -120,7 +121,7 @@ func parseFullMethod(fullMethod string) (string, []attribute.KeyValue) {
120121
}
121122

122123
// peerAttr returns attributes about the peer address.
123-
func peerAttr(addr string) []attribute.KeyValue {
124+
func peerAttr(addr string, isClient bool) []attribute.KeyValue {
124125
host, port, err := net.SplitHostPort(addr)
125126
if err != nil {
126127
return []attribute.KeyValue(nil)
@@ -130,10 +131,22 @@ func peerAttr(addr string) []attribute.KeyValue {
130131
host = "127.0.0.1"
131132
}
132133

133-
return []attribute.KeyValue{
134-
semconv.NetPeerIPKey.String(host),
135-
semconv.NetPeerPortKey.String(port),
134+
attrs := []attribute.KeyValue{
135+
semconv.NetworkPeerAddressKey.String(host),
136136
}
137+
138+
portInt, err := strconv.Atoi(port)
139+
if err != nil {
140+
return attrs
141+
}
142+
143+
if isClient {
144+
attrs = append(attrs, semconv.ServerPort(portInt))
145+
} else {
146+
attrs = append(attrs, semconv.ClientPort(portInt))
147+
}
148+
149+
return attrs
137150
}
138151

139152
func parseTarget(endpoint string) (address string, err error) {

middleware/tracing/span_test.go

Lines changed: 52 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"testing"
99

1010
"go.opentelemetry.io/otel/attribute"
11-
semconv "go.opentelemetry.io/otel/semconv/v1.4.0"
11+
semconv "go.opentelemetry.io/otel/semconv/v1.26.0"
1212
"google.golang.org/grpc/peer"
1313

1414
"go.opentelemetry.io/otel/trace/noop"
@@ -66,43 +66,75 @@ func Test_parseFullMethod(t *testing.T) {
6666

6767
func Test_peerAttr(t *testing.T) {
6868
tests := []struct {
69-
name string
70-
addr string
71-
want []attribute.KeyValue
69+
name string
70+
addr string
71+
isClient bool
72+
want []attribute.KeyValue
7273
}{
7374
{
74-
name: "nil addr",
75-
addr: ":8080",
75+
name: "nil addr with client context",
76+
addr: ":8080",
77+
isClient: true,
7678
want: []attribute.KeyValue{
77-
semconv.NetPeerIPKey.String("127.0.0.1"),
78-
semconv.NetPeerPortKey.String("8080"),
79+
semconv.NetworkPeerAddressKey.String("127.0.0.1"),
80+
semconv.ServerPortKey.Int(8080),
7981
},
8082
},
8183
{
82-
name: "normal addr without port",
83-
addr: "192.168.0.1",
84-
want: []attribute.KeyValue(nil),
84+
name: "nil addr with server context",
85+
addr: ":8080",
86+
isClient: false,
87+
want: []attribute.KeyValue{
88+
semconv.NetworkPeerAddressKey.String("127.0.0.1"),
89+
semconv.ClientPortKey.Int(8080),
90+
},
91+
},
92+
{
93+
name: "normal addr without port",
94+
addr: "192.168.0.1",
95+
isClient: true,
96+
want: []attribute.KeyValue(nil),
97+
},
98+
{
99+
name: "normal addr with port in client context",
100+
addr: "192.168.0.1:8080",
101+
isClient: true,
102+
want: []attribute.KeyValue{
103+
semconv.NetworkPeerAddressKey.String("192.168.0.1"),
104+
semconv.ServerPortKey.Int(8080),
105+
},
106+
},
107+
{
108+
name: "normal addr with port in server context",
109+
addr: "192.168.0.1:8080",
110+
isClient: false,
111+
want: []attribute.KeyValue{
112+
semconv.NetworkPeerAddressKey.String("192.168.0.1"),
113+
semconv.ClientPortKey.Int(8080),
114+
},
85115
},
86116
{
87-
name: "normal addr with port",
88-
addr: "192.168.0.1:8080",
117+
name: "dns addr in client context",
118+
addr: "foo:8080",
119+
isClient: true,
89120
want: []attribute.KeyValue{
90-
semconv.NetPeerIPKey.String("192.168.0.1"),
91-
semconv.NetPeerPortKey.String("8080"),
121+
semconv.NetworkPeerAddressKey.String("foo"),
122+
semconv.ServerPortKey.Int(8080),
92123
},
93124
},
94125
{
95-
name: "dns addr",
96-
addr: "foo:8080",
126+
name: "dns addr in server context",
127+
addr: "foo:8080",
128+
isClient: false,
97129
want: []attribute.KeyValue{
98-
semconv.NetPeerIPKey.String("foo"),
99-
semconv.NetPeerPortKey.String("8080"),
130+
semconv.NetworkPeerAddressKey.String("foo"),
131+
semconv.ClientPortKey.Int(8080),
100132
},
101133
},
102134
}
103135
for _, tt := range tests {
104136
t.Run(tt.name, func(t *testing.T) {
105-
if got := peerAttr(tt.addr); !reflect.DeepEqual(got, tt.want) {
137+
if got := peerAttr(tt.addr, tt.isClient); !reflect.DeepEqual(got, tt.want) {
106138
t.Errorf("peerAttr() = %v, want %v", got, tt.want)
107139
}
108140
})

middleware/tracing/statshandler.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func (c *ClientHandler) HandleRPC(ctx context.Context, rs stats.RPCStats) {
3333
}
3434
span := trace.SpanFromContext(ctx)
3535
if span.SpanContext().IsValid() {
36-
span.SetAttributes(peerAttr(p.Addr.String())...)
36+
span.SetAttributes(peerAttr(p.Addr.String(), true)...)
3737
}
3838
}
3939

0 commit comments

Comments
 (0)