Fix pgbouncer input when used with newer pgbouncer versions (#6820)
This commit is contained in:
parent
e3bc546a46
commit
6c839a33a4
|
@ -2,6 +2,7 @@ package pgbouncer
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/internal"
|
"github.com/influxdata/telegraf/internal"
|
||||||
|
@ -70,12 +71,18 @@ func (p *PgBouncer) Gather(acc telegraf.Accumulator) error {
|
||||||
for col, val := range columnMap {
|
for col, val := range columnMap {
|
||||||
_, ignore := ignoredColumns[col]
|
_, ignore := ignoredColumns[col]
|
||||||
if !ignore {
|
if !ignore {
|
||||||
fields[col] = *val
|
// these values are returned by pgbouncer as strings, which we need to convert.
|
||||||
|
fields[col], _ = strconv.ParseUint((*val).(string), 10, 64)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
acc.AddFields("pgbouncer", fields, tags)
|
acc.AddFields("pgbouncer", fields, tags)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = rows.Err()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
query = `SHOW POOLS`
|
query = `SHOW POOLS`
|
||||||
|
|
||||||
poolRows, err := p.DB.Query(query)
|
poolRows, err := p.DB.Query(query)
|
||||||
|
|
|
@ -122,6 +122,13 @@ func (p *Service) Start(telegraf.Accumulator) (err error) {
|
||||||
Name: "int8OID",
|
Name: "int8OID",
|
||||||
OID: pgtype.Int8OID,
|
OID: pgtype.Int8OID,
|
||||||
})
|
})
|
||||||
|
// Newer versions of pgbouncer need this defined. See the discussion here:
|
||||||
|
// https://github.com/jackc/pgx/issues/649
|
||||||
|
info.RegisterDataType(pgtype.DataType{
|
||||||
|
Value: &pgtype.OIDValue{},
|
||||||
|
Name: "numericOID",
|
||||||
|
OID: pgtype.NumericOID,
|
||||||
|
})
|
||||||
|
|
||||||
return info, nil
|
return info, nil
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue