Skip to content

Commit 88efbb1

Browse files
add
1 parent 28bf0e8 commit 88efbb1

File tree

3 files changed

+47
-1
lines changed

3 files changed

+47
-1
lines changed

docs/metrics/workload/deployment-metrics.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@
1717
| kube_deployment_metadata_generation | Gauge | | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; | STABLE |
1818
| kube_deployment_labels | Gauge | Kubernetes labels converted to Prometheus labels controlled via [--metric-labels-allowlist](../../developer/cli-arguments.md) | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; <br> `label_DEPLOYMENT_LABEL`=&lt;DEPLOYMENT_LABEL&gt; | STABLE |
1919
| kube_deployment_created | Gauge | | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; | STABLE |
20+
| kube_deployment_deletion_timestamp | Gauge | | `deployment`=&lt;deployment-name&gt; <br> `namespace`=&lt;deployment-namespace&gt; | EXPIREMENTAL|

internal/store/deployment.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,26 @@ func deploymentMetricFamilies(allowAnnotationsList, allowLabelsList []string) []
283283
}
284284
}),
285285
),
286+
*generator.NewFamilyGeneratorWithStability(
287+
"kube_deployment_deletion_timestamp",
288+
"Unix deletion timestamp.",
289+
metric.Gauge,
290+
basemetrics.ALPHA,
291+
"",
292+
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
293+
ms := []*metric.Metric{}
294+
295+
if !d.DeletionTimestamp.IsZero() {
296+
ms = append(ms, &metric.Metric{
297+
Value: float64(d.DeletionTimestamp.Unix()),
298+
})
299+
}
300+
301+
return &metric.Family{
302+
Metrics: ms,
303+
}
304+
}),
305+
),
286306
*generator.NewFamilyGeneratorWithStability(
287307
descDeploymentAnnotationsName,
288308
descDeploymentAnnotationsHelp,

internal/store/deployment_test.go

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import (
3131
var (
3232
depl1Replicas int32 = 200
3333
depl2Replicas int32 = 5
34+
depl3Replicas int32 = 10
3435

3536
depl1MaxUnavailable = intstr.FromInt(10)
3637
depl2MaxUnavailable = intstr.FromString("25%")
@@ -73,6 +74,8 @@ func TestDeploymentStore(t *testing.T) {
7374
# TYPE kube_deployment_spec_strategy_rollingupdate_max_surge gauge
7475
# HELP kube_deployment_labels [STABLE] Kubernetes labels converted to Prometheus labels.
7576
# TYPE kube_deployment_labels gauge
77+
# HELP kube_deployment_deletion_timestamp Unix deletion timestamp.
78+
# TYPE kube_deployment_deletion_timestamp gauge
7679
`
7780
cases := []generateMetricsTestCase{
7881
{
@@ -191,8 +194,30 @@ func TestDeploymentStore(t *testing.T) {
191194
kube_deployment_status_condition{deployment="depl2",namespace="ns2",condition="ReplicaFailure",status="unknown"} 0
192195
`,
193196
},
197+
{
198+
Obj: &v1.Deployment{
199+
ObjectMeta: metav1.ObjectMeta{
200+
Name: "deployment-terminating",
201+
Namespace: "ns3",
202+
CreationTimestamp: metav1.Time{Time: time.Unix(1600000000, 0)},
203+
DeletionTimestamp: &metav1.Time{Time: time.Unix(1800000000, 0)},
204+
Labels: map[string]string{
205+
"app": "example3",
206+
},
207+
Generation: 22,
208+
},
209+
Spec: v1.DeploymentSpec{
210+
Paused: true,
211+
Replicas: &depl3Replicas,
212+
},
213+
},
214+
Want: `
215+
# HELP kube_deployment_deletion_timestamp Unix deletion timestamp.
216+
# TYPE kube_deployment_deletion_timestamp gauge
217+
kube_deployment_deletion_timestamp{deployment="deployment-terminating",namespace="ns3"} 1.8e+09`,
218+
MetricNames: []string{"kube_deployment_deletion_timestamp"},
219+
},
194220
}
195-
196221
for i, c := range cases {
197222
c.Func = generator.ComposeMetricGenFuncs(deploymentMetricFamilies(c.AllowAnnotationsList, nil))
198223
c.Headers = generator.ExtractMetricFamilyHeaders(deploymentMetricFamilies(c.AllowAnnotationsList, nil))

0 commit comments

Comments
 (0)