LINUX.ORG.RU
ФорумAdmin

IP реальных клиентов через PgBouncer в базе PostgreSQL

 ,


0

1

Можно ли как то увидеть IP адреса реальных клиентов?

С точки зрения Postтолько client_addr. А это адрес пуллера PgBouncer.

А увидеть тех кто действительно соединен можно только с соединении к приложению pg_bouncer.

Надеюсь как в случае с прокси серверами там должно быть что то вроде X_FORWARDED_FOR?

★★

Последнее исправление: qqqq (всего исправлений: 1)

Ответ на: комментарий от mky

это сработает только если application_name не задак тому же там есть ограничение на длину строки, об этом нужно помнить. и кажется оно равно 64 знака (надо уточнить)

qqqq ★★
() автор топика
Последнее исправление: qqqq (всего исправлений: 1)
Ответ на: комментарий от qqqq

Решил задачу так:

Для получения IP клиента используем расширение file_fdw.

CREATE EXTENSION file_fdw; CREATE SERVER pgbouncer_file_fdw FOREIGN DATA WRAPPER file_fdw;

Таблица для команды SHOW CLIENTS

CREATE FOREIGN TABLE pgbouncer_clients_fwd (type char(1), user_name char(20), database_name char(20), state char(6), addr char(15), port int, local_addr char(15), local_port int, connect_time char(40), request_time char(40), wait int, wait_us int, close_needed int, ptr char(15), link char(15), remote_pid int, tls int) SERVER pgbouncer_file_fdw OPTIONS ( program ‘psql -p 6432 -h localhost -U pgbouncer -qtAX -F «,» -c «SHOW CLIENTS»’, format ‘csv’, delimiter ‘,’);

Таблица для команды SHOW SERVERS

CREATE FOREIGN TABLE pgbouncer_servers_fwd (type char(1), user_name char(20), database_name char(20), state char(6), addr char(15), port int, local_addr char(15), local_port int, connect_time char(40), request_time char(40), wait int, wait_us int, close_needed int, ptr char(15), link char(15), remote_pid int, tls int) SERVER pgbouncer_file_fdw OPTIONS ( program ‘psql -p 6432 -h localhost pgbouncer -qtAX -F «,» -c «SHOW SERVERS»’ , format ‘csv’, delimiter ‘,’);

Проверяем, работают ли соединения:

SELECT * FROM pgbouncer_clients_fwd; SELECT * FROM pgbouncer_servers_fwd;

Ну и смотрим IP

SELECT pc.addr, ps.remote_pid FROM pgbouncer_servers_fwd ps, pgbouncer_clients_fwd pc WHERE ps.ptr = pc.link

qqqq ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.