diff --git a/etcdserver/metrics.go b/etcdserver/metrics.go index f6f2d7b62..176c1b20c 100644 --- a/etcdserver/metrics.go +++ b/etcdserver/metrics.go @@ -110,6 +110,13 @@ var ( Help: "Which Go version server is running with. 1 for 'server_go_version' label with current version.", }, []string{"server_go_version"}) + serverID = prometheus.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: "etcd", + Subsystem: "server", + Name: "id", + Help: "Server or member ID in hexadecimal format. 1 for 'server_id' label with current ID.", + }, + []string{"server_id"}) ) func init() { @@ -127,6 +134,7 @@ func init() { prometheus.MustRegister(quotaBackendBytes) prometheus.MustRegister(currentVersion) prometheus.MustRegister(currentGoVersion) + prometheus.MustRegister(serverID) currentVersion.With(prometheus.Labels{ "server_version": version.Version, diff --git a/etcdserver/server.go b/etcdserver/server.go index f891c8623..35d9299d9 100644 --- a/etcdserver/server.go +++ b/etcdserver/server.go @@ -59,6 +59,8 @@ import ( "github.com/coreos/go-semver/semver" "github.com/coreos/pkg/capnslog" + "github.com/prometheus/client_golang/prometheus" + "golang.org/x/net/context" ) const ( @@ -435,6 +437,7 @@ func NewServer(cfg ServerConfig) (srv *EtcdServer, err error) { reqIDGen: idutil.NewGenerator(uint16(id), time.Now()), forceVersionC: make(chan struct{}), } + serverID.With(prometheus.Labels{"server_id": id.String()}).Set(1) srv.applyV2 = &applierV2store{store: srv.store, cluster: srv.cluster}