Skip to content

Commit ba49c46

Browse files
committed
chore(tracing): Update control plane to OpenTelemetry
The control plane tracing is meant mostly for development, but it's using an outdated export protocol that isn't supported basically anywhere. This updates the control plane to OpenTelemetry for internal tracing and OTLP gRPC as the export protocol.
1 parent cfed899 commit ba49c46

File tree

8 files changed

+70
-335
lines changed

8 files changed

+70
-335
lines changed

cli/cmd/policy.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import (
1515
pkgcmd "github.com/linkerd/linkerd2/pkg/cmd"
1616
"github.com/linkerd/linkerd2/pkg/k8s"
1717
"github.com/spf13/cobra"
18-
"go.opencensus.io/plugin/ocgrpc"
18+
"go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
1919
"google.golang.org/grpc"
2020
"google.golang.org/grpc/credentials/insecure"
2121
)
@@ -89,7 +89,7 @@ displayed.`,
8989
}
9090
}
9191

92-
conn, err := grpc.NewClient(apiAddr, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithStatsHandler(&ocgrpc.ClientHandler{}))
92+
conn, err := grpc.NewClient(apiAddr, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithStatsHandler(otelgrpc.NewClientHandler()))
9393
if err != nil {
9494
return err
9595
}

controller/api/destination/client.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@ package destination
22

33
import (
44
"context"
5-
65
pb "github.com/linkerd/linkerd2-proxy-api/go/destination"
76
"github.com/linkerd/linkerd2/pkg/k8s"
8-
"go.opencensus.io/plugin/ocgrpc"
7+
"go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
98
"google.golang.org/grpc"
109
"google.golang.org/grpc/credentials/insecure"
1110
)
@@ -18,7 +17,7 @@ const (
1817
// NewClient creates a client for the control plane Destination API that
1918
// implements the Destination service.
2019
func NewClient(addr string) (pb.DestinationClient, *grpc.ClientConn, error) {
21-
conn, err := grpc.NewClient(addr, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithStatsHandler(&ocgrpc.ClientHandler{}))
20+
conn, err := grpc.NewClient(addr, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithStatsHandler(otelgrpc.NewClientHandler()))
2221
if err != nil {
2322
return nil, nil, err
2423
}

go.mod

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ module github.com/linkerd/linkerd2
33
go 1.25.0
44

55
require (
6-
contrib.go.opencensus.io/exporter/ocagent v0.7.0
76
dario.cat/mergo v1.0.2
87
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24
98
github.com/bombsimon/logrusr/v4 v4.1.0
@@ -34,7 +33,10 @@ require (
3433
github.com/sirupsen/logrus v1.9.3
3534
github.com/spf13/cobra v1.10.1
3635
github.com/spf13/pflag v1.0.10
37-
go.opencensus.io v0.24.0
36+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0
37+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0
38+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0
39+
go.opentelemetry.io/otel/sdk v1.37.0
3840
golang.org/x/net v0.46.0
3941
golang.org/x/tools v0.38.0
4042
google.golang.org/grpc v1.76.0
@@ -55,6 +57,16 @@ require (
5557
sigs.k8s.io/yaml v1.6.0
5658
)
5759

60+
require (
61+
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
62+
github.com/felixge/httpsnoop v1.0.4 // indirect
63+
github.com/go-logr/stdr v1.2.2 // indirect
64+
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
65+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect
66+
go.opentelemetry.io/otel/metric v1.38.0 // indirect
67+
go.opentelemetry.io/proto/otlp v1.5.0 // indirect
68+
)
69+
5870
require (
5971
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect
6072
github.com/BurntSushi/toml v1.5.0 // indirect
@@ -64,7 +76,6 @@ require (
6476
github.com/Masterminds/sprig/v3 v3.3.0 // indirect
6577
github.com/beorn7/perks v1.0.1 // indirect
6678
github.com/blang/semver/v4 v4.0.0 // indirect
67-
github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect
6879
github.com/cespare/xxhash/v2 v2.3.0 // indirect
6980
github.com/chai2010/gettext-go v1.0.2 // indirect
7081
github.com/clipperhouse/uax29/v2 v2.2.0 // indirect
@@ -92,7 +103,6 @@ require (
92103
github.com/go-openapi/swag/yamlutils v0.25.1 // indirect
93104
github.com/gobwas/glob v0.2.3 // indirect
94105
github.com/gogo/protobuf v1.3.2 // indirect
95-
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
96106
github.com/google/btree v1.1.3 // indirect
97107
github.com/google/gnostic-models v0.7.0 // indirect
98108
github.com/google/go-cmp v0.7.0 // indirect
@@ -134,8 +144,8 @@ require (
134144
github.com/spf13/cast v1.7.0 // indirect
135145
github.com/x448/float16 v0.8.4 // indirect
136146
github.com/xlab/treeprint v1.2.0 // indirect
137-
go.opentelemetry.io/otel v1.37.0 // indirect
138-
go.opentelemetry.io/otel/trace v1.37.0 // indirect
147+
go.opentelemetry.io/otel v1.38.0
148+
go.opentelemetry.io/otel/trace v1.38.0 // indirect
139149
go.yaml.in/yaml/v2 v2.4.3 // indirect
140150
go.yaml.in/yaml/v3 v3.0.4 // indirect
141151
golang.org/x/crypto v0.43.0 // indirect
@@ -149,7 +159,6 @@ require (
149159
golang.org/x/time v0.12.0 // indirect
150160
golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated // indirect
151161
golang.org/x/tools/godoc v0.1.0-deprecated // indirect
152-
google.golang.org/api v0.143.0 // indirect
153162
google.golang.org/genproto/googleapis/api v0.0.0-20250804133106-a7a43d27e69b // indirect
154163
google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b // indirect
155164
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect

0 commit comments

Comments
 (0)