mirror of
https://github.com/minio/minio.git
synced 2025-04-01 10:13:42 -04:00
prom: Add read quorum per erasure set metric (#18736)
This commit is contained in:
parent
f4710948c4
commit
414bcb0c73
@ -2296,6 +2296,7 @@ type HealthResult struct {
|
|||||||
PoolID, SetID int
|
PoolID, SetID int
|
||||||
HealthyDrives int
|
HealthyDrives int
|
||||||
HealingDrives int
|
HealingDrives int
|
||||||
|
ReadQuorum int
|
||||||
WriteQuorum int
|
WriteQuorum int
|
||||||
}
|
}
|
||||||
WriteQuorum int
|
WriteQuorum int
|
||||||
@ -2373,8 +2374,10 @@ func (z *erasureServerPools) Health(ctx context.Context, opts HealthOptions) Hea
|
|||||||
}
|
}
|
||||||
|
|
||||||
b := z.BackendInfo()
|
b := z.BackendInfo()
|
||||||
|
poolReadQuorums := make([]int, len(b.StandardSCData))
|
||||||
poolWriteQuorums := make([]int, len(b.StandardSCData))
|
poolWriteQuorums := make([]int, len(b.StandardSCData))
|
||||||
for i, data := range b.StandardSCData {
|
for i, data := range b.StandardSCData {
|
||||||
|
poolReadQuorums[i] = data
|
||||||
poolWriteQuorums[i] = data
|
poolWriteQuorums[i] = data
|
||||||
if data == b.StandardSCParity {
|
if data == b.StandardSCParity {
|
||||||
poolWriteQuorums[i] = data + 1
|
poolWriteQuorums[i] = data + 1
|
||||||
@ -2412,15 +2415,17 @@ func (z *erasureServerPools) Health(ctx context.Context, opts HealthOptions) Hea
|
|||||||
for poolIdx := range erasureSetUpCount {
|
for poolIdx := range erasureSetUpCount {
|
||||||
for setIdx := range erasureSetUpCount[poolIdx] {
|
for setIdx := range erasureSetUpCount[poolIdx] {
|
||||||
result.ESHealth = append(result.ESHealth, struct {
|
result.ESHealth = append(result.ESHealth, struct {
|
||||||
Maintenance bool
|
Maintenance bool
|
||||||
PoolID, SetID int
|
PoolID, SetID int
|
||||||
HealthyDrives, HealingDrives, WriteQuorum int
|
HealthyDrives, HealingDrives int
|
||||||
|
ReadQuorum, WriteQuorum int
|
||||||
}{
|
}{
|
||||||
Maintenance: opts.Maintenance,
|
Maintenance: opts.Maintenance,
|
||||||
SetID: setIdx,
|
SetID: setIdx,
|
||||||
PoolID: poolIdx,
|
PoolID: poolIdx,
|
||||||
HealthyDrives: erasureSetUpCount[poolIdx][setIdx].online,
|
HealthyDrives: erasureSetUpCount[poolIdx][setIdx].online,
|
||||||
HealingDrives: erasureSetUpCount[poolIdx][setIdx].healing,
|
HealingDrives: erasureSetUpCount[poolIdx][setIdx].healing,
|
||||||
|
ReadQuorum: poolReadQuorums[poolIdx],
|
||||||
WriteQuorum: poolWriteQuorums[poolIdx],
|
WriteQuorum: poolWriteQuorums[poolIdx],
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -3236,6 +3236,16 @@ func getClusterHealthStatusMD() MetricDescription {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getClusterErasureSetReadQuorumMD() MetricDescription {
|
||||||
|
return MetricDescription{
|
||||||
|
Namespace: clusterMetricNamespace,
|
||||||
|
Subsystem: "health",
|
||||||
|
Name: "erasure_set_read_quorum",
|
||||||
|
Help: "Get the read quorum for this erasure set",
|
||||||
|
Type: gaugeMetric,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func getClusterErasureSetWriteQuorumMD() MetricDescription {
|
func getClusterErasureSetWriteQuorumMD() MetricDescription {
|
||||||
return MetricDescription{
|
return MetricDescription{
|
||||||
Namespace: clusterMetricNamespace,
|
Namespace: clusterMetricNamespace,
|
||||||
@ -3280,7 +3290,7 @@ func getClusterHealthMetrics() *MetricsGroup {
|
|||||||
opts := HealthOptions{}
|
opts := HealthOptions{}
|
||||||
result := objLayer.Health(ctx, opts)
|
result := objLayer.Health(ctx, opts)
|
||||||
|
|
||||||
metrics = make([]Metric, 0, 2+3*len(result.ESHealth))
|
metrics = make([]Metric, 0, 2+4*len(result.ESHealth))
|
||||||
|
|
||||||
metrics = append(metrics, Metric{
|
metrics = append(metrics, Metric{
|
||||||
Description: getClusterWriteQuorumMD(),
|
Description: getClusterWriteQuorumMD(),
|
||||||
@ -3302,6 +3312,11 @@ func getClusterHealthMetrics() *MetricsGroup {
|
|||||||
"pool": strconv.Itoa(h.PoolID),
|
"pool": strconv.Itoa(h.PoolID),
|
||||||
"set": strconv.Itoa(h.SetID),
|
"set": strconv.Itoa(h.SetID),
|
||||||
}
|
}
|
||||||
|
metrics = append(metrics, Metric{
|
||||||
|
Description: getClusterErasureSetReadQuorumMD(),
|
||||||
|
VariableLabels: labels,
|
||||||
|
Value: float64(h.ReadQuorum),
|
||||||
|
})
|
||||||
metrics = append(metrics, Metric{
|
metrics = append(metrics, Metric{
|
||||||
Description: getClusterErasureSetWriteQuorumMD(),
|
Description: getClusterErasureSetWriteQuorumMD(),
|
||||||
VariableLabels: labels,
|
VariableLabels: labels,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user