Skip to content

Commit f7123cd

Browse files
committed
Switch from grpc-ecosystem/go-grpc-prometheus to grpc-ecosystem/go-grpc-middleware/providers/prometheus
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
1 parent 76d836f commit f7123cd

File tree

12 files changed

+71
-25
lines changed

12 files changed

+71
-25
lines changed

bill-of-materials.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,14 +216,27 @@
216216
]
217217
},
218218
{
219-
"project": "github.com/grpc-ecosystem/go-grpc-prometheus",
219+
"project": "github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus",
220220
"licenses": [
221221
{
222222
"type": "Apache License 2.0",
223223
"confidence": 1
224224
}
225225
]
226226
},
227+
{
228+
"project": "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors",
229+
"licenses": [
230+
{
231+
"type": "\"Do What The F*ck You Want To Public License\"",
232+
"confidence": 0.14814814814814814
233+
},
234+
{
235+
"type": "Apache License 2.0",
236+
"confidence": 1
237+
}
238+
]
239+
},
227240
{
228241
"project": "github.com/grpc-ecosystem/grpc-gateway/v2",
229242
"licenses": [

client/v3/go.mod

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ toolchain go1.23.4
77
require (
88
github.com/coreos/go-semver v0.3.1
99
github.com/dustin/go-humanize v1.0.1
10-
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
10+
github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1
1111
github.com/prometheus/client_golang v1.20.5
1212
github.com/stretchr/testify v1.10.0
1313
go.etcd.io/etcd/api/v3 v3.6.0-alpha.0
@@ -24,6 +24,7 @@ require (
2424
github.com/davecgh/go-spew v1.1.1 // indirect
2525
github.com/gogo/protobuf v1.3.2 // indirect
2626
github.com/golang/protobuf v1.5.4 // indirect
27+
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect
2728
github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 // indirect
2829
github.com/klauspost/compress v1.17.9 // indirect
2930
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect

client/v3/go.sum

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
2424
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
2525
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
2626
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
27-
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
28-
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
27+
github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpSQwGEnkcRpTqNOIR6bJbR0gAorgP9CSALpRcKoAA=
28+
github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU=
29+
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk=
30+
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI=
2931
github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 h1:VNqngBF40hVlDloBruUehVYC3ArSgIyScOAyMRqBxRg=
3032
github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1/go.mod h1:RBRO7fro65R6tjKzYgLAFo0t1QEXY1Dp+i/bvpRiqiQ=
3133
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=

server/embed/etcd.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import (
3131
"sync"
3232
"time"
3333

34-
grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus"
34+
"github.com/prometheus/client_golang/prometheus"
3535
"github.com/soheilhy/cmux"
3636
"go.uber.org/zap"
3737
"google.golang.org/grpc"
@@ -845,7 +845,15 @@ func (e *Etcd) createMetricsListener(murl url.URL) (net.Listener, error) {
845845

846846
func (e *Etcd) serveMetrics() (err error) {
847847
if e.cfg.Metrics == "extensive" {
848-
grpc_prometheus.EnableHandlingTimeHistogram()
848+
var opts prometheus.HistogramOpts
849+
serverHandledHistogram := prometheus.NewHistogramVec(
850+
opts,
851+
[]string{"grpc_type", "grpc_service", "grpc_method"},
852+
)
853+
err := prometheus.Register(serverHandledHistogram)
854+
if err != nil {
855+
e.GetLogger().Error("setting up prometheus metrics failed.", zap.Error(err))
856+
}
849857
}
850858

851859
if len(e.cfg.ListenMetricsUrls) > 0 {

server/etcdmain/grpc_proxy.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,9 @@ import (
3030
"time"
3131

3232
grpc_zap "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap"
33+
grpc_prometheus "github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus"
3334
grpc_ctxtags "github.com/grpc-ecosystem/go-grpc-middleware/tags"
34-
grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus"
35+
"github.com/prometheus/client_golang/prometheus"
3536
"github.com/soheilhy/cmux"
3637
"github.com/spf13/cobra"
3738
"go.uber.org/zap"
@@ -505,11 +506,14 @@ func newGRPCProxyServer(lg *zap.Logger, client *clientv3.Client) *grpc.Server {
505506

506507
alwaysLoggingDeciderServer := func(ctx context.Context, fullMethodName string, servingObject any) bool { return true }
507508

509+
serverMetrics := grpc_prometheus.NewServerMetrics()
510+
prometheus.Register(serverMetrics)
511+
508512
grpcChainStreamList := []grpc.StreamServerInterceptor{
509-
grpc_prometheus.StreamServerInterceptor,
513+
serverMetrics.StreamServerInterceptor(),
510514
}
511515
grpcChainUnaryList := []grpc.UnaryServerInterceptor{
512-
grpc_prometheus.UnaryServerInterceptor,
516+
serverMetrics.UnaryServerInterceptor(),
513517
}
514518
if grpcProxyEnableLogging {
515519
grpcChainStreamList = append(grpcChainStreamList,

server/etcdserver/api/v3rpc/grpc.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ import (
1818
"crypto/tls"
1919
"math"
2020

21-
grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus"
21+
grpc_prometheus "github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus"
22+
"github.com/prometheus/client_golang/prometheus"
2223
"go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
2324
"google.golang.org/grpc"
2425
"google.golang.org/grpc/health"
@@ -39,18 +40,22 @@ func Server(s *etcdserver.EtcdServer, tls *tls.Config, interceptor grpc.UnarySer
3940
if tls != nil {
4041
opts = append(opts, grpc.Creds(credentials.NewTransportCredential(tls)))
4142
}
43+
44+
serverMetrics := grpc_prometheus.NewServerMetrics()
45+
prometheus.Register(serverMetrics)
46+
4247
chainUnaryInterceptors := []grpc.UnaryServerInterceptor{
4348
newLogUnaryInterceptor(s),
4449
newUnaryInterceptor(s),
45-
grpc_prometheus.UnaryServerInterceptor,
50+
serverMetrics.UnaryServerInterceptor(),
4651
}
4752
if interceptor != nil {
4853
chainUnaryInterceptors = append(chainUnaryInterceptors, interceptor)
4954
}
5055

5156
chainStreamInterceptors := []grpc.StreamServerInterceptor{
5257
newStreamInterceptor(s),
53-
grpc_prometheus.StreamServerInterceptor,
58+
serverMetrics.StreamServerInterceptor(),
5459
}
5560

5661
if s.Cfg.ExperimentalEnableDistributedTracing {
@@ -79,7 +84,7 @@ func Server(s *etcdserver.EtcdServer, tls *tls.Config, interceptor grpc.UnarySer
7984
pb.RegisterMaintenanceServer(grpcServer, NewMaintenanceServer(s, healthNotifier))
8085

8186
// set zero values for metrics registered for this grpc server
82-
grpc_prometheus.Register(grpcServer)
87+
serverMetrics.InitializeMetrics(grpcServer)
8388

8489
return grpcServer
8590
}

server/go.mod

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ require (
1515
github.com/google/btree v1.1.3
1616
github.com/google/go-cmp v0.6.0
1717
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
18-
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
18+
github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1
1919
github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1
2020
github.com/jonboulle/clockwork v0.5.0
2121
github.com/prometheus/client_golang v1.20.5
@@ -56,6 +56,7 @@ require (
5656
github.com/go-logr/stdr v1.2.2 // indirect
5757
github.com/google/uuid v1.6.0 // indirect
5858
github.com/gorilla/websocket v1.4.2 // indirect
59+
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect
5960
github.com/inconshreveable/mousetrap v1.1.0 // indirect
6061
github.com/klauspost/compress v1.17.9 // indirect
6162
github.com/kylelemons/godebug v1.1.0 // indirect

server/go.sum

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,10 @@ github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0U
5959
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
6060
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw=
6161
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y=
62-
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
63-
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
62+
github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpSQwGEnkcRpTqNOIR6bJbR0gAorgP9CSALpRcKoAA=
63+
github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU=
64+
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk=
65+
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI=
6466
github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 h1:VNqngBF40hVlDloBruUehVYC3ArSgIyScOAyMRqBxRg=
6567
github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1/go.mod h1:RBRO7fro65R6tjKzYgLAFo0t1QEXY1Dp+i/bvpRiqiQ=
6668
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=

tests/go.mod

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ require (
2121
github.com/golang/protobuf v1.5.4
2222
github.com/google/go-cmp v0.6.0
2323
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
24-
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
24+
github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1
2525
github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1
2626
github.com/prometheus/client_golang v1.20.5
2727
github.com/prometheus/common v0.61.0
@@ -70,6 +70,7 @@ require (
7070
github.com/google/btree v1.1.3 // indirect
7171
github.com/google/uuid v1.6.0 // indirect
7272
github.com/gorilla/websocket v1.4.2 // indirect
73+
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect
7374
github.com/inconshreveable/mousetrap v1.1.0 // indirect
7475
github.com/jonboulle/clockwork v0.5.0 // indirect
7576
github.com/klauspost/compress v1.17.9 // indirect

tests/go.sum

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,10 @@ github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0U
7171
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
7272
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw=
7373
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y=
74-
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
75-
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
74+
github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpSQwGEnkcRpTqNOIR6bJbR0gAorgP9CSALpRcKoAA=
75+
github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU=
76+
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk=
77+
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI=
7678
github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 h1:VNqngBF40hVlDloBruUehVYC3ArSgIyScOAyMRqBxRg=
7779
github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1/go.mod h1:RBRO7fro65R6tjKzYgLAFo0t1QEXY1Dp+i/bvpRiqiQ=
7880
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=

tests/integration/clientv3/examples/example_metrics_test.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,14 @@ package clientv3_test
1717
import (
1818
"context"
1919
"fmt"
20+
"github.com/prometheus/client_golang/prometheus"
2021
"io"
2122
"log"
2223
"net"
2324
"net/http"
2425
"strings"
2526

26-
grpcprom "github.com/grpc-ecosystem/go-grpc-prometheus"
27+
grpcprom "github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus"
2728
"github.com/prometheus/client_golang/prometheus/promhttp"
2829
clientv3 "go.etcd.io/etcd/client/v3"
2930
"google.golang.org/grpc"
@@ -35,11 +36,13 @@ func mockClient_metrics() {
3536

3637
func ExampleClient_metrics() {
3738
forUnitTestsRunInMockedContext(mockClient_metrics, func() {
39+
clientMetrics := grpcprom.NewClientMetrics()
40+
prometheus.Register(clientMetrics)
3841
cli, err := clientv3.New(clientv3.Config{
3942
Endpoints: exampleEndpoints(),
4043
DialOptions: []grpc.DialOption{
41-
grpc.WithUnaryInterceptor(grpcprom.UnaryClientInterceptor),
42-
grpc.WithStreamInterceptor(grpcprom.StreamClientInterceptor),
44+
grpc.WithUnaryInterceptor(clientMetrics.UnaryClientInterceptor()),
45+
grpc.WithStreamInterceptor(clientMetrics.StreamClientInterceptor()),
4346
},
4447
})
4548
if err != nil {

tests/integration/clientv3/metrics_test.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ import (
2626
"testing"
2727
"time"
2828

29-
grpcprom "github.com/grpc-ecosystem/go-grpc-prometheus"
29+
grpcprom "github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus"
30+
"github.com/prometheus/client_golang/prometheus"
3031
"github.com/prometheus/client_golang/prometheus/promhttp"
3132
"google.golang.org/grpc"
3233

@@ -73,11 +74,14 @@ func TestV3ClientMetrics(t *testing.T) {
7374
clus := integration2.NewCluster(t, &integration2.ClusterConfig{Size: 1})
7475
defer clus.Terminate(t)
7576

77+
clientMetrics := grpcprom.NewClientMetrics()
78+
prometheus.Register(clientMetrics)
79+
7680
cfg := clientv3.Config{
7781
Endpoints: []string{clus.Members[0].GRPCURL},
7882
DialOptions: []grpc.DialOption{
79-
grpc.WithUnaryInterceptor(grpcprom.UnaryClientInterceptor),
80-
grpc.WithStreamInterceptor(grpcprom.StreamClientInterceptor),
83+
grpc.WithUnaryInterceptor(clientMetrics.UnaryClientInterceptor()),
84+
grpc.WithStreamInterceptor(clientMetrics.StreamClientInterceptor()),
8185
},
8286
}
8387
cli, cerr := integration2.NewClient(t, cfg)

0 commit comments

Comments
 (0)