diff options
| author | Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> | 2022-10-08 01:26:29 +0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-07 13:26:29 -0700 |
| commit | 5db25a8f2ad235c40c2b19306a6a49b5c4715331 (patch) | |
| tree | a1e37ce03659f24845b3c331aa103ad2fb5f46ab | |
| parent | f8d3ff466d8d2360c39132910710f5a33cf2b2be (diff) | |
| download | seaweedfs-5db25a8f2ad235c40c2b19306a6a49b5c4715331.tar.xz seaweedfs-5db25a8f2ad235c40c2b19306a6a49b5c4715331.zip | |
metric shows who is currently blocking the cluster or not (#3799)
* master_admin_lock Shows whether cluster is locked now or not
https://github.com/seaweedfs/seaweedfs/issues/3452
* fix metric MasterAdminLock
| -rw-r--r-- | weed/server/master_grpc_server.go | 2 | ||||
| -rw-r--r-- | weed/server/master_grpc_server_admin.go | 3 | ||||
| -rw-r--r-- | weed/stats/metrics.go | 9 |
3 files changed, 14 insertions, 0 deletions
diff --git a/weed/server/master_grpc_server.go b/weed/server/master_grpc_server.go index 7caaf01b2..93569ce0d 100644 --- a/weed/server/master_grpc_server.go +++ b/weed/server/master_grpc_server.go @@ -307,6 +307,8 @@ func (ms *MasterServer) KeepConnected(stream master_pb.Seaweed_KeepConnectedServ case <-ticker.C: if !ms.Topo.IsLeader() { stats.MasterRaftIsleader.Set(0) + stats.MasterAdminLock.Reset() + stats.MasterReplicaPlacementMismatch.Reset() return ms.informNewLeader(stream) } else { stats.MasterRaftIsleader.Set(1) diff --git a/weed/server/master_grpc_server_admin.go b/weed/server/master_grpc_server_admin.go index fb2c5bd50..77d11df8a 100644 --- a/weed/server/master_grpc_server_admin.go +++ b/weed/server/master_grpc_server_admin.go @@ -3,6 +3,7 @@ package weed_server import ( "context" "fmt" + "github.com/seaweedfs/seaweedfs/weed/stats" "math/rand" "sync" "time" @@ -112,11 +113,13 @@ func (locks *AdminLocks) generateToken(lockName string, clientName string) (ts t lastClient: clientName, } locks.locks[lockName] = lock + stats.MasterAdminLock.WithLabelValues(clientName).Set(1) return lock.accessLockTime, lock.accessSecret } func (locks *AdminLocks) deleteLock(lockName string) { locks.Lock() + stats.MasterAdminLock.WithLabelValues(locks.locks[lockName].lastClient).Set(0) defer locks.Unlock() delete(locks.locks, lockName) } diff --git a/weed/stats/metrics.go b/weed/stats/metrics.go index 9947e2316..d1723fdc6 100644 --- a/weed/stats/metrics.go +++ b/weed/stats/metrics.go @@ -47,6 +47,14 @@ var ( Help: "is leader", }) + MasterAdminLock = prometheus.NewGaugeVec( + prometheus.GaugeOpts{ + Namespace: Namespace, + Subsystem: "master", + Name: "admin_lock", + Help: "admin lock", + }, []string{"client"}) + MasterReceivedHeartbeatCounter = prometheus.NewCounterVec( prometheus.CounterOpts{ Namespace: Namespace, @@ -199,6 +207,7 @@ var ( func init() { Gather.MustRegister(MasterClientConnectCounter) Gather.MustRegister(MasterRaftIsleader) + Gather.MustRegister(MasterAdminLock) Gather.MustRegister(MasterReceivedHeartbeatCounter) Gather.MustRegister(MasterLeaderChangeCounter) Gather.MustRegister(MasterReplicaPlacementMismatch) |
