diff --git a/plugins/inputs/pgbouncer/pgbouncer.go b/plugins/inputs/pgbouncer/pgbouncer.go index edff10509..db010e5c1 100644 --- a/plugins/inputs/pgbouncer/pgbouncer.go +++ b/plugins/inputs/pgbouncer/pgbouncer.go @@ -2,6 +2,7 @@ package pgbouncer import ( "bytes" + "strconv" "github.com/influxdata/telegraf" "github.com/influxdata/telegraf/internal" @@ -70,12 +71,18 @@ func (p *PgBouncer) Gather(acc telegraf.Accumulator) error { for col, val := range columnMap { _, ignore := ignoredColumns[col] 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) } + err = rows.Err() + if err != nil { + return err + } + query = `SHOW POOLS` poolRows, err := p.DB.Query(query) diff --git a/plugins/inputs/postgresql/service.go b/plugins/inputs/postgresql/service.go index 9d3ab3963..96a9a6317 100644 --- a/plugins/inputs/postgresql/service.go +++ b/plugins/inputs/postgresql/service.go @@ -122,6 +122,13 @@ func (p *Service) Start(telegraf.Accumulator) (err error) { Name: "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 },