Skip to content

Commit

Permalink
Introduce StatefulSet availableReplicas metric
Browse files Browse the repository at this point in the history
  • Loading branch information
ravisantoshgudimetla committed Aug 6, 2021
1 parent 799c5c2 commit 1c3071c
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 0 deletions.
1 change: 1 addition & 0 deletions docs/statefulset-metrics.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
| kube_statefulset_status_replicas | Gauge | `statefulset`=&lt;statefulset-name&gt; <br> `namespace`=&lt;statefulset-namespace&gt; | STABLE |
| kube_statefulset_status_replicas_current | Gauge | `statefulset`=&lt;statefulset-name&gt; <br> `namespace`=&lt;statefulset-namespace&gt; | STABLE |
| kube_statefulset_status_replicas_ready | Gauge | `statefulset`=&lt;statefulset-name&gt; <br> `namespace`=&lt;statefulset-namespace&gt; | STABLE |
| kube_statefulset_status_replicas_available | Gauge | `statefulset`=&lt;statefulset-name&gt; <br> `namespace`=&lt;statefulset-namespace&gt; | EXPERIMENTAL |
| kube_statefulset_status_replicas_updated | Gauge | `statefulset`=&lt;statefulset-name&gt; <br> `namespace`=&lt;statefulset-namespace&gt; | STABLE |
| kube_statefulset_status_observed_generation | Gauge | `statefulset`=&lt;statefulset-name&gt; <br> `namespace`=&lt;statefulset-namespace&gt; | STABLE |
| kube_statefulset_replicas | Gauge | `statefulset`=&lt;statefulset-name&gt; <br> `namespace`=&lt;statefulset-namespace&gt; | STABLE |
Expand Down
15 changes: 15 additions & 0 deletions internal/store/statefulset.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,21 @@ func statefulSetMetricFamilies(allowLabelsList []string) []generator.FamilyGener
}
}),
),
*generator.NewFamilyGenerator(
"kube_statefulset_status_replicas_available",
"The number of available replicas per StatefulSet.",
metric.Gauge,
"",
wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Value: float64(s.Status.AvailableReplicas),
},
},
}
}),
),
*generator.NewFamilyGenerator(
"kube_statefulset_status_replicas_current",
"The number of current replicas per StatefulSet.",
Expand Down
13 changes: 13 additions & 0 deletions internal/store/statefulset_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ func TestStatefulSetStore(t *testing.T) {
# HELP kube_statefulset_status_current_revision Indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).
# HELP kube_statefulset_status_observed_generation The generation observed by the StatefulSet controller.
# HELP kube_statefulset_status_replicas The number of replicas per StatefulSet.
# HELP kube_statefulset_status_replicas_available The number of available replicas per StatefulSet.
# HELP kube_statefulset_status_replicas_current The number of current replicas per StatefulSet.
# HELP kube_statefulset_status_replicas_ready The number of ready replicas per StatefulSet.
# HELP kube_statefulset_status_replicas_updated The number of updated replicas per StatefulSet.
Expand All @@ -78,6 +79,7 @@ func TestStatefulSetStore(t *testing.T) {
# TYPE kube_statefulset_status_current_revision gauge
# TYPE kube_statefulset_status_observed_generation gauge
# TYPE kube_statefulset_status_replicas gauge
# TYPE kube_statefulset_status_replicas_available gauge
# TYPE kube_statefulset_status_replicas_current gauge
# TYPE kube_statefulset_status_replicas_ready gauge
# TYPE kube_statefulset_status_replicas_updated gauge
Expand All @@ -86,6 +88,7 @@ func TestStatefulSetStore(t *testing.T) {
kube_statefulset_created{namespace="ns1",statefulset="statefulset1"} 1.5e+09
kube_statefulset_status_current_revision{namespace="ns1",revision="cr1",statefulset="statefulset1"} 1
kube_statefulset_status_replicas{namespace="ns1",statefulset="statefulset1"} 2
kube_statefulset_status_replicas_available{namespace="ns1",statefulset="statefulset1"} 0
kube_statefulset_status_replicas_current{namespace="ns1",statefulset="statefulset1"} 0
kube_statefulset_status_replicas_ready{namespace="ns1",statefulset="statefulset1"} 0
kube_statefulset_status_replicas_updated{namespace="ns1",statefulset="statefulset1"} 0
Expand All @@ -101,6 +104,7 @@ func TestStatefulSetStore(t *testing.T) {
"kube_statefulset_replicas",
"kube_statefulset_status_observed_generation",
"kube_statefulset_status_replicas",
"kube_statefulset_status_replicas_available",
"kube_statefulset_status_replicas_current",
"kube_statefulset_status_replicas_ready",
"kube_statefulset_status_replicas_updated",
Expand All @@ -127,6 +131,7 @@ func TestStatefulSetStore(t *testing.T) {
ObservedGeneration: statefulSet2ObservedGeneration,
ReadyReplicas: 5,
Replicas: 5,
AvailableReplicas: 4,
UpdatedReplicas: 3,
UpdateRevision: "ur2",
CurrentRevision: "cr2",
Expand All @@ -139,6 +144,7 @@ func TestStatefulSetStore(t *testing.T) {
# HELP kube_statefulset_status_current_revision Indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).
# HELP kube_statefulset_status_observed_generation The generation observed by the StatefulSet controller.
# HELP kube_statefulset_status_replicas The number of replicas per StatefulSet.
# HELP kube_statefulset_status_replicas_available The number of available replicas per StatefulSet.
# HELP kube_statefulset_status_replicas_current The number of current replicas per StatefulSet.
# HELP kube_statefulset_status_replicas_ready The number of ready replicas per StatefulSet.
# HELP kube_statefulset_status_replicas_updated The number of updated replicas per StatefulSet.
Expand All @@ -149,12 +155,14 @@ func TestStatefulSetStore(t *testing.T) {
# TYPE kube_statefulset_status_current_revision gauge
# TYPE kube_statefulset_status_observed_generation gauge
# TYPE kube_statefulset_status_replicas gauge
# TYPE kube_statefulset_status_replicas_available gauge
# TYPE kube_statefulset_status_replicas_current gauge
# TYPE kube_statefulset_status_replicas_ready gauge
# TYPE kube_statefulset_status_replicas_updated gauge
# TYPE kube_statefulset_status_update_revision gauge
kube_statefulset_status_update_revision{namespace="ns2",revision="ur2",statefulset="statefulset2"} 1
kube_statefulset_status_replicas{namespace="ns2",statefulset="statefulset2"} 5
kube_statefulset_status_replicas_available{namespace="ns2",statefulset="statefulset2"} 4
kube_statefulset_status_replicas_current{namespace="ns2",statefulset="statefulset2"} 2
kube_statefulset_status_replicas_ready{namespace="ns2",statefulset="statefulset2"} 5
kube_statefulset_status_replicas_updated{namespace="ns2",statefulset="statefulset2"} 3
Expand All @@ -170,6 +178,7 @@ func TestStatefulSetStore(t *testing.T) {
"kube_statefulset_replicas",
"kube_statefulset_status_observed_generation",
"kube_statefulset_status_replicas",
"kube_statefulset_status_replicas_available",
"kube_statefulset_status_replicas_current",
"kube_statefulset_status_replicas_ready",
"kube_statefulset_status_replicas_updated",
Expand Down Expand Up @@ -204,6 +213,7 @@ func TestStatefulSetStore(t *testing.T) {
# HELP kube_statefulset_replicas Number of desired pods for a StatefulSet.
# HELP kube_statefulset_status_current_revision Indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).
# HELP kube_statefulset_status_replicas The number of replicas per StatefulSet.
# HELP kube_statefulset_status_replicas_available The number of available replicas per StatefulSet.
# HELP kube_statefulset_status_replicas_current The number of current replicas per StatefulSet.
# HELP kube_statefulset_status_replicas_ready The number of ready replicas per StatefulSet.
# HELP kube_statefulset_status_replicas_updated The number of updated replicas per StatefulSet.
Expand All @@ -213,12 +223,14 @@ func TestStatefulSetStore(t *testing.T) {
# TYPE kube_statefulset_replicas gauge
# TYPE kube_statefulset_status_current_revision gauge
# TYPE kube_statefulset_status_replicas gauge
# TYPE kube_statefulset_status_replicas_available gauge
# TYPE kube_statefulset_status_replicas_current gauge
# TYPE kube_statefulset_status_replicas_ready gauge
# TYPE kube_statefulset_status_replicas_updated gauge
# TYPE kube_statefulset_status_update_revision gauge
kube_statefulset_status_update_revision{namespace="ns3",revision="ur3",statefulset="statefulset3"} 1
kube_statefulset_status_replicas{namespace="ns3",statefulset="statefulset3"} 7
kube_statefulset_status_replicas_available{namespace="ns3",statefulset="statefulset3"} 0
kube_statefulset_status_replicas_current{namespace="ns3",statefulset="statefulset3"} 0
kube_statefulset_status_replicas_ready{namespace="ns3",statefulset="statefulset3"} 0
kube_statefulset_status_replicas_updated{namespace="ns3",statefulset="statefulset3"} 0
Expand All @@ -232,6 +244,7 @@ func TestStatefulSetStore(t *testing.T) {
"kube_statefulset_metadata_generation",
"kube_statefulset_replicas",
"kube_statefulset_status_replicas",
"kube_statefulset_status_replicas_available",
"kube_statefulset_status_replicas_current",
"kube_statefulset_status_replicas_ready",
"kube_statefulset_status_replicas_updated",
Expand Down

0 comments on commit 1c3071c

Please sign in to comment.