func()

in plugins/inputs/postgresql/postgresql.go [64:138]


func (p *Postgresql) Gather(acc telegraf.Accumulator) error {
	var query string

	if p.Address == "" || p.Address == "localhost" {
		p.Address = localhost
	}

	db, err := Connect(p.Address)
	if err != nil {
		return err
	}

	defer db.Close()

	if len(p.Databases) == 0 && len(p.IgnoredDatabases) == 0 {
		query = `SELECT * FROM pg_stat_database`
	} else if len(p.IgnoredDatabases) != 0 {
		query = fmt.Sprintf(`SELECT * FROM pg_stat_database WHERE datname NOT IN ('%s')`,
			strings.Join(p.IgnoredDatabases, "','"))
	} else {
		query = fmt.Sprintf(`SELECT * FROM pg_stat_database WHERE datname IN ('%s')`,
			strings.Join(p.Databases, "','"))
	}

	rows, err := db.Query(query)
	if err != nil {
		return err
	}

	defer rows.Close()

	// grab the column information from the result
	p.OrderedColumns, err = rows.Columns()
	if err != nil {
		return err
	} else {
		p.AllColumns = make([]string, len(p.OrderedColumns))
		copy(p.AllColumns, p.OrderedColumns)
	}

	for rows.Next() {
		err = p.accRow(rows, acc)
		if err != nil {
			return err
		}
	}
	//return rows.Err()
	query = `SELECT * FROM pg_stat_bgwriter`

	bg_writer_row, err := db.Query(query)
	if err != nil {
		return err
	}

	defer bg_writer_row.Close()

	// grab the column information from the result
	p.OrderedColumns, err = bg_writer_row.Columns()
	if err != nil {
		return err
	} else {
		for _, v := range p.OrderedColumns {
			p.AllColumns = append(p.AllColumns, v)
		}
	}

	for bg_writer_row.Next() {
		err = p.accRow(bg_writer_row, acc)
		if err != nil {
			return err
		}
	}
	sort.Strings(p.AllColumns)
	return bg_writer_row.Err()
}