aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Lebedev <9497591+kmlebedev@users.noreply.github.com>2022-10-08 01:26:29 +0500
committerGitHub <noreply@github.com>2022-10-07 13:26:29 -0700
commit5db25a8f2ad235c40c2b19306a6a49b5c4715331 (patch)
treea1e37ce03659f24845b3c331aa103ad2fb5f46ab
parentf8d3ff466d8d2360c39132910710f5a33cf2b2be (diff)
downloadseaweedfs-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.go2
-rw-r--r--weed/server/master_grpc_server_admin.go3
-rw-r--r--weed/stats/metrics.go9
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)