@@ -15,7 +15,6 @@ package collector
15
15
16
16
import (
17
17
"context"
18
- "database/sql"
19
18
"errors"
20
19
"fmt"
21
20
"sync"
59
58
)
60
59
61
60
type 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
63
62
}
64
63
65
64
type collectorConfig struct {
@@ -92,7 +91,7 @@ type PostgresCollector struct {
92
91
Collectors map [string ]Collector
93
92
logger log.Logger
94
93
95
- db * sql. DB
94
+ instance * instance
96
95
}
97
96
98
97
type Option func (* PostgresCollector ) error
@@ -149,14 +148,11 @@ func NewPostgresCollector(logger log.Logger, excludeDatabases []string, dsn stri
149
148
return nil , errors .New ("empty dsn" )
150
149
}
151
150
152
- db , err := sql . Open ( "postgres" , dsn )
151
+ instance , err := newInstance ( dsn )
153
152
if err != nil {
154
153
return nil , err
155
154
}
156
- db .SetMaxOpenConns (1 )
157
- db .SetMaxIdleConns (1 )
158
-
159
- p .db = db
155
+ p .instance = instance
160
156
161
157
return p , nil
162
158
}
@@ -174,16 +170,16 @@ func (p PostgresCollector) Collect(ch chan<- prometheus.Metric) {
174
170
wg .Add (len (p .Collectors ))
175
171
for name , c := range p .Collectors {
176
172
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 )
178
174
wg .Done ()
179
175
}(name , c )
180
176
}
181
177
wg .Wait ()
182
178
}
183
179
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 ) {
185
181
begin := time .Now ()
186
- err := c .Update (ctx , db , ch )
182
+ err := c .Update (ctx , instance , ch )
187
183
duration := time .Since (begin )
188
184
var success float64
189
185
0 commit comments