@@ -15,7 +15,6 @@ package collector
1515
1616import (
1717 "context"
18- "database/sql"
1918 "errors"
2019 "fmt"
2120 "sync"
5958)
6059
6160type Collector interface {
62- Update (ctx context.Context , db * sql. DB , ch chan <- prometheus.Metric ) error
61+ Update (ctx context.Context , instance * instance , ch chan <- prometheus.Metric ) error
6362}
6463
6564type collectorConfig struct {
@@ -92,7 +91,7 @@ type PostgresCollector struct {
9291 Collectors map [string ]Collector
9392 logger log.Logger
9493
95- db * sql. DB
94+ instance * instance
9695}
9796
9897type Option func (* PostgresCollector ) error
@@ -149,14 +148,11 @@ func NewPostgresCollector(logger log.Logger, excludeDatabases []string, dsn stri
149148 return nil , errors .New ("empty dsn" )
150149 }
151150
152- db , err := sql . Open ( "postgres" , dsn )
151+ instance , err := newInstance ( dsn )
153152 if err != nil {
154153 return nil , err
155154 }
156- db .SetMaxOpenConns (1 )
157- db .SetMaxIdleConns (1 )
158-
159- p .db = db
155+ p .instance = instance
160156
161157 return p , nil
162158}
@@ -174,16 +170,16 @@ func (p PostgresCollector) Collect(ch chan<- prometheus.Metric) {
174170 wg .Add (len (p .Collectors ))
175171 for name , c := range p .Collectors {
176172 go func (name string , c Collector ) {
177- execute (ctx , name , c , p .db , ch , p .logger )
173+ execute (ctx , name , c , p .instance , ch , p .logger )
178174 wg .Done ()
179175 }(name , c )
180176 }
181177 wg .Wait ()
182178}
183179
184- func execute (ctx context.Context , name string , c Collector , db * sql. DB , ch chan <- prometheus.Metric , logger log.Logger ) {
180+ func execute (ctx context.Context , name string , c Collector , instance * instance , ch chan <- prometheus.Metric , logger log.Logger ) {
185181 begin := time .Now ()
186- err := c .Update (ctx , db , ch )
182+ err := c .Update (ctx , instance , ch )
187183 duration := time .Since (begin )
188184 var success float64
189185
0 commit comments