Skip to content

Commit 639690c

Browse files
committed
Separate the client metrics package
Signed-off-by: JmPotato <[email protected]>
1 parent 41ec8dc commit 639690c

10 files changed

+330
-311
lines changed

Diff for: client/client.go

+29-28
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import (
3434
"github.com/prometheus/client_golang/prometheus"
3535
"github.com/tikv/pd/client/clients/metastorage"
3636
"github.com/tikv/pd/client/errs"
37+
"github.com/tikv/pd/client/metrics"
3738
"github.com/tikv/pd/client/opt"
3839
"github.com/tikv/pd/client/utils/tlsutil"
3940
"go.uber.org/zap"
@@ -486,7 +487,7 @@ func newClientWithKeyspaceName(
486487
func (c *client) setup() error {
487488
// Init the metrics.
488489
if c.option.InitMetrics {
489-
initAndRegisterMetrics(c.option.MetricsLabels)
490+
metrics.InitAndRegisterMetrics(c.option.MetricsLabels)
490491
}
491492

492493
// Init the client base.
@@ -669,7 +670,7 @@ func (c *client) UpdateOption(option opt.DynamicOption, value any) error {
669670
// GetAllMembers gets the members Info from PD.
670671
func (c *client) GetAllMembers(ctx context.Context) ([]*pdpb.Member, error) {
671672
start := time.Now()
672-
defer func() { cmdDurationGetAllMembers.Observe(time.Since(start).Seconds()) }()
673+
defer func() { metrics.CmdDurationGetAllMembers.Observe(time.Since(start).Seconds()) }()
673674

674675
ctx, cancel := context.WithTimeout(ctx, c.option.Timeout)
675676
defer cancel()
@@ -679,7 +680,7 @@ func (c *client) GetAllMembers(ctx context.Context) ([]*pdpb.Member, error) {
679680
return nil, errs.ErrClientGetProtoClient
680681
}
681682
resp, err := protoClient.GetMembers(ctx, req)
682-
if err = c.respForErr(cmdFailDurationGetAllMembers, start, err, resp.GetHeader()); err != nil {
683+
if err = c.respForErr(metrics.CmdFailedDurationGetAllMembers, start, err, resp.GetHeader()); err != nil {
683684
return nil, err
684685
}
685686
return resp.GetMembers(), nil
@@ -854,7 +855,7 @@ func (c *client) GetRegionFromMember(ctx context.Context, key []byte, memberURLs
854855
defer span.Finish()
855856
}
856857
start := time.Now()
857-
defer func() { cmdDurationGetRegion.Observe(time.Since(start).Seconds()) }()
858+
defer func() { metrics.CmdDurationGetRegion.Observe(time.Since(start).Seconds()) }()
858859

859860
var resp *pdpb.GetRegionResponse
860861
for _, url := range memberURLs {
@@ -878,7 +879,7 @@ func (c *client) GetRegionFromMember(ctx context.Context, key []byte, memberURLs
878879
}
879880

880881
if resp == nil {
881-
cmdFailDurationGetRegion.Observe(time.Since(start).Seconds())
882+
metrics.CmdFailedDurationGetRegion.Observe(time.Since(start).Seconds())
882883
c.pdSvcDiscovery.ScheduleCheckMemberChanged()
883884
errorMsg := fmt.Sprintf("[pd] can't get region info from member URLs: %+v", memberURLs)
884885
return nil, errors.WithStack(errors.New(errorMsg))
@@ -893,7 +894,7 @@ func (c *client) GetRegion(ctx context.Context, key []byte, opts ...opt.GetRegio
893894
defer span.Finish()
894895
}
895896
start := time.Now()
896-
defer func() { cmdDurationGetRegion.Observe(time.Since(start).Seconds()) }()
897+
defer func() { metrics.CmdDurationGetRegion.Observe(time.Since(start).Seconds()) }()
897898
ctx, cancel := context.WithTimeout(ctx, c.option.Timeout)
898899
defer cancel()
899900

@@ -919,7 +920,7 @@ func (c *client) GetRegion(ctx context.Context, key []byte, opts ...opt.GetRegio
919920
resp, err = protoClient.GetRegion(cctx, req)
920921
}
921922

922-
if err = c.respForErr(cmdFailDurationGetRegion, start, err, resp.GetHeader()); err != nil {
923+
if err = c.respForErr(metrics.CmdFailedDurationGetRegion, start, err, resp.GetHeader()); err != nil {
923924
return nil, err
924925
}
925926
return handleRegionResponse(resp), nil
@@ -932,7 +933,7 @@ func (c *client) GetPrevRegion(ctx context.Context, key []byte, opts ...opt.GetR
932933
defer span.Finish()
933934
}
934935
start := time.Now()
935-
defer func() { cmdDurationGetPrevRegion.Observe(time.Since(start).Seconds()) }()
936+
defer func() { metrics.CmdDurationGetPrevRegion.Observe(time.Since(start).Seconds()) }()
936937
ctx, cancel := context.WithTimeout(ctx, c.option.Timeout)
937938
defer cancel()
938939

@@ -958,7 +959,7 @@ func (c *client) GetPrevRegion(ctx context.Context, key []byte, opts ...opt.GetR
958959
resp, err = protoClient.GetPrevRegion(cctx, req)
959960
}
960961

961-
if err = c.respForErr(cmdFailDurationGetPrevRegion, start, err, resp.GetHeader()); err != nil {
962+
if err = c.respForErr(metrics.CmdFailedDurationGetPrevRegion, start, err, resp.GetHeader()); err != nil {
962963
return nil, err
963964
}
964965
return handleRegionResponse(resp), nil
@@ -971,7 +972,7 @@ func (c *client) GetRegionByID(ctx context.Context, regionID uint64, opts ...opt
971972
defer span.Finish()
972973
}
973974
start := time.Now()
974-
defer func() { cmdDurationGetRegionByID.Observe(time.Since(start).Seconds()) }()
975+
defer func() { metrics.CmdDurationGetRegionByID.Observe(time.Since(start).Seconds()) }()
975976
ctx, cancel := context.WithTimeout(ctx, c.option.Timeout)
976977
defer cancel()
977978

@@ -997,7 +998,7 @@ func (c *client) GetRegionByID(ctx context.Context, regionID uint64, opts ...opt
997998
resp, err = protoClient.GetRegionByID(cctx, req)
998999
}
9991000

1000-
if err = c.respForErr(cmdFailedDurationGetRegionByID, start, err, resp.GetHeader()); err != nil {
1001+
if err = c.respForErr(metrics.CmdFailedDurationGetRegionByID, start, err, resp.GetHeader()); err != nil {
10011002
return nil, err
10021003
}
10031004
return handleRegionResponse(resp), nil
@@ -1010,7 +1011,7 @@ func (c *client) ScanRegions(ctx context.Context, key, endKey []byte, limit int,
10101011
defer span.Finish()
10111012
}
10121013
start := time.Now()
1013-
defer func() { cmdDurationScanRegions.Observe(time.Since(start).Seconds()) }()
1014+
defer func() { metrics.CmdDurationScanRegions.Observe(time.Since(start).Seconds()) }()
10141015

10151016
var cancel context.CancelFunc
10161017
scanCtx := ctx
@@ -1046,7 +1047,7 @@ func (c *client) ScanRegions(ctx context.Context, key, endKey []byte, limit int,
10461047
resp, err = protoClient.ScanRegions(cctx, req)
10471048
}
10481049

1049-
if err = c.respForErr(cmdFailedDurationScanRegions, start, err, resp.GetHeader()); err != nil {
1050+
if err = c.respForErr(metrics.CmdFailedDurationScanRegions, start, err, resp.GetHeader()); err != nil {
10501051
return nil, err
10511052
}
10521053

@@ -1060,7 +1061,7 @@ func (c *client) BatchScanRegions(ctx context.Context, ranges []KeyRange, limit
10601061
defer span.Finish()
10611062
}
10621063
start := time.Now()
1063-
defer func() { cmdDurationBatchScanRegions.Observe(time.Since(start).Seconds()) }()
1064+
defer func() { metrics.CmdDurationBatchScanRegions.Observe(time.Since(start).Seconds()) }()
10641065

10651066
var cancel context.CancelFunc
10661067
scanCtx := ctx
@@ -1099,7 +1100,7 @@ func (c *client) BatchScanRegions(ctx context.Context, ranges []KeyRange, limit
10991100
resp, err = protoClient.BatchScanRegions(cctx, req)
11001101
}
11011102

1102-
if err = c.respForErr(cmdFailedDurationBatchScanRegions, start, err, resp.GetHeader()); err != nil {
1103+
if err = c.respForErr(metrics.CmdFailedDurationBatchScanRegions, start, err, resp.GetHeader()); err != nil {
11031104
return nil, err
11041105
}
11051106

@@ -1159,7 +1160,7 @@ func (c *client) GetStore(ctx context.Context, storeID uint64) (*metapb.Store, e
11591160
defer span.Finish()
11601161
}
11611162
start := time.Now()
1162-
defer func() { cmdDurationGetStore.Observe(time.Since(start).Seconds()) }()
1163+
defer func() { metrics.CmdDurationGetStore.Observe(time.Since(start).Seconds()) }()
11631164

11641165
ctx, cancel := context.WithTimeout(ctx, c.option.Timeout)
11651166
defer cancel()
@@ -1173,7 +1174,7 @@ func (c *client) GetStore(ctx context.Context, storeID uint64) (*metapb.Store, e
11731174
}
11741175
resp, err := protoClient.GetStore(ctx, req)
11751176

1176-
if err = c.respForErr(cmdFailedDurationGetStore, start, err, resp.GetHeader()); err != nil {
1177+
if err = c.respForErr(metrics.CmdFailedDurationGetStore, start, err, resp.GetHeader()); err != nil {
11771178
return nil, err
11781179
}
11791180
return handleStoreResponse(resp)
@@ -1203,7 +1204,7 @@ func (c *client) GetAllStores(ctx context.Context, opts ...opt.GetStoreOption) (
12031204
defer span.Finish()
12041205
}
12051206
start := time.Now()
1206-
defer func() { cmdDurationGetAllStores.Observe(time.Since(start).Seconds()) }()
1207+
defer func() { metrics.CmdDurationGetAllStores.Observe(time.Since(start).Seconds()) }()
12071208

12081209
ctx, cancel := context.WithTimeout(ctx, c.option.Timeout)
12091210
defer cancel()
@@ -1217,7 +1218,7 @@ func (c *client) GetAllStores(ctx context.Context, opts ...opt.GetStoreOption) (
12171218
}
12181219
resp, err := protoClient.GetAllStores(ctx, req)
12191220

1220-
if err = c.respForErr(cmdFailedDurationGetAllStores, start, err, resp.GetHeader()); err != nil {
1221+
if err = c.respForErr(metrics.CmdFailedDurationGetAllStores, start, err, resp.GetHeader()); err != nil {
12211222
return nil, err
12221223
}
12231224
return resp.GetStores(), nil
@@ -1230,7 +1231,7 @@ func (c *client) UpdateGCSafePoint(ctx context.Context, safePoint uint64) (uint6
12301231
defer span.Finish()
12311232
}
12321233
start := time.Now()
1233-
defer func() { cmdDurationUpdateGCSafePoint.Observe(time.Since(start).Seconds()) }()
1234+
defer func() { metrics.CmdDurationUpdateGCSafePoint.Observe(time.Since(start).Seconds()) }()
12341235

12351236
ctx, cancel := context.WithTimeout(ctx, c.option.Timeout)
12361237
defer cancel()
@@ -1244,7 +1245,7 @@ func (c *client) UpdateGCSafePoint(ctx context.Context, safePoint uint64) (uint6
12441245
}
12451246
resp, err := protoClient.UpdateGCSafePoint(ctx, req)
12461247

1247-
if err = c.respForErr(cmdFailedDurationUpdateGCSafePoint, start, err, resp.GetHeader()); err != nil {
1248+
if err = c.respForErr(metrics.CmdFailedDurationUpdateGCSafePoint, start, err, resp.GetHeader()); err != nil {
12481249
return 0, err
12491250
}
12501251
return resp.GetNewSafePoint(), nil
@@ -1261,7 +1262,7 @@ func (c *client) UpdateServiceGCSafePoint(ctx context.Context, serviceID string,
12611262
}
12621263

12631264
start := time.Now()
1264-
defer func() { cmdDurationUpdateServiceGCSafePoint.Observe(time.Since(start).Seconds()) }()
1265+
defer func() { metrics.CmdDurationUpdateServiceGCSafePoint.Observe(time.Since(start).Seconds()) }()
12651266

12661267
ctx, cancel := context.WithTimeout(ctx, c.option.Timeout)
12671268
defer cancel()
@@ -1277,7 +1278,7 @@ func (c *client) UpdateServiceGCSafePoint(ctx context.Context, serviceID string,
12771278
}
12781279
resp, err := protoClient.UpdateServiceGCSafePoint(ctx, req)
12791280

1280-
if err = c.respForErr(cmdFailedDurationUpdateServiceGCSafePoint, start, err, resp.GetHeader()); err != nil {
1281+
if err = c.respForErr(metrics.CmdFailedDurationUpdateServiceGCSafePoint, start, err, resp.GetHeader()); err != nil {
12811282
return 0, err
12821283
}
12831284
return resp.GetMinSafePoint(), nil
@@ -1294,7 +1295,7 @@ func (c *client) ScatterRegion(ctx context.Context, regionID uint64) error {
12941295

12951296
func (c *client) scatterRegionsWithGroup(ctx context.Context, regionID uint64, group string) error {
12961297
start := time.Now()
1297-
defer func() { cmdDurationScatterRegion.Observe(time.Since(start).Seconds()) }()
1298+
defer func() { metrics.CmdDurationScatterRegion.Observe(time.Since(start).Seconds()) }()
12981299

12991300
ctx, cancel := context.WithTimeout(ctx, c.option.Timeout)
13001301
defer cancel()
@@ -1333,7 +1334,7 @@ func (c *client) SplitAndScatterRegions(ctx context.Context, splitKeys [][]byte,
13331334
defer span.Finish()
13341335
}
13351336
start := time.Now()
1336-
defer func() { cmdDurationSplitAndScatterRegions.Observe(time.Since(start).Seconds()) }()
1337+
defer func() { metrics.CmdDurationSplitAndScatterRegions.Observe(time.Since(start).Seconds()) }()
13371338
ctx, cancel := context.WithTimeout(ctx, c.option.Timeout)
13381339
defer cancel()
13391340
options := &opt.RegionsOp{}
@@ -1361,7 +1362,7 @@ func (c *client) GetOperator(ctx context.Context, regionID uint64) (*pdpb.GetOpe
13611362
defer span.Finish()
13621363
}
13631364
start := time.Now()
1364-
defer func() { cmdDurationGetOperator.Observe(time.Since(start).Seconds()) }()
1365+
defer func() { metrics.CmdDurationGetOperator.Observe(time.Since(start).Seconds()) }()
13651366

13661367
ctx, cancel := context.WithTimeout(ctx, c.option.Timeout)
13671368
defer cancel()
@@ -1383,7 +1384,7 @@ func (c *client) SplitRegions(ctx context.Context, splitKeys [][]byte, opts ...o
13831384
defer span.Finish()
13841385
}
13851386
start := time.Now()
1386-
defer func() { cmdDurationSplitRegions.Observe(time.Since(start).Seconds()) }()
1387+
defer func() { metrics.CmdDurationSplitRegions.Observe(time.Since(start).Seconds()) }()
13871388
ctx, cancel := context.WithTimeout(ctx, c.option.Timeout)
13881389
defer cancel()
13891390
options := &opt.RegionsOp{}
@@ -1410,7 +1411,7 @@ func (c *client) requestHeader() *pdpb.RequestHeader {
14101411

14111412
func (c *client) scatterRegionsWithOptions(ctx context.Context, regionsID []uint64, opts ...opt.RegionsOption) (*pdpb.ScatterRegionResponse, error) {
14121413
start := time.Now()
1413-
defer func() { cmdDurationScatterRegions.Observe(time.Since(start).Seconds()) }()
1414+
defer func() { metrics.CmdDurationScatterRegions.Observe(time.Since(start).Seconds()) }()
14141415
options := &opt.RegionsOp{}
14151416
for _, opt := range opts {
14161417
opt(options)

Diff for: client/gc_client.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"github.com/pingcap/kvproto/pkg/pdpb"
2323
"github.com/pingcap/log"
2424
"github.com/tikv/pd/client/errs"
25+
"github.com/tikv/pd/client/metrics"
2526
"go.uber.org/zap"
2627
)
2728

@@ -39,7 +40,7 @@ func (c *client) UpdateGCSafePointV2(ctx context.Context, keyspaceID uint32, saf
3940
defer span.Finish()
4041
}
4142
start := time.Now()
42-
defer func() { cmdDurationUpdateGCSafePointV2.Observe(time.Since(start).Seconds()) }()
43+
defer func() { metrics.CmdDurationUpdateGCSafePointV2.Observe(time.Since(start).Seconds()) }()
4344

4445
ctx, cancel := context.WithTimeout(ctx, c.option.Timeout)
4546
req := &pdpb.UpdateGCSafePointV2Request{
@@ -55,7 +56,7 @@ func (c *client) UpdateGCSafePointV2(ctx context.Context, keyspaceID uint32, saf
5556
resp, err := protoClient.UpdateGCSafePointV2(ctx, req)
5657
cancel()
5758

58-
if err = c.respForErr(cmdFailedDurationUpdateGCSafePointV2, start, err, resp.GetHeader()); err != nil {
59+
if err = c.respForErr(metrics.CmdFailedDurationUpdateGCSafePointV2, start, err, resp.GetHeader()); err != nil {
5960
return 0, err
6061
}
6162
return resp.GetNewSafePoint(), nil
@@ -68,7 +69,7 @@ func (c *client) UpdateServiceSafePointV2(ctx context.Context, keyspaceID uint32
6869
defer span.Finish()
6970
}
7071
start := time.Now()
71-
defer func() { cmdDurationUpdateServiceSafePointV2.Observe(time.Since(start).Seconds()) }()
72+
defer func() { metrics.CmdDurationUpdateServiceSafePointV2.Observe(time.Since(start).Seconds()) }()
7273

7374
ctx, cancel := context.WithTimeout(ctx, c.option.Timeout)
7475
req := &pdpb.UpdateServiceSafePointV2Request{
@@ -85,7 +86,7 @@ func (c *client) UpdateServiceSafePointV2(ctx context.Context, keyspaceID uint32
8586
}
8687
resp, err := protoClient.UpdateServiceSafePointV2(ctx, req)
8788
cancel()
88-
if err = c.respForErr(cmdFailedDurationUpdateServiceSafePointV2, start, err, resp.GetHeader()); err != nil {
89+
if err = c.respForErr(metrics.CmdFailedDurationUpdateServiceSafePointV2, start, err, resp.GetHeader()); err != nil {
8990
return 0, err
9091
}
9192
return resp.GetMinSafePoint(), nil

Diff for: client/keyspace_client.go

+10-9
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"github.com/pingcap/errors"
2323
"github.com/pingcap/kvproto/pkg/keyspacepb"
2424
"github.com/tikv/pd/client/errs"
25+
"github.com/tikv/pd/client/metrics"
2526
)
2627

2728
// KeyspaceClient manages keyspace metadata.
@@ -51,7 +52,7 @@ func (c *client) LoadKeyspace(ctx context.Context, name string) (*keyspacepb.Key
5152
defer span.Finish()
5253
}
5354
start := time.Now()
54-
defer func() { cmdDurationLoadKeyspace.Observe(time.Since(start).Seconds()) }()
55+
defer func() { metrics.CmdDurationLoadKeyspace.Observe(time.Since(start).Seconds()) }()
5556
ctx, cancel := context.WithTimeout(ctx, c.option.Timeout)
5657
req := &keyspacepb.LoadKeyspaceRequest{
5758
Header: c.requestHeader(),
@@ -66,13 +67,13 @@ func (c *client) LoadKeyspace(ctx context.Context, name string) (*keyspacepb.Key
6667
cancel()
6768

6869
if err != nil {
69-
cmdFailedDurationLoadKeyspace.Observe(time.Since(start).Seconds())
70+
metrics.CmdFailedDurationLoadKeyspace.Observe(time.Since(start).Seconds())
7071
c.pdSvcDiscovery.ScheduleCheckMemberChanged()
7172
return nil, err
7273
}
7374

7475
if resp.Header.GetError() != nil {
75-
cmdFailedDurationLoadKeyspace.Observe(time.Since(start).Seconds())
76+
metrics.CmdFailedDurationLoadKeyspace.Observe(time.Since(start).Seconds())
7677
return nil, errors.Errorf("Load keyspace %s failed: %s", name, resp.Header.GetError().String())
7778
}
7879

@@ -95,7 +96,7 @@ func (c *client) UpdateKeyspaceState(ctx context.Context, id uint32, state keysp
9596
defer span.Finish()
9697
}
9798
start := time.Now()
98-
defer func() { cmdDurationUpdateKeyspaceState.Observe(time.Since(start).Seconds()) }()
99+
defer func() { metrics.CmdDurationUpdateKeyspaceState.Observe(time.Since(start).Seconds()) }()
99100
ctx, cancel := context.WithTimeout(ctx, c.option.Timeout)
100101
req := &keyspacepb.UpdateKeyspaceStateRequest{
101102
Header: c.requestHeader(),
@@ -111,13 +112,13 @@ func (c *client) UpdateKeyspaceState(ctx context.Context, id uint32, state keysp
111112
cancel()
112113

113114
if err != nil {
114-
cmdFailedDurationUpdateKeyspaceState.Observe(time.Since(start).Seconds())
115+
metrics.CmdFailedDurationUpdateKeyspaceState.Observe(time.Since(start).Seconds())
115116
c.pdSvcDiscovery.ScheduleCheckMemberChanged()
116117
return nil, err
117118
}
118119

119120
if resp.Header.GetError() != nil {
120-
cmdFailedDurationUpdateKeyspaceState.Observe(time.Since(start).Seconds())
121+
metrics.CmdFailedDurationUpdateKeyspaceState.Observe(time.Since(start).Seconds())
121122
return nil, errors.Errorf("Update state for keyspace id %d failed: %s", id, resp.Header.GetError().String())
122123
}
123124

@@ -139,7 +140,7 @@ func (c *client) GetAllKeyspaces(ctx context.Context, startID uint32, limit uint
139140
defer span.Finish()
140141
}
141142
start := time.Now()
142-
defer func() { cmdDurationGetAllKeyspaces.Observe(time.Since(start).Seconds()) }()
143+
defer func() { metrics.CmdDurationGetAllKeyspaces.Observe(time.Since(start).Seconds()) }()
143144
ctx, cancel := context.WithTimeout(ctx, c.option.Timeout)
144145
req := &keyspacepb.GetAllKeyspacesRequest{
145146
Header: c.requestHeader(),
@@ -155,13 +156,13 @@ func (c *client) GetAllKeyspaces(ctx context.Context, startID uint32, limit uint
155156
cancel()
156157

157158
if err != nil {
158-
cmdDurationGetAllKeyspaces.Observe(time.Since(start).Seconds())
159+
metrics.CmdDurationGetAllKeyspaces.Observe(time.Since(start).Seconds())
159160
c.pdSvcDiscovery.ScheduleCheckMemberChanged()
160161
return nil, err
161162
}
162163

163164
if resp.Header.GetError() != nil {
164-
cmdDurationGetAllKeyspaces.Observe(time.Since(start).Seconds())
165+
metrics.CmdDurationGetAllKeyspaces.Observe(time.Since(start).Seconds())
165166
return nil, errors.Errorf("Get all keyspaces metadata failed: %s", resp.Header.GetError().String())
166167
}
167168

0 commit comments

Comments
 (0)