Fix pgbouncer input when used with newer pgbouncer versions (#6820)

This commit is contained in:
Mark Fletcher 2020-02-12 20:53:11 -08:00 committed by GitHub
parent e3bc546a46
commit 6c839a33a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 1 deletions

View File

@ -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)

View File

@ -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
}, },