From 36ad57664fea008e5be3b4828aef9f098db4c15e Mon Sep 17 00:00:00 2001 From: Frame Date: Fri, 8 Mar 2024 18:04:03 +0800 Subject: [PATCH] koordlet: fix GetAllPods error and wrong tsdb prometheus registry (#1944) Signed-off-by: saintube --- pkg/koordlet/metriccache/tsdb_storage.go | 4 +++- .../statesinformer/impl/kubelet_stub.go | 17 ++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/pkg/koordlet/metriccache/tsdb_storage.go b/pkg/koordlet/metriccache/tsdb_storage.go index b18cdde0b..5e5866b73 100644 --- a/pkg/koordlet/metriccache/tsdb_storage.go +++ b/pkg/koordlet/metriccache/tsdb_storage.go @@ -26,6 +26,8 @@ import ( promstorage "github.com/prometheus/prometheus/storage" "github.com/prometheus/prometheus/tsdb" "k8s.io/klog/v2" + + "github.com/koordinator-sh/koordinator/pkg/koordlet/metrics" ) // TSDBStorage defines time-series type DB, providing insert and query interface @@ -122,7 +124,7 @@ func NewTSDBStorage(conf *Config) (TSDBStorage, error) { var promReg prometheus.Registerer if conf.TSDBEnablePromMetrics { - promReg = prometheus.DefaultRegisterer + promReg = metrics.ExternalRegistry } db, err := tsdb.Open(conf.TSDBPath, nil, promReg, tsdbOpt, nil) if err != nil { diff --git a/pkg/koordlet/statesinformer/impl/kubelet_stub.go b/pkg/koordlet/statesinformer/impl/kubelet_stub.go index ae7a4b4e3..1eb10f604 100644 --- a/pkg/koordlet/statesinformer/impl/kubelet_stub.go +++ b/pkg/koordlet/statesinformer/impl/kubelet_stub.go @@ -71,22 +71,24 @@ func NewKubeletStub(addr string, port int, scheme string, timeout time.Duration, func (k *kubeletStub) GetAllPods() (corev1.PodList, error) { path := "/pods/" - url := url.URL{ + podsURL := url.URL{ Scheme: k.scheme, Host: net.JoinHostPort(k.addr, strconv.Itoa(k.port)), Path: path, } podList := corev1.PodList{} start := time.Now() - rsp, err := k.httpClient.Get(url.String()) - metrics.RecordKubeletRequestDuration(metrics.HTTPVerbGet, path, strconv.Itoa(rsp.StatusCode), metrics.SinceInSeconds(start)) - + rsp, err := k.httpClient.Get(podsURL.String()) + if rsp != nil { + metrics.RecordKubeletRequestDuration(metrics.HTTPVerbGet, path, strconv.Itoa(rsp.StatusCode), metrics.SinceInSeconds(start)) + } if err != nil { return podList, err } defer rsp.Body.Close() + if rsp.StatusCode != http.StatusOK { - return podList, fmt.Errorf("request %s failed, code %d", url.String(), rsp.StatusCode) + return podList, fmt.Errorf("request %s failed, code %d", podsURL.String(), rsp.StatusCode) } body, err := io.ReadAll(rsp.Body) @@ -116,8 +118,9 @@ func (k *kubeletStub) GetKubeletConfiguration() (*kubeletconfiginternal.KubeletC } start := time.Now() rsp, err := k.httpClient.Get(configzURL.String()) - metrics.RecordKubeletRequestDuration(metrics.HTTPVerbGet, path, strconv.Itoa(rsp.StatusCode), metrics.SinceInSeconds(start)) - + if rsp != nil { + metrics.RecordKubeletRequestDuration(metrics.HTTPVerbGet, path, strconv.Itoa(rsp.StatusCode), metrics.SinceInSeconds(start)) + } if err != nil { return nil, err }