Перейти к основному содержимому

Функции сквозной аутентификации

Функции, представленные в данном разделе, реализованы в рамках функциональности сквозной аутентификации.

Сведения

КомандыSHOW доступны в «виртуальной» административной базе данных pgbouncer. Подробнее об этом в разделе «Администрирование Pangolin Pooler» документа «Руководство администратора».

auth_reset_context()

Функция сбрасывает/очищает контекст аутентификаций.

Синтаксис:

auth_reset_context() 
RETURNS VOID

Входные параметры:

Отсутствуют.

Возвращаемые значения:

Отсутствуют. В случае успешного выполнения функции значение вернется пустым.

Пример использования:

SELECT auth_reset_context();

SHOW AUTHSERVERS

Функция показывает информацию о соединениях с сервером аутентификации в виде таблицы.

Синтаксис:

SHOW AUTHSERVERS;

Входные параметры:

Отсутствуют.

Возвращаемые значения:

Информация о соединениях с сервером аутентификации возвращается в виде таблицы со следующими полями:

Название поляОписание
typeТип соединения, «A» для серверов аутентификации
databaseИмя базы данных
stateСостояние подключения к серверу Pangolin Pooler. Значения: active, used или idle
addrIP-адрес сервера СУБД
portПорт сервера СУБД
local_addrИсходный адрес подключения на локальной машине
local_portИсходный порт подключения на локальной машине
connect_timeВремя установления подключения
loged_in_timeВремя подключения (время когда получен ответ на handshake запрос)
request_timeВремя выдачи последнего запроса
ptrАдрес внутреннего объекта для данного подключения. Используется как уникальный идентификатор
tlsИнформация о TLS-подключении. Пустая строка, если TLS не используется

Пример использования:

SHOW AUTHSERVERS;

Пример вывода:

 type | database | state |     addr     | port   |  local_addr  | local_port |      connect_time       |      loged_in_time      |      request_time       |    ptr    |                      tls                       
------+----------+-------+--------------+--------+--------------+------------+-------------------------+-------------------------+-------------------------+-----------+------------------------------------------------
A | postgres | idle | <IP-Address> | <port> | <IP-Address> | <port> | 2025-10-16 08:22:26 MSK | 2025-10-16 08:22:27 MSK | 2025-10-16 08:22:27 MSK | 0x15bc350 | TLSv1.3/TLS_AES_256_GCM_SHA384/ECDH=prime256v1
(1 row)

SHOW AUTHPOOLS

Функция показывает информацию по пулам аутентификации в виде таблицы.

Синтаксис:

SHOW AUTHPOOLS;

Входные параметры:

Отсутствуют.

Возвращаемые значения:

Информация по пулам аутентификации возвращается в виде таблицы со следующими полями:

Название поляОписание
databaseИмя базы данных
cl_authЧисло клиентских подключений, которые выполняют запрос аутентификации к серверу аутентификации
sv_activeПодключения к серверу, которые используется в данный момент
sv_idleПодключения к серверу, которые не используется в данный момент
sv_usedПодключения к серверу, которые простаивали более server_check_delay секунд, поэтому перед повторным использованием им требуется server_check_query секунд
sv_testedПодключения к серверу, которые в данный момент выполняются либо server_reset_query, либо server_check_query
sv_loginПодключения к серверу, находящиеся в процессе входа в систему
maxwaitПоказывает, как долго ожидает в очереди самый первый клиент (в секундах). Если это число начинает увеличиваться, значит текущий пул серверов не справляется с запросами достаточно быстро
maxwait_usМикросекундная часть максимального времени ожидания

Пример использования:

SHOW AUTHPOOLS;

Пример вывода:

 database | cl_auth | cl_active_auth | sv_active | sv_idle | sv_used | sv_tested | sv_login | maxwait | maxwait_us 
----------+---------+----------------+-----------+---------+---------+-----------+----------+---------+------------
postgres | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0
(1 row)

SHOW AUTHUSERS

Функция показывает информацию о пользователях в виде таблицы.

Синтаксис:

SHOW AUTHUSERS;

Входные параметры:

Отсутствуют.

Возвращаемые значения:

Информация о пользователях возвращается в виде таблицы со следующими полями:

Название поляОписание
nameИмя пользователя
addrIP-адрес клиента
portПорт клиента
databaseИмя базы данных
pool_modeПереопределить режим пула базы данных или оставить значение NULL, если будет использоваться значение по умолчанию

Пример использования:

SHOW AUTHUSERS;

Пример вывода:

   name   |     addr     | port   | database | pool_mode | tls | auth_state 
----------+--------------+--------+----------+-----------+-----+------------
postgres | <IP-Address> | <port> | postgres | | yes | done
(q rows)

SHOW LAST

Функция показывает информацию об аутентификации последних N пользователей в виде таблицы.

Синтаксис:

SHOW LAST;

Входные параметры:

Отсутствуют.

Возвращаемые значения:

Информация об аутентификации последних N пользователей возвращается в виде таблицы со следующими полями:

Название поляОписание
userИмя пользователя
addrIP-адрес клиента
portПорт клиента
tlsИнформация о TLS-подключении. Пустая строка, если TLS не используется
methodМетод аутентификации (например, md5, scram-sha-256, ldap, cert). Отображается только для аутентифицированных пользователей
placeМесто выполнения аутентификации (Pangolin Pooler, Pangolin DBMS)
statusСтатус аутентификации (ok, failed, expired)
connect_timeВремя установления подключения
waitПоказывает, как долго ожидает в очереди клиент перед тем как начал выполнять аутентификацию (в секундах)
wait_usМикросекундная часть времени ожидания
auth_timeВремя выполнения аутентификации (получения статуса аутентификации)
authПоказывает, как долго выполняется аутентификация (в секундах). Если это число начинает увеличиваться, значит текущий сервер аутентификации не справляется с запросами достаточно быстро. Причиной тому может быть перегруженный сервер, а в случае внешних аутентификаций (GSS, LDAP, RADIUS) перегруженный сервер аутентификации
auth_usМикросекундная часть времени выполнения аутентификации
примечание

N пользователей задается параметром auth_last_size в конфигурационном файле Pangolin Pooler. По умолчанию имеет значение 10.

При превышении этого значения первые записи удаляются, а новые добавляются в конец. Ошибка аутентификации указана в логах Pangolin или Pangolin Pooler. В каком логе и в какое время — зависит от значений параметров place и connect_time/auth_time.

Пример использования:

SHOW LAST;

Пример вывода:

   user    |     addr     | port  | tls |    method     |   place   | status |      connect_time       | wait | wait_us |        auth_time        | auth | auth_us 
-----------+--------------+-------+-----+---------------+-----------+--------+-------------------------+------+---------+-------------------------+------+---------
pgbouncer | <IP-Address> | 53440 | yes | scram-sha-256 | pgbouncer | failed | 2025-10-15 15:38:47 MSK | 0 | 3594 | 2025-10-15 15:38:47 MSK | 0 | 4462
pgbouncer | <IP-Address> | 53444 | no | scram-sha-256 | pgbouncer | failed | 2025-10-15 15:38:47 MSK | 0 | 0 | 2025-10-15 15:38:47 MSK | 0 | 4503
pgbouncer | <IP-Address> | 52030 | yes | scram-sha-256 | pgbouncer | failed | 2025-10-15 15:39:46 MSK | 0 | 3279 | 2025-10-15 15:39:46 MSK | 0 | 4727
pgbouncer | <IP-Address> | 52034 | no | scram-sha-256 | pgbouncer | failed | 2025-10-15 15:39:46 MSK | 0 | 0 | 2025-10-15 15:39:46 MSK | 0 | 4436
pgbouncer | <IP-Address> | 46778 | yes | scram-sha-256 | pgbouncer | ok | 2025-10-15 15:42:46 MSK | 0 | 3566 | 2025-10-15 15:42:46 MSK | 0 | 4722
pgbouncer | <IP-Address> | 41736 | yes | scram-sha-256 | pgbouncer | ok | 2025-10-15 15:45:42 MSK | 0 | 2805 | 2025-10-15 15:45:42 MSK | 0 | 4533
pgbouncer | <IP-Address> | 47472 | yes | scram-sha-256 | pgbouncer | ok | 2025-10-16 08:21:44 MSK | 0 | 4191 | 2025-10-16 08:21:44 MSK | 0 | 5411
postgres | <IP-Address> | 49692 | yes | | postgres | ok | 2025-10-16 08:22:26 MSK | 0 | 4752 | 2025-10-16 08:22:26 MSK | 0 | 160765

SHOW LOCKED_USERS

Функция показывает информацию о заблокированных пользователях. К ним относятся пользователи с идентичными типом соединения, адресом клиента, базой данных и именем. Блокировка происходит после N раз неудачно осуществленной подряд аутентификации (значение N определяется конфигурационным параметром auth_failure_threshold). Длительность блокировки пользователя соответствует значению параметра auth_inactivity_period.

Синтаксис:

SHOW LOCKED_USERS;

Входные параметры:

Отсутствуют.

Возвращаемые значения:

Информация о заблокированных пользователях возвращается в виде таблицы со следующими полями:

Название поляОписание
userИмя пользователя
addrIP-адрес клиента
portПорт клиента
databaseИмя базы данных
beginВремя начала блокировки
endВремя окончания блокировки

Пример использования:

SHOW LOCKED_USERS;

Пример вывода:

 user  |     addr     | port  | tls | database  |          begin          |           end           
-------+--------------+-------+-----+-----------+-------------------------+-------------------------
admin | <IP-Address> | 33496 | no | globalind | 2025-10-23 11:39:02 MSK | 2025-10-23 11:40:02 MSK
admin | <IP-Address> | 33494 | yes | globalind | 2025-10-23 11:39:03 MSK | 2025-10-23 11:40:03 MSK
(2 rows)

SHOW SERVERS

Функция показывает информацию о соединениях с сервером Pangolin.

Синтаксис:

SHOW SERVERS;

Входные параметры:

Отсутствуют.

Возвращаемые значения:

Информация о соединениях с сервером возвращается в виде таблицы со следующими полями:

Название поляОписание
typeТип соединения, «S» для сервера
userИмя пользователя, используемое Pangolin Pooler для подключения к серверу
databaseИмя базы данных
replicationЕсли для подключения к серверу используется репликация. Значение none, logical или physical
stateСостояние подключения к серверу Pangolin Pooler. Значения: active, idle, used, tested, new, active_cancel, being_canceled
addrIP-адрес сервера СУБД
portПорт сервера СУБД
local_addrЛокальный адрес начала подключения
local_portЛокальный порт начала подключения
connect_timeКогда было установлено соединение
loged_in_timeВремя подключения
loged_inДлительность поднятия соединения (в секундах)
loged_in_usМикросекундная часть длительности поднятия соединения
request_timeКогда был отправлен последний запрос
waitНе используется для подключений к серверу
wait_usНе используется для подключений к серверу
close_neededФлаг закрытия: 1 если соединение будет закрыто как можно скорее, потому что идет перезагрузка файла конфигурации или обновление DNS изменило информацию о соединении, или было выдано RECONNECT
ptrАдрес внутреннего объекта подключения
linkАдрес клиентского соединения, с которым сопряжен сервер
remote_pidPID процесса серверной стороны
tlsИнформация о TLS-соединении или пустая строка, если TLS не используется
application_nameИмя приложения, ассоциированное со связанным клиентским соединением, или пустая строка, если приложение не установлено или нет соединения
prepared_statementsКоличество подготовленных запросов на сервере, ограниченное значением max_prepared_statements
idУникальный идентификатор для сервера

Пример использования:

SHOW SERVERS \gx

Пример вывода:

-[ RECORD 1 ]-------+-----------------------------------------------
type | A
user | (nouser)
database | postgres
replication | none
state | idle
addr | <IP-Address>
port | 5544
local_addr | <IP-Address>
local_port | <port>
connect_time | 2025-10-16 08:22:26 MSK
loged_in_time | 2025-10-16 08:22:27 MSK
request_time | 2025-10-16 08:22:27 MSK
wait | 0
wait_us | 0
logged_in | 0
logged_in_us | 104997
close_needed | 0
ptr | 0x15bc350
link |
remote_pid | 0
tls | TLSv1.3/TLS_AES_256_GCM_SHA384/ECDH=prime256v1
application_name |
prepared_statements | 0
id | 9
-[ RECORD 2 ]-------+-----------------------------------------------
type | S
user | postgres
database | postgres
replication | none
state | idle
addr | <IP-Address>
port | 5433
local_addr | <IP-Address>
local_port | 37368
connect_time | 2025-10-16 08:22:27 MSK
loged_in_time | 2025-10-16 08:22:27 MSK
request_time | 2025-10-16 08:26:39 MSK
wait | 0
wait_us | 0
logged_in | 0
logged_in_us | 53986
close_needed | 0
ptr | 0x15e0940
link |
remote_pid | 2754164
tls | TLSv1.3/TLS_AES_256_GCM_SHA384/ECDH=prime256v1
application_name | psql
prepared_statements | 0
id | 10

SHOW POOLS

Функция показывает информацию по пулам. Новый пул создается для каждой пары сущностей (база данных, пользователь).

Синтаксис:

SHOW POOLS;

Входные параметры:

Отсутствуют.

Возвращаемые значения:

Информация по пулам возвращается в виде таблицы со следующими полями:

Название поляОписание
databaseИмя базы данных
userИмя пользователя
cl_activeКлиентские подключения, которые либо связаны с серверными подключениями, либо находятся в режиме ожидания без запросов на обработку
cl_waitingКлиентские соединения, которые отправили запросы, но еще не получили подключения к серверу
cl_active_cancel_reqКлиентские подключения, которые передали запросы на отмену на сервер и ожидают ответа сервера
cl_waiting_cancel_reqКлиентские соединения, которые еще не отправили на сервер отмены запроса
sv_activeСоединения с сервером, которые связаны с клиентом
sv_active_cancelПодключения к серверу, которые в данный момент пересылают запрос на отмену
sv_being_canceledСерверы, которые обычно могут простаивать, но не делают этого до тех пор, пока не будут выполнены все запросы на отмену в процессе выполнения, отправленные для отмены запроса на этом сервере
sv_idleСоединения с сервером, которые не используются и могут быть немедленно использованы для клиентских запросов
sv_usedПодключения к серверу, которые простаивали более server_check_delay секунд, поэтому перед повторным использованием им требуется server_check_query секунд
sv_testedПодключения к серверу, которые в данный момент выполняются либо server_reset_query, либо server_check_query
sv_loginПодключения к серверу в данный момент находятся в процессе входа в систему
maxwaitСколько секунд ждал первый клиент в очереди. Если это значение начинает расти, значит, текущий пул серверов не обрабатывает запросы достаточно быстро. Причиной может быть либо перегрузка сервера, либо слишком маленький размер пула
maxwait_usМикросекундная часть максимального времени ожидания
avg_timeСреднее время поднятия пула с учетом аутентификации (в секундах)
avg_time_usДробная часть среднего времени поднятия пула (в микросекундах)
max_timeМаксимальное время поднятия пула с учетом аутентификации (в секундах)
max_time_usМаксимальное время поднятия пула (в микросекундах)
pool_modeИспользуемый режим пула
load_balance_hostsЕсли хост пула содержит список, разделенный запятыми, используется load_balance_hosts

Пример использования:

SHOW POOLS \gx

Пример вывода:

-[ RECORD 1 ]---------+------------
database | pgbouncer
user | pgbouncer
cl_active | 1
cl_waiting | 0
cl_active_cancel_req | 0
cl_waiting_cancel_req | 0
sv_active | 0
sv_active_cancel | 0
sv_being_canceled | 0
sv_idle | 0
sv_used | 0
sv_tested | 0
sv_login | 0
maxwait | 0
maxwait_us | 0
avg_time | 0
avg_time_us | 0
max_time | 0
max_time_us | 0
pool_mode | statement
load_balance_hosts |
-[ RECORD 2 ]---------+------------
database | postgres
user | postgres
cl_active | 1
cl_waiting | 0
cl_active_cancel_req | 0
cl_waiting_cancel_req | 0
sv_active | 0
sv_active_cancel | 0
sv_being_canceled | 0
sv_idle | 0
sv_used | 1
sv_tested | 0
sv_login | 0
maxwait | 0
maxwait_us | 0
avg_time | 0
avg_time_us | 53986
max_time | 0
max_time_us | 53986
pool_mode | transaction
load_balance_hosts |

SHOW LISTS

Функция показывает различные внутренние сведения, в столбцах (не строках).

Синтаксис:

SHOW LISTS;

Входные параметры:

Отсутствуют.

Возвращаемые значения:

Информация о различных внутренних сведениях возвращается в виде таблицы со следующими полями:

Название поляОписание
databasesКоличество баз данных
usersКоличество пользователей
poolsКоличество пулов
free_clientsКоличество свободных клиентов. Клиенты, которые отключились, но Pangolin Pooler сохраняет выделенную для них память
used_clientsКоличество использованных клиентов
login_clientsКоличество клиентов в состоянии входа в систему
free_serversКоличество свободных серверов. Отключенные серверы, но Pangolin Pooler сохраняет выделенную для них память
used_serversКоличество использованных серверов
auth_poolsЧисло пулов аутентификации
free_auth_serversЧисло свободных серверов аутентификации
used_auth_serversЧисло задействованных серверов аутентификации
dns_namesКоличество DNS-имен в кеше
dns_zonesКоличество DNS-зон в кеше
dns_queriesКоличество DNS-запросов в полете
dns_pendingНе используется

Пример использования:

SHOW LISTS;

Пример вывода:

       list        | items 
-------------------+-------
databases | 2
users | 2
peers | 0
pools | 2
peer_pools | 0
free_clients | 48
used_clients | 2
login_clients | 0
free_servers | 49
used_servers | 1
auth_pools | 1
free_auth_servers | 50
used_auth_servers | 0
dns_names | 1
dns_zones | 1
dns_queries | -1
dns_pending | 0
(17 rows)