diff --git a/mysqld_exporter.go b/mysqld_exporter.go index 84a3400d..3fe5544c 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 expose 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}