From 1c538a26f38eacba6711314ae5230a29f5568c9c Mon Sep 17 00:00:00 2001 From: Akshit Grover Date: Mon, 19 Jul 2021 22:55:22 +0530 Subject: [PATCH 1/4] Add ReadyReplicas metric to deployment metric family * Add ReadyReplicas field in Deployment status to deployment metrics family * Depicts number of readyReplicas across all replicas sets owned by the deployment Signed-off-by: Akshit Grover --- internal/store/deployment.go | 15 +++++++++++++++ internal/store/deployment_test.go | 6 ++++++ 2 files changed, 21 insertions(+) diff --git a/internal/store/deployment.go b/internal/store/deployment.go index 41d17f55c8..82c0ed9203 100644 --- a/internal/store/deployment.go +++ b/internal/store/deployment.go @@ -73,6 +73,21 @@ func deploymentMetricFamilies(allowLabelsList []string) []generator.FamilyGenera } }), ), + *generator.NewFamilyGenerator( + "kube_deployment_status_ready_replicas", + "The number of ready replicas per deployment.", + metric.Gauge, + "", + wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family { + return &metric.Family{ + Metrics: []*metric.Metric{ + { + Value: float64(d.Status.ReadyReplicas), + }, + }, + } + }), + ), *generator.NewFamilyGenerator( "kube_deployment_status_replicas_available", "The number of available replicas per deployment.", diff --git a/internal/store/deployment_test.go b/internal/store/deployment_test.go index c4b246fbd6..a65390b32a 100644 --- a/internal/store/deployment_test.go +++ b/internal/store/deployment_test.go @@ -53,6 +53,8 @@ func TestDeploymentStore(t *testing.T) { # TYPE kube_deployment_spec_replicas gauge # HELP kube_deployment_status_replicas The number of replicas per deployment. # TYPE kube_deployment_status_replicas gauge + # HELP kube_deployment_status_ready_replicas The number of ready replicas per deployment. + # TYPE kube_deployment_status_ready_replicas gauge # HELP kube_deployment_status_replicas_available The number of available replicas per deployment. # TYPE kube_deployment_status_replicas_available gauge # HELP kube_deployment_status_replicas_unavailable The number of unavailable replicas per deployment. @@ -84,6 +86,7 @@ func TestDeploymentStore(t *testing.T) { }, Status: v1.DeploymentStatus{ Replicas: 15, + ReadyReplicas: 10, AvailableReplicas: 10, UnavailableReplicas: 5, UpdatedReplicas: 2, @@ -116,6 +119,7 @@ func TestDeploymentStore(t *testing.T) { kube_deployment_status_replicas_unavailable{deployment="depl1",namespace="ns1"} 5 kube_deployment_status_replicas_updated{deployment="depl1",namespace="ns1"} 2 kube_deployment_status_replicas{deployment="depl1",namespace="ns1"} 15 + kube_deployment_status_ready_replicas{deployment="depl1",namespace="ns1"} 10 kube_deployment_status_condition{deployment="depl1",namespace="ns1",condition="Available",status="true"} 1 kube_deployment_status_condition{deployment="depl1",namespace="ns1",condition="Progressing",status="true"} 1 kube_deployment_status_condition{deployment="depl1",namespace="ns1",condition="Available",status="false"} 0 @@ -136,6 +140,7 @@ func TestDeploymentStore(t *testing.T) { }, Status: v1.DeploymentStatus{ Replicas: 10, + ReadyReplicas: 5, AvailableReplicas: 5, UnavailableReplicas: 0, UpdatedReplicas: 1, @@ -169,6 +174,7 @@ func TestDeploymentStore(t *testing.T) { kube_deployment_status_replicas_unavailable{deployment="depl2",namespace="ns2"} 0 kube_deployment_status_replicas_updated{deployment="depl2",namespace="ns2"} 1 kube_deployment_status_replicas{deployment="depl2",namespace="ns2"} 10 + kube_deployment_status_ready_replicas{deployment="depl2",namespace="ns2"} 5 kube_deployment_status_condition{deployment="depl2",namespace="ns2",condition="Available",status="true"} 0 kube_deployment_status_condition{deployment="depl2",namespace="ns2",condition="Progressing",status="true"} 0 kube_deployment_status_condition{deployment="depl2",namespace="ns2",condition="ReplicaFailure",status="true"} 1 From f8be5e1e2eccdd394c52e96c39a40c0c7cae36c0 Mon Sep 17 00:00:00 2001 From: Akshit Grover Date: Thu, 22 Jul 2021 20:27:00 +0530 Subject: [PATCH 2/4] Fix deployment ready replicas metric name Signed-off-by: Akshit Grover --- internal/store/deployment.go | 2 +- internal/store/deployment_test.go | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/store/deployment.go b/internal/store/deployment.go index 82c0ed9203..a6db137b3a 100644 --- a/internal/store/deployment.go +++ b/internal/store/deployment.go @@ -74,7 +74,7 @@ func deploymentMetricFamilies(allowLabelsList []string) []generator.FamilyGenera }), ), *generator.NewFamilyGenerator( - "kube_deployment_status_ready_replicas", + "kube_deployment_status_replicas_ready", "The number of ready replicas per deployment.", metric.Gauge, "", diff --git a/internal/store/deployment_test.go b/internal/store/deployment_test.go index a65390b32a..b05d6b999a 100644 --- a/internal/store/deployment_test.go +++ b/internal/store/deployment_test.go @@ -53,8 +53,8 @@ func TestDeploymentStore(t *testing.T) { # TYPE kube_deployment_spec_replicas gauge # HELP kube_deployment_status_replicas The number of replicas per deployment. # TYPE kube_deployment_status_replicas gauge - # HELP kube_deployment_status_ready_replicas The number of ready replicas per deployment. - # TYPE kube_deployment_status_ready_replicas gauge + # HELP kube_deployment_status_replicas_ready The number of ready replicas per deployment. + # TYPE kube_deployment_status_replicas_ready gauge # HELP kube_deployment_status_replicas_available The number of available replicas per deployment. # TYPE kube_deployment_status_replicas_available gauge # HELP kube_deployment_status_replicas_unavailable The number of unavailable replicas per deployment. @@ -119,7 +119,7 @@ func TestDeploymentStore(t *testing.T) { kube_deployment_status_replicas_unavailable{deployment="depl1",namespace="ns1"} 5 kube_deployment_status_replicas_updated{deployment="depl1",namespace="ns1"} 2 kube_deployment_status_replicas{deployment="depl1",namespace="ns1"} 15 - kube_deployment_status_ready_replicas{deployment="depl1",namespace="ns1"} 10 + kube_deployment_status_replicas_ready{deployment="depl1",namespace="ns1"} 10 kube_deployment_status_condition{deployment="depl1",namespace="ns1",condition="Available",status="true"} 1 kube_deployment_status_condition{deployment="depl1",namespace="ns1",condition="Progressing",status="true"} 1 kube_deployment_status_condition{deployment="depl1",namespace="ns1",condition="Available",status="false"} 0 @@ -174,7 +174,7 @@ func TestDeploymentStore(t *testing.T) { kube_deployment_status_replicas_unavailable{deployment="depl2",namespace="ns2"} 0 kube_deployment_status_replicas_updated{deployment="depl2",namespace="ns2"} 1 kube_deployment_status_replicas{deployment="depl2",namespace="ns2"} 10 - kube_deployment_status_ready_replicas{deployment="depl2",namespace="ns2"} 5 + kube_deployment_status_replicas_ready{deployment="depl2",namespace="ns2"} 5 kube_deployment_status_condition{deployment="depl2",namespace="ns2",condition="Available",status="true"} 0 kube_deployment_status_condition{deployment="depl2",namespace="ns2",condition="Progressing",status="true"} 0 kube_deployment_status_condition{deployment="depl2",namespace="ns2",condition="ReplicaFailure",status="true"} 1 From 8990d2e990d4b2e267cde970d216c19baa15ee9c Mon Sep 17 00:00:00 2001 From: Akshit Grover Date: Thu, 22 Jul 2021 23:33:36 +0530 Subject: [PATCH 3/4] Add kube_deployment_status_replicas_ready in the docs Signed-off-by: Akshit Grover --- docs/deployment-metrics.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/deployment-metrics.md b/docs/deployment-metrics.md index 4c7ca99339..632ebb850a 100644 --- a/docs/deployment-metrics.md +++ b/docs/deployment-metrics.md @@ -3,6 +3,7 @@ | Metric name| Metric type | Labels/tags | Status | | ---------- | ----------- | ----------- | ----------- | | kube_deployment_status_replicas | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | STABLE | +| kube_deployment_status_replicas_ready | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | STABLE | | kube_deployment_status_replicas_available | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | STABLE | | kube_deployment_status_replicas_unavailable | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | STABLE | | kube_deployment_status_replicas_updated | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | STABLE | From 405419106e9fd2a55573386e268df01b76eac713 Mon Sep 17 00:00:00 2001 From: Akshit Grover Date: Mon, 26 Jul 2021 18:10:06 +0530 Subject: [PATCH 4/4] Update deployment ready replicas metric status Change status for kube_deployment_status_replicas_ready to EXPERIMENTAL --- docs/deployment-metrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/deployment-metrics.md b/docs/deployment-metrics.md index 632ebb850a..9176f620b7 100644 --- a/docs/deployment-metrics.md +++ b/docs/deployment-metrics.md @@ -3,7 +3,7 @@ | Metric name| Metric type | Labels/tags | Status | | ---------- | ----------- | ----------- | ----------- | | kube_deployment_status_replicas | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | STABLE | -| kube_deployment_status_replicas_ready | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | STABLE | +| kube_deployment_status_replicas_ready | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | EXPERIMENTAL | | kube_deployment_status_replicas_available | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | STABLE | | kube_deployment_status_replicas_unavailable | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | STABLE | | kube_deployment_status_replicas_updated | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | STABLE |