From db223271e3d402e0165e8d4a6231905c5cac7789 Mon Sep 17 00:00:00 2001 From: Shukui Yang Date: Fri, 7 Apr 2023 10:12:41 +0800 Subject: [PATCH] Register imagePullThroughput and count with MiB Signed-off-by: Shukui Yang --- pkg/cri/sbserver/images/image_pull.go | 3 ++- pkg/cri/sbserver/images/metrics.go | 19 +++++++++++++------ pkg/cri/server/image_pull.go | 3 ++- pkg/cri/server/metrics.go | 18 +++++++++++++----- 4 files changed, 30 insertions(+), 13 deletions(-) diff --git a/pkg/cri/sbserver/images/image_pull.go b/pkg/cri/sbserver/images/image_pull.go index 589c260ec..84483b120 100644 --- a/pkg/cri/sbserver/images/image_pull.go +++ b/pkg/cri/sbserver/images/image_pull.go @@ -212,8 +212,9 @@ func (c *CRIImageService) PullImage(ctx context.Context, r *runtime.PullImageReq } } + const mbToByte = 1024 * 1024 size, _ := image.Size(ctx) - imagePullingSpeed := float64(size) / time.Since(startTime).Seconds() + imagePullingSpeed := float64(size) / mbToByte / time.Since(startTime).Seconds() imagePullThroughput.Observe(imagePullingSpeed) log.G(ctx).Infof("Pulled image %q with image id %q, repo tag %q, repo digest %q, size %q in %s", imageRef, imageID, diff --git a/pkg/cri/sbserver/images/metrics.go b/pkg/cri/sbserver/images/metrics.go index 762081880..a5b07fbd1 100644 --- a/pkg/cri/sbserver/images/metrics.go +++ b/pkg/cri/sbserver/images/metrics.go @@ -24,23 +24,30 @@ import ( var ( imagePulls metrics.LabeledCounter inProgressImagePulls metrics.Gauge - // pull duration / (image size / 1MBi) + // image size in MB / image pull duration in seconds imagePullThroughput prom.Histogram ) func init() { + const ( + namespace = "containerd" + subsystem = "cri_sandboxed" + ) + // these CRI metrics record latencies for successful operations around a sandbox and container's lifecycle. - ns := metrics.NewNamespace("containerd", "cri_sandboxed", nil) + ns := metrics.NewNamespace(namespace, subsystem, nil) imagePulls = ns.NewLabeledCounter("image_pulls", "succeeded and failed counters", "status") inProgressImagePulls = ns.NewGauge("in_progress_image_pulls", "in progress pulls", metrics.Total) imagePullThroughput = prom.NewHistogram( prom.HistogramOpts{ - Name: "image_pulling_throughput", - Help: "image pull throughput", - Buckets: prom.DefBuckets, + Namespace: namespace, + Subsystem: subsystem, + Name: "image_pulling_throughput", + Help: "image pull throughput", + Buckets: prom.DefBuckets, }, ) - + ns.Add(imagePullThroughput) metrics.Register(ns) } diff --git a/pkg/cri/server/image_pull.go b/pkg/cri/server/image_pull.go index 5671672c8..909514fe8 100644 --- a/pkg/cri/server/image_pull.go +++ b/pkg/cri/server/image_pull.go @@ -209,8 +209,9 @@ func (c *criService) PullImage(ctx context.Context, r *runtime.PullImageRequest) } } + const mbToByte = 1024 * 1024 size, _ := image.Size(ctx) - imagePullingSpeed := float64(size) / time.Since(startTime).Seconds() + imagePullingSpeed := float64(size) / mbToByte / time.Since(startTime).Seconds() imagePullThroughput.Observe(imagePullingSpeed) log.G(ctx).Infof("Pulled image %q with image id %q, repo tag %q, repo digest %q, size %q in %s", imageRef, imageID, diff --git a/pkg/cri/server/metrics.go b/pkg/cri/server/metrics.go index 57a5ceba0..db03ab087 100644 --- a/pkg/cri/server/metrics.go +++ b/pkg/cri/server/metrics.go @@ -42,13 +42,18 @@ var ( imagePulls metrics.LabeledCounter inProgressImagePulls metrics.Gauge - // pull duration / (image size / 1MBi) + // image size in MB / image pull duration in seconds imagePullThroughput prom.Histogram ) func init() { + const ( + namespace = "containerd" + subsystem = "cri" + ) + // these CRI metrics record latencies for successful operations around a sandbox and container's lifecycle. - ns := metrics.NewNamespace("containerd", "cri", nil) + ns := metrics.NewNamespace(namespace, subsystem, nil) sandboxListTimer = ns.NewTimer("sandbox_list", "time to list sandboxes") sandboxCreateNetworkTimer = ns.NewTimer("sandbox_create_network", "time to create the network for a sandbox") @@ -72,12 +77,15 @@ func init() { inProgressImagePulls = ns.NewGauge("in_progress_image_pulls", "in progress pulls", metrics.Total) imagePullThroughput = prom.NewHistogram( prom.HistogramOpts{ - Name: "image_pulling_throughput", - Help: "image pull throughput", - Buckets: prom.DefBuckets, + Namespace: namespace, + Subsystem: subsystem, + Name: "image_pulling_throughput", + Help: "image pull throughput", + Buckets: prom.DefBuckets, }, ) + ns.Add(imagePullThroughput) metrics.Register(ns) }