Browse Source

etcdserver/api/etcdhttp: add "etcd_server_health_success/failures"

Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
Gyuho Lee 7 years ago
parent
commit
004e04a1d1
1 changed files with 27 additions and 0 deletions
  1. 27 0
      etcdserver/api/etcdhttp/metrics.go

+ 27 - 0
etcdserver/api/etcdhttp/metrics.go

@@ -24,6 +24,7 @@ import (
 	"go.etcd.io/etcd/etcdserver/etcdserverpb"
 	"go.etcd.io/etcd/etcdserver/etcdserverpb"
 	"go.etcd.io/etcd/raft"
 	"go.etcd.io/etcd/raft"
 
 
+	"github.com/prometheus/client_golang/prometheus"
 	"github.com/prometheus/client_golang/prometheus/promhttp"
 	"github.com/prometheus/client_golang/prometheus/promhttp"
 )
 )
 
 
@@ -67,6 +68,26 @@ func NewHealthHandler(hfunc func() Health) http.HandlerFunc {
 	}
 	}
 }
 }
 
 
+var (
+	healthSuccess = prometheus.NewCounter(prometheus.CounterOpts{
+		Namespace: "etcd",
+		Subsystem: "server",
+		Name:      "health_success",
+		Help:      "The total number of successful health checks",
+	})
+	healthFailed = prometheus.NewCounter(prometheus.CounterOpts{
+		Namespace: "etcd",
+		Subsystem: "server",
+		Name:      "health_failures",
+		Help:      "The total number of failed health checks",
+	})
+)
+
+func init() {
+	prometheus.MustRegister(healthSuccess)
+	prometheus.MustRegister(healthFailed)
+}
+
 // Health defines etcd server health status.
 // Health defines etcd server health status.
 // TODO: remove manual parsing in etcdctl cluster-health
 // TODO: remove manual parsing in etcdctl cluster-health
 type Health struct {
 type Health struct {
@@ -97,5 +118,11 @@ func checkHealth(srv etcdserver.ServerV2) Health {
 			h.Health = "false"
 			h.Health = "false"
 		}
 		}
 	}
 	}
+
+	if h.Health == "true" {
+		healthSuccess.Inc()
+	} else {
+		healthFailed.Inc()
+	}
 	return h
 	return h
 }
 }