mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdserver: add learner metrics
This commit is contained in:
parent
cdca488d8b
commit
0b8727b3f3
@ -533,6 +533,21 @@ etcd_server_is_leader
|
|||||||
# type: "counter"
|
# type: "counter"
|
||||||
etcd_server_leader_changes_seen_total
|
etcd_server_leader_changes_seen_total
|
||||||
|
|
||||||
|
# name: "etcd_server_is_learner"
|
||||||
|
# description: "Whether or not this member is a learner. 1 if is, 0 otherwise."
|
||||||
|
# type: "gauge"
|
||||||
|
etcd_server_is_learner
|
||||||
|
|
||||||
|
# name: "etcd_server_learner_promote_failures"
|
||||||
|
# description: "The total number of failed learner promotions (likely learner not ready) while this member is leader."
|
||||||
|
# type: "counter"
|
||||||
|
etcd_server_learner_promote_failures
|
||||||
|
|
||||||
|
# name: "etcd_server_learner_promote_successes"
|
||||||
|
# description: "The total number of successful learner promotions while this member is leader."
|
||||||
|
# type: "counter"
|
||||||
|
etcd_server_learner_promote_successes
|
||||||
|
|
||||||
# name: "etcd_server_proposals_applied_total"
|
# name: "etcd_server_proposals_applied_total"
|
||||||
# description: "The total number of consensus proposals applied."
|
# description: "The total number of consensus proposals applied."
|
||||||
# type: "gauge"
|
# type: "gauge"
|
||||||
|
@ -44,6 +44,26 @@ var (
|
|||||||
Name: "leader_changes_seen_total",
|
Name: "leader_changes_seen_total",
|
||||||
Help: "The number of leader changes seen.",
|
Help: "The number of leader changes seen.",
|
||||||
})
|
})
|
||||||
|
isLearner = prometheus.NewGauge(prometheus.GaugeOpts{
|
||||||
|
Namespace: "etcd",
|
||||||
|
Subsystem: "server",
|
||||||
|
Name: "is_learner",
|
||||||
|
Help: "Whether or not this member is a learner. 1 if is, 0 otherwise.",
|
||||||
|
})
|
||||||
|
learnerPromoteFailed = prometheus.NewCounterVec(prometheus.CounterOpts{
|
||||||
|
Namespace: "etcd",
|
||||||
|
Subsystem: "server",
|
||||||
|
Name: "learner_promote_failures",
|
||||||
|
Help: "The total number of failed learner promotions (likely learner not ready) while this member is leader.",
|
||||||
|
},
|
||||||
|
[]string{"Reason"},
|
||||||
|
)
|
||||||
|
learnerPromoteSucceed = prometheus.NewCounter(prometheus.CounterOpts{
|
||||||
|
Namespace: "etcd",
|
||||||
|
Subsystem: "server",
|
||||||
|
Name: "learner_promote_successes",
|
||||||
|
Help: "The total number of successful learner promotions while this member is leader.",
|
||||||
|
})
|
||||||
heartbeatSendFailures = prometheus.NewCounter(prometheus.CounterOpts{
|
heartbeatSendFailures = prometheus.NewCounter(prometheus.CounterOpts{
|
||||||
Namespace: "etcd",
|
Namespace: "etcd",
|
||||||
Subsystem: "server",
|
Subsystem: "server",
|
||||||
@ -144,6 +164,9 @@ func init() {
|
|||||||
prometheus.MustRegister(currentVersion)
|
prometheus.MustRegister(currentVersion)
|
||||||
prometheus.MustRegister(currentGoVersion)
|
prometheus.MustRegister(currentGoVersion)
|
||||||
prometheus.MustRegister(serverID)
|
prometheus.MustRegister(serverID)
|
||||||
|
prometheus.MustRegister(isLearner)
|
||||||
|
prometheus.MustRegister(learnerPromoteSucceed)
|
||||||
|
prometheus.MustRegister(learnerPromoteFailed)
|
||||||
|
|
||||||
currentVersion.With(prometheus.Labels{
|
currentVersion.With(prometheus.Labels{
|
||||||
"server_version": version.Version,
|
"server_version": version.Version,
|
||||||
|
@ -1646,7 +1646,12 @@ func (s *EtcdServer) PromoteMember(ctx context.Context, id uint64) ([]*membershi
|
|||||||
// fails with ErrNotLeader, forward the request to leader node via HTTP. If promoteMember call fails with error
|
// fails with ErrNotLeader, forward the request to leader node via HTTP. If promoteMember call fails with error
|
||||||
// other than ErrNotLeader, return the error.
|
// other than ErrNotLeader, return the error.
|
||||||
resp, err := s.promoteMember(ctx, id)
|
resp, err := s.promoteMember(ctx, id)
|
||||||
|
if err == nil {
|
||||||
|
learnerPromoteSucceed.Inc()
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
if err != ErrNotLeader {
|
if err != ErrNotLeader {
|
||||||
|
learnerPromoteFailed.WithLabelValues(err.Error()).Inc()
|
||||||
return resp, err
|
return resp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2259,6 +2264,15 @@ func (s *EtcdServer) applyConfChange(cc raftpb.ConfChange, confState *raftpb.Con
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// update the isLearner metric when this server id is equal to the id in raft member confChange
|
||||||
|
if confChangeContext.Member.ID == s.id {
|
||||||
|
if cc.Type == raftpb.ConfChangeAddLearnerNode {
|
||||||
|
isLearner.Set(1)
|
||||||
|
} else {
|
||||||
|
isLearner.Set(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
case raftpb.ConfChangeRemoveNode:
|
case raftpb.ConfChangeRemoveNode:
|
||||||
id := types.ID(cc.NodeID)
|
id := types.ID(cc.NodeID)
|
||||||
s.cluster.RemoveMember(id)
|
s.cluster.RemoveMember(id)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user