From 4d23f6bddd2e8dd2610b9b24cfd7f53c4d1be6c6 Mon Sep 17 00:00:00 2001 From: idoko Date: Wed, 19 Nov 2025 09:49:08 +0100 Subject: [PATCH 1/2] avoid default gatherer when standard collectors are enabled --- mysqld_exporter.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/mysqld_exporter.go b/mysqld_exporter.go index 84a3400d..80ff22bf 100644 --- a/mysqld_exporter.go +++ b/mysqld_exporter.go @@ -263,9 +263,21 @@ func newHandler(scrapers []collector.Scraper, logger *slog.Logger) http.HandlerF registry := prometheus.NewRegistry() registry.MustRegister(collector.New(ctx, dsn, filteredScrapers, logger)) - gatherers := prometheus.Gatherers{ - prometheus.DefaultGatherer, - registry, + useDefaultGatherer := true + for _, scraper := range filteredScrapers { + name := scraper.Name() + if name == "standard.go" || name == "standard.process" { + // these scrapers already exposes runtime/process metrics, so we disable the default gatherer to avoid duplicates + useDefaultGatherer = false + break + } + } + + var gatherers prometheus.Gatherers + if useDefaultGatherer { + gatherers = prometheus.Gatherers{prometheus.DefaultGatherer, registry} + } else { + gatherers = prometheus.Gatherers{registry} } eLogger := &errLogger{logger: logger} From 74932cecd3ebddd4763668b29b1496146820df57 Mon Sep 17 00:00:00 2001 From: Michael Okoko <10512379+idoqo@users.noreply.github.com> Date: Thu, 20 Nov 2025 09:22:33 +0100 Subject: [PATCH 2/2] fix typo Co-authored-by: Alex Demidoff --- mysqld_exporter.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysqld_exporter.go b/mysqld_exporter.go index 80ff22bf..3fe5544c 100644 --- a/mysqld_exporter.go +++ b/mysqld_exporter.go @@ -267,7 +267,7 @@ func newHandler(scrapers []collector.Scraper, logger *slog.Logger) http.HandlerF for _, scraper := range filteredScrapers { name := scraper.Name() if name == "standard.go" || name == "standard.process" { - // these scrapers already exposes runtime/process metrics, so we disable the default gatherer to avoid duplicates + // these scrapers already expose runtime/process metrics, so we disable the default gatherer to avoid duplicates useDefaultGatherer = false break }