Skip to content

Commit 97a95dd

Browse files
Use otelgrpc for tracing grpc server and client (#15237)
* Use otelgrpc for tracing grpc server and client. * Changelog fragment * gofmt * Use context in prometheus service * Remove async start of prometheus service * Use random port to reduce the probability of concurrent tests using the same port * Remove comment * fix lint error --------- Co-authored-by: Bastin <bastin.m@proton.me>
1 parent 6df4768 commit 97a95dd

File tree

14 files changed

+113
-93
lines changed

14 files changed

+113
-93
lines changed

beacon-chain/node/node.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,6 +1032,7 @@ func (b *BeaconNode) registerPrometheusService(_ *cli.Context) error {
10321032
}
10331033

10341034
service := prometheus.NewService(
1035+
b.cliCtx.Context,
10351036
fmt.Sprintf("%s:%d", b.cliCtx.String(cmd.MonitoringHostFlag.Name), b.cliCtx.Int(flags.MonitoringPortFlag.Name)),
10361037
b.services,
10371038
additionalHandlers...,

beacon-chain/rpc/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ go_library(
6666
"@com_github_prometheus_client_golang//prometheus/promauto:go_default_library",
6767
"@com_github_prometheus_client_golang//prometheus/promhttp:go_default_library",
6868
"@com_github_sirupsen_logrus//:go_default_library",
69-
"@io_opencensus_go//plugin/ocgrpc:go_default_library",
69+
"@io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc//:go_default_library",
7070
"@org_golang_google_grpc//:go_default_library",
7171
"@org_golang_google_grpc//credentials:go_default_library",
7272
"@org_golang_google_grpc//peer:go_default_library",

beacon-chain/rpc/prysm/v1alpha1/validator/BUILD.bazel

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ go_library(
103103
"@com_github_prysmaticlabs_fastssz//:go_default_library",
104104
"@com_github_prysmaticlabs_go_bitfield//:go_default_library",
105105
"@com_github_sirupsen_logrus//:go_default_library",
106-
"@io_opencensus_go//trace:go_default_library",
107106
"@org_golang_google_grpc//codes:go_default_library",
108107
"@org_golang_google_grpc//status:go_default_library",
109108
"@org_golang_google_protobuf//proto:go_default_library",

beacon-chain/rpc/service.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ import (
4747
grpcprometheus "github.com/grpc-ecosystem/go-grpc-prometheus"
4848
"github.com/pkg/errors"
4949
"github.com/sirupsen/logrus"
50-
"go.opencensus.io/plugin/ocgrpc"
50+
"go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
5151
"google.golang.org/grpc"
5252
"google.golang.org/grpc/credentials"
5353
"google.golang.org/grpc/peer"
@@ -146,7 +146,7 @@ func NewService(ctx context.Context, cfg *Config) *Service {
146146
log.WithField("address", address).Info("gRPC server listening on port")
147147

148148
opts := []grpc.ServerOption{
149-
grpc.StatsHandler(&ocgrpc.ServerHandler{}),
149+
grpc.StatsHandler(otelgrpc.NewServerHandler()),
150150
grpc.StreamInterceptor(middleware.ChainStreamServer(
151151
recovery.StreamServerInterceptor(
152152
recovery.WithRecoveryHandlerContext(tracing.RecoveryHandlerFunc),

changelog/pvl_otel.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
### Changed
2+
3+
- Use otelgrpc for tracing grpc server and client

deps.bzl

Lines changed: 56 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -367,8 +367,8 @@ def prysm_deps():
367367
go_repository(
368368
name = "com_github_census_instrumentation_opencensus_proto",
369369
importpath = "github.com/census-instrumentation/opencensus-proto",
370-
sum = "h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g=",
371-
version = "v0.4.1",
370+
sum = "h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk=",
371+
version = "v0.2.1",
372372
)
373373
go_repository(
374374
name = "com_github_cespare_cp",
@@ -451,8 +451,8 @@ def prysm_deps():
451451
go_repository(
452452
name = "com_github_cncf_xds_go",
453453
importpath = "github.com/cncf/xds/go",
454-
sum = "h1:QVw89YDxXxEe+l8gU8ETbOasdwEV+avkR75ZzsVV9WI=",
455-
version = "v0.0.0-20240905190251-b4127c9b8d78",
454+
sum = "h1:boJj011Hh+874zpIySeApCX4GeOjPl9qhRF3QuIZq+Q=",
455+
version = "v0.0.0-20241223141626-cff3c89139a3",
456456
)
457457
go_repository(
458458
name = "com_github_cockroachdb_datadriven",
@@ -741,14 +741,26 @@ def prysm_deps():
741741
go_repository(
742742
name = "com_github_envoyproxy_go_control_plane",
743743
importpath = "github.com/envoyproxy/go-control-plane",
744-
sum = "h1:vPfJZCkob6yTMEgS+0TwfTUfbHjfy/6vOJ8hUWX/uXE=",
745-
version = "v0.13.1",
744+
sum = "h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M=",
745+
version = "v0.13.4",
746+
)
747+
go_repository(
748+
name = "com_github_envoyproxy_go_control_plane_envoy",
749+
importpath = "github.com/envoyproxy/go-control-plane/envoy",
750+
sum = "h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A=",
751+
version = "v1.32.4",
752+
)
753+
go_repository(
754+
name = "com_github_envoyproxy_go_control_plane_ratelimit",
755+
importpath = "github.com/envoyproxy/go-control-plane/ratelimit",
756+
sum = "h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI=",
757+
version = "v0.1.0",
746758
)
747759
go_repository(
748760
name = "com_github_envoyproxy_protoc_gen_validate",
749761
importpath = "github.com/envoyproxy/protoc-gen-validate",
750-
sum = "h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM=",
751-
version = "v1.1.0",
762+
sum = "h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8=",
763+
version = "v1.2.1",
752764
)
753765
go_repository(
754766
name = "com_github_ethereum_c_kzg_4844",
@@ -1150,8 +1162,8 @@ def prysm_deps():
11501162
go_repository(
11511163
name = "com_github_golang_glog",
11521164
importpath = "github.com/golang/glog",
1153-
sum = "h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY=",
1154-
version = "v1.2.2",
1165+
sum = "h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc=",
1166+
version = "v1.2.4",
11551167
)
11561168
go_repository(
11571169
name = "com_github_golang_groupcache",
@@ -1212,8 +1224,8 @@ def prysm_deps():
12121224
go_repository(
12131225
name = "com_github_google_go_cmp",
12141226
importpath = "github.com/google/go-cmp",
1215-
sum = "h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=",
1216-
version = "v0.6.0",
1227+
sum = "h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=",
1228+
version = "v0.7.0",
12171229
)
12181230
go_repository(
12191231
name = "com_github_google_go_github",
@@ -1296,8 +1308,8 @@ def prysm_deps():
12961308
go_repository(
12971309
name = "com_github_googlecloudplatform_opentelemetry_operations_go_detectors_gcp",
12981310
importpath = "github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp",
1299-
sum = "h1:cZpsGsWTIFKymTA0je7IIvi1O7Es7apb9CF3EQlOcfE=",
1300-
version = "v1.24.2",
1311+
sum = "h1:3c8yed4lgqTt+oTQ+JNMDo+F4xprBf+O/il4ZC0nRLw=",
1312+
version = "v1.25.0",
13011313
)
13021314
go_repository(
13031315
name = "com_github_gopherjs_gopherjs",
@@ -3726,8 +3738,8 @@ def prysm_deps():
37263738
go_repository(
37273739
name = "com_google_cloud_go_compute_metadata",
37283740
importpath = "cloud.google.com/go/compute/metadata",
3729-
sum = "h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo=",
3730-
version = "v0.5.2",
3741+
sum = "h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I=",
3742+
version = "v0.6.0",
37313743
)
37323744
go_repository(
37333745
name = "com_google_cloud_go_contactcenterinsights",
@@ -4356,8 +4368,8 @@ def prysm_deps():
43564368
go_repository(
43574369
name = "dev_cel_expr",
43584370
importpath = "cel.dev/expr",
4359-
sum = "h1:RwRhoH17VhAu9U5CMvMhH1PDVgf0tuz9FT+24AfMLfU=",
4360-
version = "v0.16.2",
4371+
sum = "h1:NciYrtDRIR0lNCnH1LFJegdjspNx9fI59O7TWcua/W4=",
4372+
version = "v0.19.1",
43614373
)
43624374
go_repository(
43634375
name = "in_gopkg_alecthomas_kingpin_v2",
@@ -4570,8 +4582,8 @@ def prysm_deps():
45704582
go_repository(
45714583
name = "io_opencensus_go",
45724584
importpath = "go.opencensus.io",
4573-
sum = "h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=",
4574-
version = "v0.24.0",
4585+
sum = "h1:dntmOdLpSpHlVqbW5Eay97DelsZHe+55D+xC6i0dDS0=",
4586+
version = "v0.22.5",
45754587
)
45764588
go_repository(
45774589
name = "io_opentelemetry_go_auto_sdk",
@@ -4582,8 +4594,14 @@ def prysm_deps():
45824594
go_repository(
45834595
name = "io_opentelemetry_go_contrib_detectors_gcp",
45844596
importpath = "go.opentelemetry.io/contrib/detectors/gcp",
4585-
sum = "h1:G1JQOreVrfhRkner+l4mrGxmfqYCAuy76asTDAo0xsA=",
4586-
version = "v1.31.0",
4597+
sum = "h1:JRxssobiPg23otYU5SbWtQC//snGVIM3Tx6QRzlQBao=",
4598+
version = "v1.34.0",
4599+
)
4600+
go_repository(
4601+
name = "io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc",
4602+
importpath = "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc",
4603+
sum = "h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw=",
4604+
version = "v0.60.0",
45874605
)
45884606
go_repository(
45894607
name = "io_opentelemetry_go_contrib_instrumentation_net_http_otelhttp",
@@ -4594,8 +4612,8 @@ def prysm_deps():
45944612
go_repository(
45954613
name = "io_opentelemetry_go_otel",
45964614
importpath = "go.opentelemetry.io/otel",
4597-
sum = "h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY=",
4598-
version = "v1.34.0",
4615+
sum = "h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ=",
4616+
version = "v1.35.0",
45994617
)
46004618
go_repository(
46014619
name = "io_opentelemetry_go_otel_exporters_otlp_otlptrace",
@@ -4612,8 +4630,8 @@ def prysm_deps():
46124630
go_repository(
46134631
name = "io_opentelemetry_go_otel_metric",
46144632
importpath = "go.opentelemetry.io/otel/metric",
4615-
sum = "h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ=",
4616-
version = "v1.34.0",
4633+
sum = "h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M=",
4634+
version = "v1.35.0",
46174635
)
46184636
go_repository(
46194637
name = "io_opentelemetry_go_otel_sdk",
@@ -4624,14 +4642,14 @@ def prysm_deps():
46244642
go_repository(
46254643
name = "io_opentelemetry_go_otel_sdk_metric",
46264644
importpath = "go.opentelemetry.io/otel/sdk/metric",
4627-
sum = "h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc=",
4628-
version = "v1.31.0",
4645+
sum = "h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk=",
4646+
version = "v1.34.0",
46294647
)
46304648
go_repository(
46314649
name = "io_opentelemetry_go_otel_trace",
46324650
importpath = "go.opentelemetry.io/otel/trace",
4633-
sum = "h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k=",
4634-
version = "v1.34.0",
4651+
sum = "h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs=",
4652+
version = "v1.35.0",
46354653
)
46364654
go_repository(
46374655
name = "io_opentelemetry_go_proto_otlp",
@@ -4708,21 +4726,21 @@ def prysm_deps():
47084726
go_repository(
47094727
name = "org_golang_google_genproto_googleapis_rpc",
47104728
importpath = "google.golang.org/genproto/googleapis/rpc",
4711-
sum = "h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI=",
4712-
version = "v0.0.0-20250115164207-1a7da9e5054f",
4729+
sum = "h1:51aaUVRocpvUOSQKM6Q7VuoaktNIaMCLuhZB6DKksq4=",
4730+
version = "v0.0.0-20250218202821-56aae31c358a",
47134731
)
47144732
go_repository(
47154733
name = "org_golang_google_grpc",
47164734
build_file_proto_mode = "disable",
47174735
importpath = "google.golang.org/grpc",
4718-
sum = "h1:MF5TftSMkd8GLw/m0KM6V8CMOCY6NZ1NQDPGFgbTt4A=",
4719-
version = "v1.69.4",
4736+
sum = "h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg=",
4737+
version = "v1.71.0",
47204738
)
47214739
go_repository(
47224740
name = "org_golang_google_protobuf",
47234741
importpath = "google.golang.org/protobuf",
4724-
sum = "h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU=",
4725-
version = "v1.36.3",
4742+
sum = "h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=",
4743+
version = "v1.36.5",
47264744
)
47274745
go_repository(
47284746
name = "org_golang_x_build",
@@ -4781,8 +4799,8 @@ def prysm_deps():
47814799
go_repository(
47824800
name = "org_golang_x_oauth2",
47834801
importpath = "golang.org/x/oauth2",
4784-
sum = "h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE=",
4785-
version = "v0.24.0",
4802+
sum = "h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70=",
4803+
version = "v0.25.0",
47864804
)
47874805
go_repository(
47884806
name = "org_golang_x_perf",

go.mod

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ require (
2424
github.com/golang/gddo v0.0.0-20200528160355-8d077c1d8f4c
2525
github.com/golang/protobuf v1.5.4
2626
github.com/golang/snappy v0.0.5-0.20231225225746-43d5d4cd4e0e
27-
github.com/google/go-cmp v0.6.0
27+
github.com/google/go-cmp v0.7.0
2828
github.com/google/gofuzz v1.2.0
2929
github.com/google/uuid v1.6.0
3030
github.com/gostaticanalysis/comment v1.4.2
@@ -80,21 +80,21 @@ require (
8080
github.com/wealdtech/go-eth2-util v1.6.3
8181
github.com/wealdtech/go-eth2-wallet-encryptor-keystorev4 v1.1.3
8282
go.etcd.io/bbolt v1.3.6
83-
go.opencensus.io v0.24.0
83+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0
8484
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0
85-
go.opentelemetry.io/otel v1.34.0
85+
go.opentelemetry.io/otel v1.35.0
8686
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.34.0
8787
go.opentelemetry.io/otel/sdk v1.34.0
88-
go.opentelemetry.io/otel/trace v1.34.0
88+
go.opentelemetry.io/otel/trace v1.35.0
8989
go.uber.org/automaxprocs v1.5.2
9090
go.uber.org/mock v0.4.0
9191
golang.org/x/crypto v0.36.0
9292
golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa
9393
golang.org/x/sync v0.12.0
9494
golang.org/x/tools v0.30.0
9595
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1
96-
google.golang.org/grpc v1.69.4
97-
google.golang.org/protobuf v1.36.3
96+
google.golang.org/grpc v1.71.0
97+
google.golang.org/protobuf v1.36.5
9898
gopkg.in/d4l3k/messagediff.v1 v1.2.1
9999
gopkg.in/yaml.v2 v2.4.0
100100
gopkg.in/yaml.v3 v3.0.1
@@ -150,7 +150,6 @@ require (
150150
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
151151
github.com/godbus/dbus/v5 v5.1.0 // indirect
152152
github.com/gofrs/flock v0.8.1 // indirect
153-
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
154153
github.com/google/gopacket v1.1.19 // indirect
155154
github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect
156155
github.com/gorilla/websocket v1.5.3 // indirect
@@ -253,7 +252,7 @@ require (
253252
github.com/yusufpapurcu/wmi v1.2.3 // indirect
254253
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
255254
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect
256-
go.opentelemetry.io/otel/metric v1.34.0 // indirect
255+
go.opentelemetry.io/otel/metric v1.35.0 // indirect
257256
go.opentelemetry.io/proto/otlp v1.5.0 // indirect
258257
go.uber.org/dig v1.18.0 // indirect
259258
go.uber.org/fx v1.22.2 // indirect
@@ -262,7 +261,7 @@ require (
262261
golang.org/x/exp/typeparams v0.0.0-20231108232855-2478ac86f678 // indirect
263262
golang.org/x/mod v0.23.0 // indirect
264263
golang.org/x/net v0.38.0 // indirect
265-
golang.org/x/oauth2 v0.24.0 // indirect
264+
golang.org/x/oauth2 v0.25.0 // indirect
266265
golang.org/x/term v0.30.0 // indirect
267266
golang.org/x/text v0.23.0 // indirect
268267
golang.org/x/time v0.9.0 // indirect

0 commit comments

Comments
 (0)