From 3f15edab12809eed0ebdd9e5398144f644d6c3e6 Mon Sep 17 00:00:00 2001 From: dongjiang Date: Tue, 14 Jan 2025 12:27:36 +0800 Subject: [PATCH 1/3] add GoCollector and rocessCollector Signed-off-by: dongjiang --- pkg/metrics/registry.go | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/pkg/metrics/registry.go b/pkg/metrics/registry.go index ce17124d53..1b9545c249 100644 --- a/pkg/metrics/registry.go +++ b/pkg/metrics/registry.go @@ -16,7 +16,12 @@ limitations under the License. package metrics -import "github.com/prometheus/client_golang/prometheus" +import ( + "regexp" + + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/collectors" +) // RegistererGatherer combines both parts of the API of a Prometheus // registry, both the Registerer and the Gatherer interfaces. @@ -27,4 +32,22 @@ type RegistererGatherer interface { // Registry is a prometheus registry for storing metrics within the // controller-runtime. -var Registry RegistererGatherer = prometheus.NewRegistry() +var Registry RegistererGatherer = NewRegistry() + +func NewRegistry() *prometheus.Registry { + r := prometheus.NewRegistry() + + // default registers + r.MustRegister( + collectors.NewGoCollector( + collectors.WithGoCollectorRuntimeMetrics( + collectors.MetricsGC, + collectors.MetricsScheduler, + collectors.MetricsMemory, + collectors.GoRuntimeMetricsRule{Matcher: regexp.MustCompile(`^/sync/.*`)}, + ), + ), + collectors.NewProcessCollector(collectors.ProcessCollectorOpts{}), + ) + return r +} From 03fe4cedb03ba7c8e799f9caf48505bb712a0c76 Mon Sep 17 00:00:00 2001 From: dongjiang Date: Wed, 15 Jan 2025 09:45:14 +0800 Subject: [PATCH 2/3] move to internal/controller/metrics Signed-off-by: dongjiang --- pkg/internal/controller/metrics/metrics.go | 11 ++++++++- pkg/metrics/registry.go | 27 ++-------------------- 2 files changed, 12 insertions(+), 26 deletions(-) diff --git a/pkg/internal/controller/metrics/metrics.go b/pkg/internal/controller/metrics/metrics.go index fbf15669d5..8f32908a2f 100644 --- a/pkg/internal/controller/metrics/metrics.go +++ b/pkg/internal/controller/metrics/metrics.go @@ -17,6 +17,8 @@ limitations under the License. package metrics import ( + "regexp" + "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/collectors" "sigs.k8s.io/controller-runtime/pkg/metrics" @@ -89,6 +91,13 @@ func init() { // expose process metrics like CPU, Memory, file descriptor usage etc. collectors.NewProcessCollector(collectors.ProcessCollectorOpts{}), // expose Go runtime metrics like GC stats, memory stats etc. - collectors.NewGoCollector(), + collectors.NewGoCollector( + collectors.WithGoCollectorRuntimeMetrics( + collectors.MetricsGC, + collectors.MetricsScheduler, + collectors.MetricsMemory, + collectors.GoRuntimeMetricsRule{Matcher: regexp.MustCompile(`^/sync/.*`)}, + ), + ), ) } diff --git a/pkg/metrics/registry.go b/pkg/metrics/registry.go index 1b9545c249..ce17124d53 100644 --- a/pkg/metrics/registry.go +++ b/pkg/metrics/registry.go @@ -16,12 +16,7 @@ limitations under the License. package metrics -import ( - "regexp" - - "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/collectors" -) +import "github.com/prometheus/client_golang/prometheus" // RegistererGatherer combines both parts of the API of a Prometheus // registry, both the Registerer and the Gatherer interfaces. @@ -32,22 +27,4 @@ type RegistererGatherer interface { // Registry is a prometheus registry for storing metrics within the // controller-runtime. -var Registry RegistererGatherer = NewRegistry() - -func NewRegistry() *prometheus.Registry { - r := prometheus.NewRegistry() - - // default registers - r.MustRegister( - collectors.NewGoCollector( - collectors.WithGoCollectorRuntimeMetrics( - collectors.MetricsGC, - collectors.MetricsScheduler, - collectors.MetricsMemory, - collectors.GoRuntimeMetricsRule{Matcher: regexp.MustCompile(`^/sync/.*`)}, - ), - ), - collectors.NewProcessCollector(collectors.ProcessCollectorOpts{}), - ) - return r -} +var Registry RegistererGatherer = prometheus.NewRegistry() From f843e7c51df6add7466dfca4d300e63acc0838e3 Mon Sep 17 00:00:00 2001 From: dongjiang Date: Wed, 5 Feb 2025 20:51:59 +0800 Subject: [PATCH 3/3] default add all go runtime metrics Signed-off-by: dongjiang --- pkg/internal/controller/metrics/metrics.go | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/pkg/internal/controller/metrics/metrics.go b/pkg/internal/controller/metrics/metrics.go index 8f32908a2f..6d562efb93 100644 --- a/pkg/internal/controller/metrics/metrics.go +++ b/pkg/internal/controller/metrics/metrics.go @@ -17,8 +17,6 @@ limitations under the License. package metrics import ( - "regexp" - "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/collectors" "sigs.k8s.io/controller-runtime/pkg/metrics" @@ -90,14 +88,7 @@ func init() { ActiveWorkers, // expose process metrics like CPU, Memory, file descriptor usage etc. collectors.NewProcessCollector(collectors.ProcessCollectorOpts{}), - // expose Go runtime metrics like GC stats, memory stats etc. - collectors.NewGoCollector( - collectors.WithGoCollectorRuntimeMetrics( - collectors.MetricsGC, - collectors.MetricsScheduler, - collectors.MetricsMemory, - collectors.GoRuntimeMetricsRule{Matcher: regexp.MustCompile(`^/sync/.*`)}, - ), - ), + // expose all Go runtime metrics like GC stats, memory stats etc. + collectors.NewGoCollector(collectors.WithGoCollectorRuntimeMetrics(collectors.MetricsAll)), ) }