mirror of
https://github.com/prometheus-community/postgres_exporter
synced 2025-04-27 21:48:02 +00:00
Partially revert 47295e8
This commit is contained in:
parent
4328194f15
commit
8210082259
@ -54,14 +54,12 @@ func (e *Exporter) discoverDatabaseDSNs() []string {
|
||||
level.Error(logger).Log("msg", "Error opening connection to database", "dsn", loggableDSN(dsn), "err", err)
|
||||
continue
|
||||
}
|
||||
server.dbMtx.Lock()
|
||||
dsns[dsn] = struct{}{}
|
||||
|
||||
// If autoDiscoverDatabases is true, set first dsn as master database (Default: false)
|
||||
server.master = true
|
||||
|
||||
databaseNames, err := queryDatabases(server)
|
||||
server.dbMtx.Unlock()
|
||||
if err != nil {
|
||||
level.Error(logger).Log("msg", "Error querying databases", "dsn", loggableDSN(dsn), "err", err)
|
||||
continue
|
||||
@ -103,8 +101,9 @@ func (e *Exporter) discoverDatabaseDSNs() []string {
|
||||
|
||||
func (e *Exporter) scrapeDSN(ch chan<- prometheus.Metric, dsn string) error {
|
||||
server, err := e.servers.GetServer(dsn)
|
||||
server.dbMtx.Lock()
|
||||
defer server.dbMtx.Unlock()
|
||||
if err != nil {
|
||||
return err // TODO
|
||||
}
|
||||
|
||||
level.Debug(logger).Log("msg", "scrapeDSN:"+dsn)
|
||||
|
||||
@ -122,7 +121,7 @@ func (e *Exporter) scrapeDSN(ch chan<- prometheus.Metric, dsn string) error {
|
||||
level.Warn(logger).Log("msg", "Proceeding with outdated query maps, as the Postgres version could not be determined", "err", err)
|
||||
}
|
||||
|
||||
return server.Scrape(ch, e.disableSettingsMetrics, e.resolutionEnabled)
|
||||
return server.Scrape(ch, e.disableSettingsMetrics)
|
||||
}
|
||||
|
||||
// try to get the DataSource
|
||||
|
@ -16,11 +16,10 @@ package main
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
_ "net/http/pprof"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
_ "net/http/pprof"
|
||||
|
||||
"github.com/alecthomas/kingpin/v2"
|
||||
"github.com/go-kit/log"
|
||||
"github.com/go-kit/log/level"
|
||||
@ -51,7 +50,7 @@ var (
|
||||
disableDefaultMetrics = kingpin.Flag("disable-default-metrics", "Do not include default metrics.").Default("false").Envar("PG_EXPORTER_DISABLE_DEFAULT_METRICS").Bool()
|
||||
disableSettingsMetrics = kingpin.Flag("disable-settings-metrics", "Do not include pg_settings metrics.").Default("false").Envar("PG_EXPORTER_DISABLE_SETTINGS_METRICS").Bool()
|
||||
autoDiscoverDatabases = kingpin.Flag("auto-discover-databases", "Whether to discover the databases on a server dynamically. (DEPRECATED)").Default("false").Envar("PG_EXPORTER_AUTO_DISCOVER_DATABASES").Bool()
|
||||
//queriesPath = kingpin.Flag("extend.query-path", "Path to custom queries to run. (DEPRECATED)").Default("").Envar("PG_EXPORTER_EXTEND_QUERY_PATH").String()
|
||||
// queriesPath = kingpin.Flag("extend.query-path", "Path to custom queries to run. (DEPRECATED)").Default("").Envar("PG_EXPORTER_EXTEND_QUERY_PATH").String()
|
||||
onlyDumpMaps = kingpin.Flag("dumpmaps", "Do not run, simply dump the maps.").Bool()
|
||||
constantLabelsList = kingpin.Flag("constantLabels", "A list of label=value separated by comma(,). (DEPRECATED)").Default("").Envar("PG_EXPORTER_CONSTANT_LABELS").String()
|
||||
excludeDatabases = kingpin.Flag("exclude-databases", "A list of databases to remove when autoDiscoverDatabases is enabled (DEPRECATED)").Default("").Envar("PG_EXPORTER_EXCLUDE_DATABASES").String()
|
||||
@ -103,9 +102,9 @@ func main() {
|
||||
excludedDatabases := strings.Split(*excludeDatabases, ",")
|
||||
logger.Log("msg", "Excluded databases", "databases", fmt.Sprintf("%v", excludedDatabases))
|
||||
|
||||
//if *queriesPath != "" {
|
||||
// if *queriesPath != "" {
|
||||
// level.Warn(logger).Log("msg", "The extended queries.yaml config is DEPRECATED", "file", *queriesPath)
|
||||
//}
|
||||
// }
|
||||
|
||||
if *autoDiscoverDatabases || *excludeDatabases != "" || *includeDatabases != "" {
|
||||
level.Warn(logger).Log("msg", "Scraping additional databases via auto discovery is DEPRECATED")
|
||||
@ -115,15 +114,11 @@ func main() {
|
||||
level.Warn(logger).Log("msg", "Constant labels on all metrics is DEPRECATED")
|
||||
}
|
||||
|
||||
servers := NewServers(ServerWithLabels(parseConstLabels(*constantLabelsList)))
|
||||
|
||||
opts := []ExporterOpt{
|
||||
CollectorName("exporter"),
|
||||
DisableDefaultMetrics(*disableDefaultMetrics),
|
||||
DisableSettingsMetrics(*disableSettingsMetrics),
|
||||
AutoDiscoverDatabases(*autoDiscoverDatabases),
|
||||
WithConstantLabels(*constantLabelsList),
|
||||
WithServers(servers),
|
||||
ExcludeDatabases(excludedDatabases),
|
||||
IncludeDatabases(*includeDatabases),
|
||||
}
|
||||
@ -144,7 +139,7 @@ func main() {
|
||||
dsn = dsns[0]
|
||||
}
|
||||
|
||||
cleanup, hr, mr, lr := initializePerconaExporters(dsns, servers)
|
||||
cleanup, hr, mr, lr := initializePerconaExporters(dsns)
|
||||
defer cleanup()
|
||||
|
||||
pe, err := collector.NewPostgresCollector(
|
||||
@ -274,7 +269,7 @@ func (h *handler) innerHandler(filters ...string) (http.Handler, error) {
|
||||
handler := promhttp.HandlerFor(
|
||||
registry,
|
||||
promhttp.HandlerOpts{
|
||||
//ErrorLog: log.NewNopLogger() .NewErrorLogger(),
|
||||
// ErrorLog: log.NewNopLogger() .NewErrorLogger(),
|
||||
ErrorHandling: promhttp.ContinueOnError,
|
||||
},
|
||||
)
|
||||
|
@ -183,7 +183,7 @@ func queryNamespaceMapping(server *Server, namespace string, mapping MetricMapNa
|
||||
|
||||
// Iterate through all the namespace mappings in the exporter and run their
|
||||
// queries.
|
||||
func queryNamespaceMappings(ch chan<- prometheus.Metric, server *Server, res MetricResolution) map[string]error {
|
||||
func queryNamespaceMappings(ch chan<- prometheus.Metric, server *Server) map[string]error {
|
||||
// Return a map of namespace -> errors
|
||||
namespaceErrors := make(map[string]error)
|
||||
|
||||
|
@ -31,7 +31,7 @@ var (
|
||||
collectCustomQueryHrDirectory = kingpin.Flag("collect.custom_query.hr.directory", "Path to custom queries with high resolution directory.").Envar("PG_EXPORTER_EXTEND_QUERY_HR_PATH").String()
|
||||
)
|
||||
|
||||
func initializePerconaExporters(dsn []string, servers *Servers) (func(), *Exporter, *Exporter, *Exporter) {
|
||||
func initializePerconaExporters(dsn []string) (func(), *Exporter, *Exporter, *Exporter) {
|
||||
queriesPath := map[MetricResolution]string{
|
||||
HR: *collectCustomQueryHrDirectory,
|
||||
MR: *collectCustomQueryMrDirectory,
|
||||
@ -43,7 +43,6 @@ func initializePerconaExporters(dsn []string, servers *Servers) (func(), *Export
|
||||
DisableDefaultMetrics(true),
|
||||
DisableSettingsMetrics(true),
|
||||
AutoDiscoverDatabases(*autoDiscoverDatabases),
|
||||
WithServers(servers),
|
||||
WithUserQueriesPath(queriesPath),
|
||||
ExcludeDatabases(excludedDatabases),
|
||||
}
|
||||
|
@ -515,13 +515,6 @@ func WithConstantLabels(s string) ExporterOpt {
|
||||
}
|
||||
}
|
||||
|
||||
// WithServers configures constant labels.
|
||||
func WithServers(s *Servers) ExporterOpt {
|
||||
return func(e *Exporter) {
|
||||
e.servers = s
|
||||
}
|
||||
}
|
||||
|
||||
func parseConstLabels(s string) prometheus.Labels {
|
||||
labels := make(prometheus.Labels)
|
||||
|
||||
@ -561,6 +554,7 @@ func NewExporter(dsn []string, opts ...ExporterOpt) *Exporter {
|
||||
}
|
||||
|
||||
e.setupInternalMetrics()
|
||||
e.servers = NewServers(ServerWithLabels(e.constantLabels))
|
||||
|
||||
return e
|
||||
}
|
||||
@ -655,7 +649,7 @@ func (e *Exporter) checkMapVersions(ch chan<- prometheus.Metric, server *Server)
|
||||
}
|
||||
|
||||
// Check if semantic version changed and recalculate maps if needed.
|
||||
//if semanticVersion.NE(server.lastMapVersion[e.resolutionEnabled]) || server.metricMap == nil {
|
||||
// if semanticVersion.NE(server.lastMapVersion[e.resolutionEnabled]) || server.metricMap == nil {
|
||||
// level.Info(logger).Log("msg", "Semantic version changed", "server", server, "from", server.lastMapVersion[e.resolutionEnabled], "to", semanticVersion)
|
||||
server.mappingMtx.Lock()
|
||||
|
||||
@ -668,7 +662,7 @@ func (e *Exporter) checkMapVersions(ch chan<- prometheus.Metric, server *Server)
|
||||
server.queryOverrides = make(map[string]string)
|
||||
}
|
||||
|
||||
//server.lastMapVersion[e.resolutionEnabled] = semanticVersion
|
||||
// server.lastMapVersion[e.resolutionEnabled] = semanticVersion
|
||||
|
||||
if e.userQueriesPath[HR] != "" || e.userQueriesPath[MR] != "" || e.userQueriesPath[LR] != "" {
|
||||
// Clear the metric while reload
|
||||
@ -678,7 +672,7 @@ func (e *Exporter) checkMapVersions(ch chan<- prometheus.Metric, server *Server)
|
||||
e.loadCustomQueries(e.resolutionEnabled, semanticVersion, server)
|
||||
|
||||
server.mappingMtx.Unlock()
|
||||
//}
|
||||
// }
|
||||
|
||||
// Output the version as a special metric only for master database
|
||||
versionDesc := prometheus.NewDesc(fmt.Sprintf("%s_%s", namespace, staticLabelName),
|
||||
|
@ -28,7 +28,6 @@ import (
|
||||
// Also it contains metrics map and query overrides.
|
||||
type Server struct {
|
||||
db *sql.DB
|
||||
dbMtx sync.Mutex
|
||||
labels prometheus.Labels
|
||||
master bool
|
||||
runonserver string
|
||||
@ -113,7 +112,7 @@ func (s *Server) String() string {
|
||||
}
|
||||
|
||||
// Scrape loads metrics.
|
||||
func (s *Server) Scrape(ch chan<- prometheus.Metric, disableSettingsMetrics bool, res MetricResolution) error {
|
||||
func (s *Server) Scrape(ch chan<- prometheus.Metric, disableSettingsMetrics bool) error {
|
||||
s.mappingMtx.RLock()
|
||||
defer s.mappingMtx.RUnlock()
|
||||
|
||||
@ -125,7 +124,7 @@ func (s *Server) Scrape(ch chan<- prometheus.Metric, disableSettingsMetrics bool
|
||||
}
|
||||
}
|
||||
|
||||
errMap := queryNamespaceMappings(ch, s, res)
|
||||
errMap := queryNamespaceMappings(ch, s)
|
||||
if len(errMap) > 0 {
|
||||
err = fmt.Errorf("queryNamespaceMappings returned %d errors", len(errMap))
|
||||
level.Error(logger).Log("msg", "NAMESPACE ERRORS FOUND")
|
||||
|
Loading…
Reference in New Issue
Block a user