You've already forked postgres_exporter
mirror of
https://github.com/prometheus-community/postgres_exporter.git
synced 2025-07-31 20:44:25 +03:00
Using a connection pool of size 1 instead
of closing/reopening connections
This commit is contained in:
@ -24,6 +24,8 @@ import (
|
|||||||
|
|
||||||
var Version string = "0.0.1"
|
var Version string = "0.0.1"
|
||||||
|
|
||||||
|
var db *sql.DB = nil
|
||||||
|
|
||||||
var (
|
var (
|
||||||
listenAddress = flag.String(
|
listenAddress = flag.String(
|
||||||
"web.listen-address", ":9187",
|
"web.listen-address", ":9187",
|
||||||
@ -966,6 +968,20 @@ func (e *Exporter) checkMapVersions(ch chan<- prometheus.Metric, db *sql.DB) err
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getDB(conn string) (*sql.DB, error) {
|
||||||
|
if db == nil {
|
||||||
|
d, err := sql.Open("postgres", conn)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
d.SetMaxOpenConns(1)
|
||||||
|
d.SetMaxIdleConns(1)
|
||||||
|
db = d
|
||||||
|
}
|
||||||
|
|
||||||
|
return db, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (e *Exporter) scrape(ch chan<- prometheus.Metric) {
|
func (e *Exporter) scrape(ch chan<- prometheus.Metric) {
|
||||||
defer func(begun time.Time) {
|
defer func(begun time.Time) {
|
||||||
e.duration.Set(time.Since(begun).Seconds())
|
e.duration.Set(time.Since(begun).Seconds())
|
||||||
@ -974,13 +990,12 @@ func (e *Exporter) scrape(ch chan<- prometheus.Metric) {
|
|||||||
e.error.Set(0)
|
e.error.Set(0)
|
||||||
e.totalScrapes.Inc()
|
e.totalScrapes.Inc()
|
||||||
|
|
||||||
db, err := sql.Open("postgres", e.dsn)
|
db, err := getDB(e.dsn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Infoln("Error opening connection to database:", err)
|
log.Infoln("Error opening connection to database:", err)
|
||||||
e.error.Set(1)
|
e.error.Set(1)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer db.Close()
|
|
||||||
|
|
||||||
// Check if map versions need to be updated
|
// Check if map versions need to be updated
|
||||||
if err := e.checkMapVersions(ch, db); err != nil {
|
if err := e.checkMapVersions(ch, db); err != nil {
|
||||||
@ -1026,4 +1041,7 @@ func main() {
|
|||||||
|
|
||||||
log.Infof("Starting Server: %s", *listenAddress)
|
log.Infof("Starting Server: %s", *listenAddress)
|
||||||
log.Fatal(http.ListenAndServe(*listenAddress, nil))
|
log.Fatal(http.ListenAndServe(*listenAddress, nil))
|
||||||
|
if db != nil {
|
||||||
|
defer db.Close()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user