Browse Source

etcdserver: add "etcd_server_snapshot_apply_inflights_total"

Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
Gyuho Lee 6 years ago
parent
commit
4527f4c4b0
2 changed files with 12 additions and 2 deletions
  1. 7 0
      etcdserver/metrics.go
  2. 5 2
      etcdserver/server.go

+ 7 - 0
etcdserver/metrics.go

@@ -54,6 +54,12 @@ var (
 		Name:      "slow_apply_total",
 		Name:      "slow_apply_total",
 		Help:      "The total number of slow apply requests (likely overloaded from slow disk).",
 		Help:      "The total number of slow apply requests (likely overloaded from slow disk).",
 	})
 	})
+	applySnapshotInProgress = prometheus.NewGauge(prometheus.GaugeOpts{
+		Namespace: "etcd",
+		Subsystem: "server",
+		Name:      "snapshot_apply_in_progress_total",
+		Help:      "1 if the server is applying the incoming snapshot. 0 if none.",
+	})
 	proposalsCommitted = prometheus.NewGauge(prometheus.GaugeOpts{
 	proposalsCommitted = prometheus.NewGauge(prometheus.GaugeOpts{
 		Namespace: "etcd",
 		Namespace: "etcd",
 		Subsystem: "server",
 		Subsystem: "server",
@@ -131,6 +137,7 @@ func init() {
 	prometheus.MustRegister(leaderChanges)
 	prometheus.MustRegister(leaderChanges)
 	prometheus.MustRegister(heartbeatSendFailures)
 	prometheus.MustRegister(heartbeatSendFailures)
 	prometheus.MustRegister(slowApplies)
 	prometheus.MustRegister(slowApplies)
+	prometheus.MustRegister(applySnapshotInProgress)
 	prometheus.MustRegister(proposalsCommitted)
 	prometheus.MustRegister(proposalsCommitted)
 	prometheus.MustRegister(proposalsApplied)
 	prometheus.MustRegister(proposalsApplied)
 	prometheus.MustRegister(proposalsPending)
 	prometheus.MustRegister(proposalsPending)

+ 5 - 2
etcdserver/server.go

@@ -866,9 +866,12 @@ func (s *EtcdServer) applySnapshot(ep *etcdProgress, apply *apply) {
 	if raft.IsEmptySnap(apply.snapshot) {
 	if raft.IsEmptySnap(apply.snapshot) {
 		return
 		return
 	}
 	}
-
+	applySnapshotInProgress.Inc()
 	plog.Infof("applying snapshot at index %d...", ep.snapi)
 	plog.Infof("applying snapshot at index %d...", ep.snapi)
-	defer plog.Infof("finished applying incoming snapshot at index %d", ep.snapi)
+	defer func() {
+		plog.Infof("finished applying incoming snapshot at index %d", ep.snapi)
+		applySnapshotInProgress.Dec()
+	}()
 
 
 	if apply.snapshot.Metadata.Index <= ep.appliedi {
 	if apply.snapshot.Metadata.Index <= ep.appliedi {
 		plog.Panicf("snapshot index [%d] should > appliedi[%d] + 1",
 		plog.Panicf("snapshot index [%d] should > appliedi[%d] + 1",