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