diff --git a/docs/deployment-metrics.md b/docs/deployment-metrics.md index 4c7ca99339..9176f620b7 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> | 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 | diff --git a/internal/store/deployment.go b/internal/store/deployment.go index 41d17f55c8..a6db137b3a 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_replicas_ready", + "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..b05d6b999a 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_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. @@ -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_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 @@ -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_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