|
55 | 55 | onlyDumpMaps = kingpin.Flag("dumpmaps", "Do not run, simply dump the maps.").Bool()
|
56 | 56 | constantLabelsList = kingpin.Flag("constantLabels", "A list of label=value separated by comma(,).").Default("").Envar("PG_EXPORTER_CONSTANT_LABELS").String()
|
57 | 57 | excludeDatabases = kingpin.Flag("exclude-databases", "A list of databases to remove when autoDiscoverDatabases is enabled").Default("").Envar("PG_EXPORTER_EXCLUDE_DATABASES").String()
|
| 58 | + includeDatabases = kingpin.Flag("include-databases", "A list of databases to include when autoDiscoverDatabases is enabled").Default("").Envar("PG_EXPORTER_INCLUDE_DATABASES").String() |
58 | 59 | metricPrefix = kingpin.Flag("metric-prefix", "A metric prefix can be used to have non-default (not \"pg\") prefixes for each of the metrics").Default("pg").Envar("PG_EXPORTER_METRIC_PREFIX").String()
|
59 | 60 | logger = log.NewNopLogger()
|
60 | 61 | )
|
@@ -1099,6 +1100,7 @@ type Exporter struct {
|
1099 | 1100 | disableDefaultMetrics, disableSettingsMetrics, autoDiscoverDatabases bool
|
1100 | 1101 |
|
1101 | 1102 | excludeDatabases []string
|
| 1103 | + includeDatabases []string |
1102 | 1104 | dsn []string
|
1103 | 1105 | userQueriesPath string
|
1104 | 1106 | constantLabels prometheus.Labels
|
@@ -1144,6 +1146,13 @@ func ExcludeDatabases(s string) ExporterOpt {
|
1144 | 1146 | }
|
1145 | 1147 | }
|
1146 | 1148 |
|
| 1149 | +// IncludeDatabases allows to filter result from AutoDiscoverDatabases |
| 1150 | +func IncludeDatabases(s string) ExporterOpt { |
| 1151 | + return func(e *Exporter) { |
| 1152 | + e.includeDatabases = strings.Split(s, ",") |
| 1153 | + } |
| 1154 | +} |
| 1155 | + |
1147 | 1156 | // WithUserQueriesPath configures user's queries path.
|
1148 | 1157 | func WithUserQueriesPath(p string) ExporterOpt {
|
1149 | 1158 | return func(e *Exporter) {
|
@@ -1678,6 +1687,10 @@ func (e *Exporter) discoverDatabaseDSNs() []string {
|
1678 | 1687 | continue
|
1679 | 1688 | }
|
1680 | 1689 |
|
| 1690 | + if len(e.includeDatabases) != 0 && !contains(e.includeDatabases, databaseName) { |
| 1691 | + continue |
| 1692 | + } |
| 1693 | + |
1681 | 1694 | if dsnURI != nil {
|
1682 | 1695 | dsnURI.Path = databaseName
|
1683 | 1696 | dsn = dsnURI.String()
|
@@ -1822,6 +1835,7 @@ func main() {
|
1822 | 1835 | WithUserQueriesPath(*queriesPath),
|
1823 | 1836 | WithConstantLabels(*constantLabelsList),
|
1824 | 1837 | ExcludeDatabases(*excludeDatabases),
|
| 1838 | + IncludeDatabases(*includeDatabases), |
1825 | 1839 | }
|
1826 | 1840 |
|
1827 | 1841 | exporter := NewExporter(dsn, opts...)
|
|
0 commit comments