From c71e3a78027121be45a1f518d270942302ee1a0c Mon Sep 17 00:00:00 2001 From: JunYang Date: Thu, 30 Jun 2022 15:51:28 +0800 Subject: [PATCH] When metrics are counted, discard the wrong container startup time metrics --- .../metrics/collectors/resource_metrics.go | 2 +- .../collectors/resource_metrics_test.go | 39 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/pkg/kubelet/metrics/collectors/resource_metrics.go b/pkg/kubelet/metrics/collectors/resource_metrics.go index 0f0662a2cd8..b5a3c963401 100644 --- a/pkg/kubelet/metrics/collectors/resource_metrics.go +++ b/pkg/kubelet/metrics/collectors/resource_metrics.go @@ -160,7 +160,7 @@ func (rc *resourceMetricsCollector) collectNodeMemoryMetrics(ch chan<- metrics.M } func (rc *resourceMetricsCollector) collectContainerStartTime(ch chan<- metrics.Metric, pod summary.PodStats, s summary.ContainerStats) { - if s.StartTime.Unix() == 0 { + if s.StartTime.Unix() <= 0 { return } diff --git a/pkg/kubelet/metrics/collectors/resource_metrics_test.go b/pkg/kubelet/metrics/collectors/resource_metrics_test.go index 6dd4fd8b531..6bdfad80c27 100644 --- a/pkg/kubelet/metrics/collectors/resource_metrics_test.go +++ b/pkg/kubelet/metrics/collectors/resource_metrics_test.go @@ -190,6 +190,45 @@ func TestCollectResourceMetrics(t *testing.T) { container_start_time_seconds{container="container_b",namespace="namespace_a",pod="pod_a"} 1.6243961583020916e+09 1624396158302 `, }, + { + name: "arbitrary container metrics for negative StartTime", + summary: &statsapi.Summary{ + Pods: []statsapi.PodStats{ + { + PodRef: statsapi.PodReference{ + Name: "pod_a", + Namespace: "namespace_a", + }, + Containers: []statsapi.ContainerStats{ + { + Name: "container_a", + StartTime: metav1.NewTime(time.Unix(0, -1624396278302091597)), + CPU: &statsapi.CPUStats{ + Time: testTime, + UsageCoreNanoSeconds: uint64Ptr(10000000000), + }, + Memory: &statsapi.MemoryStats{ + Time: testTime, + WorkingSetBytes: uint64Ptr(1000), + }, + }, + }, + }, + }, + }, + summaryErr: nil, + expectedMetrics: ` + # HELP scrape_error [ALPHA] 1 if there was an error while getting container metrics, 0 otherwise + # TYPE scrape_error gauge + scrape_error 0 + # HELP container_cpu_usage_seconds_total [ALPHA] Cumulative cpu time consumed by the container in core-seconds + # TYPE container_cpu_usage_seconds_total counter + container_cpu_usage_seconds_total{container="container_a",namespace="namespace_a",pod="pod_a"} 10 1624396278302 + # HELP container_memory_working_set_bytes [ALPHA] Current working set of the container in bytes + # TYPE container_memory_working_set_bytes gauge + container_memory_working_set_bytes{container="container_a",namespace="namespace_a",pod="pod_a"} 1000 1624396278302 + `, + }, { name: "nil container metrics", summary: &statsapi.Summary{