From 1c538a26f38eacba6711314ae5230a29f5568c9c Mon Sep 17 00:00:00 2001 From: Akshit Grover Date: Mon, 19 Jul 2021 22:55:22 +0530 Subject: [PATCH] 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