pgbouncer_exporter icon indicating copy to clipboard operation
pgbouncer_exporter copied to clipboard

How to correctly specify the connection string

Open vetalfw opened this issue 2 years ago • 7 comments

Could you tell me how to correctly specify the connection string if there is a dash in the name of my database. Connection string example:

- --pgBouncer.connectionString=postgres://$(DB_USER):$(DB_PASSWORD)@127.0.0.1:5432/tmp-test-db?sslmode=disable&connect_timeout=10

The error I am getting:

{"caller":"collector.go:129","err":"error pinging pgbouncer: \"pq: unrecognized configuration parameter \\\"stats\\\"\"","level":"error","msg":"error setting up DB connection","ts":"2022-05-10T19:56:15.348Z"}

Or I can't use the current database and I need to create a new one? Could you please helm me? Thanks

vetalfw avatar May 10 '22 20:05 vetalfw

I got similar issue

anwareset avatar Sep 13 '22 13:09 anwareset

+1 same error, looks like code is outdated

vuducmanh11 avatar Oct 07 '22 08:10 vuducmanh11

your database name specified wrong! you must define a user for admin user and set admin_users = someuser in your pgbouncer.ini file its obvious this user must be defined in your auth_file! and this user can read metrics data on pgbonucer database so your connection string goes like this (with correct flag): --pgBouncer.connectionString="postgres://$YOUR_USERNAME:$YOUR_PASS@$HOST:$PORT/pgbouncer?sslmode=disable"

you must keep pgbouncer as database name

RezaImany avatar Jan 17 '23 11:01 RezaImany

Maybe the following will be helpful for other people stumbling over this:

  • Make sure that you url-encode ("Percent encoding") the username and the password in the connection string. (e.g. if your password would be "foo bar" it would become "foo%20bar")
  • In the issue description above the user is connecting to /tmp-test-db. This is not correct. You should be connecting to /pgbouncer. pgbouncer exposes a special database, called pgbouncer, which one has to connect to for pgbouncer statistics.
  • Make sure that a valid database user is specified in the pgbouncer.ini under stats_users. Otherwise you won't be able to connect as the specified user to the special pgbouncer database.

originell avatar Nov 09 '23 17:11 originell

Hello, everyone! Does anyone know how to

  • correctly describe a systemd unit (mine is failing with connection refused error, but the ExecStart works outside of the unit correctly)
  • change timezone

vvitad avatar Nov 30 '23 05:11 vvitad

@vvitad just guessing here, but did you…

  • check that you url encoded your password?

    e.g. let's say you have a connection string like this:
    postgres://coolusername:amazing special%password@localhost:6432/pgbouncer?sslmode=disable

    the pw would become amazing%20special%25password.

    The end result:
    postgres://coolusername:amazing%20special%25password@localhost:6432/pgbouncer?sslmode=disable.

    However, note the next step as well ->

  • when you are url encoding, you also need to make sure that you replace % with %%.

    systemd files support special syntax that uses %. If you want to actually use the percentage sign, then you have to write %%.

    Continuing the example above and replacing % with %%:
    postgres://coolusername:amazing%%20special%%25password@localhost:6432/pgbouncer?sslmode=disable

originell avatar Nov 30 '23 17:11 originell

hi, @originell! thanks for the reply password contains _, yesterday I've created environment variable for the whole connection string and it worked

Environment="DATA_SOURCE_NAME=pgBouncer.connectionString=postgresql://pgbouncer:pgbouncer_password@host:port/pgbouncer?sslmode=disable"
ExecStart=....--${DATA_SOURCE_NAME} 

still struggling with changing timezone though. ts (timestamp) in logs is incorrect

vvitad avatar Dec 01 '23 08:12 vvitad