Skip to content

Commit c87b73a

Browse files
authored
statistics: delete cluster status metrics on store deletion (#9945)
close #9942 Signed-off-by: okjiang <819421878@qq.com>
1 parent e7b612e commit c87b73a

File tree

6 files changed

+42
-7
lines changed

6 files changed

+42
-7
lines changed

pkg/core/store.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,14 @@ func (s *StoreInfo) IsTiFlashCompute() bool {
244244
return IsStoreContainLabel(s.GetMeta(), EngineKey, EngineTiFlashCompute)
245245
}
246246

247+
// Engine returns the engine type of the store.
248+
func (s *StoreInfo) Engine() string {
249+
if s.IsTiKV() {
250+
return EngineTiKV
251+
}
252+
return EngineTiFlash
253+
}
254+
247255
// IsUp returns true if store is serving or preparing.
248256
func (s *StoreInfo) IsUp() bool {
249257
return s.IsServing() || s.IsPreparing()

pkg/mcs/router/server/meta/watcher.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ func (w *Watcher) initializeStoreWatcher() error {
9595
}
9696
origin := w.basicCluster.GetStore(storeID)
9797
if origin != nil {
98+
statistics.DeleteClusterStatusMetrics(origin)
9899
w.basicCluster.DeleteStore(origin)
99100
log.Info("delete store meta", zap.Uint64("store-id", storeID))
100101
}

pkg/mcs/scheduling/server/meta/watcher.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ func (w *Watcher) initializeStoreWatcher() error {
9595
}
9696
origin := w.basicCluster.GetStore(storeID)
9797
if origin != nil {
98+
statistics.DeleteClusterStatusMetrics(origin)
9899
w.basicCluster.DeleteStore(origin)
99100
log.Info("delete store meta", zap.Uint64("store-id", storeID))
100101
}

pkg/statistics/metrics.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,13 @@
1414

1515
package statistics
1616

17-
import "github.com/prometheus/client_golang/prometheus"
17+
import (
18+
"strconv"
19+
20+
"github.com/prometheus/client_golang/prometheus"
21+
22+
"github.com/tikv/pd/pkg/core"
23+
)
1824

1925
var (
2026
hotCacheStatusGauge = prometheus.NewGaugeVec(
@@ -118,3 +124,11 @@ func init() {
118124
prometheus.MustRegister(regionAbnormalPeerDuration)
119125
prometheus.MustRegister(hotPeerSummary)
120126
}
127+
128+
// DeleteClusterStatusMetrics deletes the cluster status metrics of a store.
129+
func DeleteClusterStatusMetrics(store *core.StoreInfo) {
130+
engine := store.Engine()
131+
for _, status := range storeStatuses {
132+
clusterStatusGauge.DeleteLabelValues(status, engine, strconv.FormatUint(store.GetID(), 10))
133+
}
134+
}

pkg/statistics/store_collection.go

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,21 @@ const (
5252
clusterStatusStorageCapacity = "storage_capacity"
5353
)
5454

55+
var storeStatuses = []string{
56+
clusterStatusStoreUpCount,
57+
clusterStatusStoreDisconnectedCount,
58+
clusterStatusStoreSlowCount,
59+
clusterStatusStoreDownCount,
60+
clusterStatusStoreUnhealthCount,
61+
clusterStatusStoreOfflineCount,
62+
clusterStatusStoreTombstoneCount,
63+
clusterStatusStoreLowSpaceCount,
64+
clusterStatusStorePreparingCount,
65+
clusterStatusStoreServingCount,
66+
clusterStatusStoreRemovingCount,
67+
clusterStatusStoreRemovedCount,
68+
}
69+
5570
type storeStatistics struct {
5671
opt config.ConfProvider
5772
LabelCounter map[string][]uint64
@@ -129,12 +144,7 @@ func (s *storeStatistics) observe(store *core.StoreInfo) {
129144
}
130145
storeAddress := store.GetAddress()
131146
id := strconv.FormatUint(store.GetID(), 10)
132-
var engine string
133-
if store.IsTiKV() {
134-
engine = core.EngineTiKV
135-
} else {
136-
engine = core.EngineTiFlash
137-
}
147+
engine := store.Engine()
138148
storeStatusStats := s.observeStoreStatus(store)
139149
for statusType, value := range storeStatusStats {
140150
clusterStatusGauge.WithLabelValues(statusType, engine, id).Set(value)

server/cluster/cluster.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2008,6 +2008,7 @@ func (c *RaftCluster) deleteStore(store *core.StoreInfo) error {
20082008
return err
20092009
}
20102010
}
2011+
statistics.DeleteClusterStatusMetrics(store)
20112012
c.DeleteStore(store)
20122013
return nil
20132014
}

0 commit comments

Comments
 (0)