Логирование#
Логирование компонента Pangolin Pooler происходит в отдельном лог-файле по пути:
/pangolinlogs/pangolin-pooler/pangolin-pooler.log
Пример команды для просмотра лога компонента:
timeout 60s tail -f /pangolinlogs/pangolin-pooler/pangolin-pooler.log
Ротация файлов логирования#
Файл для ротации файлов логирования компонента:
расположение при установке rpm/deb-пакета компонента:
/opt/pangolin-pooler/share/doc/logrotate/pangolin-pooler/конечное целевое расположение файла:
/etc/logrotate.d/pangolin-pooler
Пример настроенного файла /etc/logrotate.d/pangolin-pooler для ротации:
/pangolinlogs/pangolin-pooler/pangolin-pooler.log {
rotate 10
su postgres postgres
missingok
sharedscripts
notifempty
compress
daily
create 0600 postgres postgres
postrotate
/bin/kill -HUP `cat /var/run/user/984/pangolin-pooler/pangolin-pooler.pid 2> /dev/null` 2>/dev/null ||true
endscript
}
Настройка вывода команды SHOW POOLS в лог Pangolin Pooler#
Для анализа ошибок сессий при работе Pangolin Pooler в СУБД Pangolin реализована возможность вывода результата команды SHOW POOLS в лог Pangolin Pooler.
Включение/отключение вывода информации осуществляется через настройку параметра show_period конфигурационного файла pangolin-pooler.ini. Значение по умолчанию - 0 (запись в лог Pangolin Pooler отключена). В данном параметре устанавливается период (в секундах), с которым происходит запись в лог. Параметр рекомендуется настраивать на подготовительном этапе, чтобы в процессе исследования инцидента не получить отказ запуска сервиса при некорректных названиях/значениях параметра. В случае, если значение параметра show_period не задано, будет использоваться значение по умолчанию, что соответствует отключенному состоянию функциональности.
Также параметр может быть установлен командой: SET show_period = value администратором в консоли.
После изменения значения параметра перечитайте конфигурационный файл Pangolin Pooler для применения нового значения.
Внимание
Установка некорректных (нечисловых) значений параметра show_period приводит к невозможности запуска сервиса pangolin-pooler.
Вывод производится в лог-файл, который указывается в файле конфигурации Pangolin Pooler, по умолчанию - pangolin-pooler.log, при этом вывод не может быть перенаправлен.
Пример формата вывода данных в лог-файл pangolin-pooler.log (маркер LOG POOLS):
2024-02-20 13:23:18.859 MSK [21524] LOG POOLS +-----------+-----------+-----------+------------+----------------------+-----------------------+-----------+------------------+-------------------+---------+---------+-----------+----------+---------+------------+----------+-------------+----------+-------------+-------------+
2024-02-20 13:23:18.859 MSK [21524] LOG 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 | sv_tested | sv_login | maxwait | maxwait_us | avg_time | avg_time_us | max_time | max_time_us | pool_mode |
2024-02-20 13:23:18.859 MSK [21524] LOG POOLS +-----------+-----------+-----------+------------+----------------------+-----------------------+-----------+------------------+-------------------+---------+---------+-----------+----------+---------+------------+----------+-------------+----------+-------------+-------------+
2024-02-20 13:23:18.859 MSK [21524] LOG POOLS | pgbouncer | pgbouncer | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | statement |
2024-02-20 13:23:18.859 MSK [21524] LOG POOLS | postgres | postgres | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 46541 | 0 | 46541 | transaction |
2024-02-20 13:23:18.859 MSK [21524] LOG POOLS +-----------+-----------+-----------+------------+----------------------+-----------------------+-----------+------------------+-------------------+---------+---------+-----------+----------+---------+------------+----------+-------------+----------+-------------+-------------+
Диагностика ошибок#
Сообщения системного журнала#
Примеры и типы сообщений из лог-файла представлены в данном разделе.
Информационные сообщения:
Тип сообщения |
Сообщение |
Диагностика |
|---|---|---|
|
||
|
Доступ в БД через Pooler с использованием сквозной аутентификации с использованием запрещенных слабых методов аутентификации (например, |
|
|
Выполнение команды из административной консоли Pangolin Pooler. Список команд доступен в разделе «Управление и использование» |
|
|
Администратор отключился во время приостановки — выполняется команда |
|
|
Обновлена DNS-зона |
|
|
Пользователь разблокирован |
|
|
Все серверные соединения завершены |
|
|
Переключен режим NDC |
|
|
Получен системный сигнал — выполнение остановки или паузы |
|
|
Управление активностью через сигналы — пауза или возобновление |
|
|
Диагностика лимитов ОС — дескрипторы и ожидаемое использование |
|
|
Найден устаревший PID-файл, который будет удален |
|
|
Получен сигнал перечитать конфигурацию |
|
|
Старый процесс не найден |
|
|
Pooler слушает на указанном адресе |
|
|
Получен сокет от управляющего процесса |
|
|
Получено сокет соединение |
|
|
Загружен плагин расшифровки PKCS#12 |
|
|
Загружен плагин извлечения TLS-сертификата |
|
|
Состояние кеширования клиентских TLS-сертификатов |
|
|
Инициировано завершение работы |
|
|
Ожидание завершения предыдущего процесса |
|
|
Предыдущий процесс завершен |
|
|
Завершение и переход в фоновый режим |
|
|
После завершения |
|
|
Команда |
|
|
Инициализация takeover-соединения |
|
|
||
|
Использование TLS при подключении пользователя |
|
|
Зафиксировано входящее подключение |
|
|
Неуспешная попытка подключения |
|
|
Клиент самостоятельно завершил соединение. |
|
|
Отправка стартового пакета аутентификации клиентом. Обычно предшествует проверке пользователя |
|
|
Успешная аутентификация пользователя сервером базы данных |
|
|
||
|
Контекст аутентификации сброшен с помощью команды |
|
|
Получен административный запрос |
|
|
Подключение с TLS-сертификатом |
|
|
Установлено соединение с административной консолью |
|
|
Ошибка DNS-запроса |
|
|
Зарегистрирована DNS-зона |
|
|
Отправлено уведомление в режиме |
|
|
Таймер приостановки NDC завершен |
|
|
Установлено новое соединение для |
|
|
Пользователь удален из списка заблокированных |
|
|
Загрузка конфигурационного файла аутентификации |
|
|
Режим NDC остался прежним |
Предупреждающие сообщения (тип WARNING):
Тип сообщения |
Сообщение |
Диагностика |
|---|---|---|
|
||
|
Сертификат TLS не содержит IP или DNS. Возможны ошибки проверки подлинности |
|
|
Использован неподдерживаемый параметр запуска |
|
|
Истек срок действия контекста аутентификации. Пользователю потребуется повторная аутентификация |
|
|
Ошибка DNS-запроса из-за нехватки памяти |
|
|
Ошибка разрешения DNS-имени. Проверьте сетевые настройки |
|
|
Условие доступа |
|
|
Условие доступа |
|
|
Ошибка формата карты |
|
|
Указанная карта |
|
|
Указан неизвестный тип подключения в |
|
|
Пропущен IP-адрес или CIDR-маска в |
|
|
Некорректная маска подсети в |
|
|
Параметр |
|
|
Параметр |
|
|
Параметр |
|
|
Задан некорректный SCRAM-секрет |
|
|
Неверный SCRAM grace-пароля верификации |
|
|
Некорректная длина |
|
|
Неправильное значение |
|
|
Некорректное количество итераций SCRAM верификаций |
|
|
Неудачный вход на сервер |
|
|
Не удалось инициализировать показ статистики |
|
|
Ошибка добавления события в цикл обработки. Возможная причина — ошибка ОС |
|
|
Ошибка получения имени хоста. Возможна сетевая или системная ошибка |
|
|
Ошибка получения UID клиента при соединении по Unix-сокету |
Сообщения об ошибке:
Тип сообщения |
Сообщение |
Диагностика |
|---|---|---|
|
||
|
Убедитесь, что в |
|
|
У пользователя отсутствует пароль, либо он не задан в системе или в файле аутентификации |
|
|
Учетная запись заблокирована из-за превышения количества неуспешных попыток входа |
|
|
Аутентификация не удалась из-за изменения пароля пользователя в СУБД. Требуется выполнить переподключение |
|
|
Использование слабых типов аутентификации (таких как, например, |
|
|
Pangolin Pooler, с активным механизмом сквозной аутентификации, не работает с файлом |
|
|
Ошибка после добавления пользователя в |
|
|
Ошибка компиляции регулярного выражения команды. Проверьте корректность шаблона |
|
|
Некорректное регулярное выражение в команде |
|
|
Некорректное состояние клиента, |
|
|
Некорректное состояние клиента, |
|
|
Обнаружено некорректное внутреннее состояние клиента. Возможна ошибка в логике соединений |
|
|
Ошибка инициализации кеша Pooler (пользователи, БД, соединения и другое) |
|
|
Не удалось инициализировать генератор уникальных идентификаторов |
|
|
Ошибка при приостановке работы буфера сокета. Возможна проблема на уровне ОС |
|
|
Получен поврежденный пакет на файловом дескрипторе |
|
|
Не удалось интерпретировать сетевой адрес. Проверьте формат и данные |
|
|
Попытка выполнить неизвестную задачу. Возможен сбой конфигурации |
|
|
Ошибка при захвате сокета (при миграции или перезапуске) |
|
|
Не удалось найти «парное» соединение для takeover |
|
|
Старый экземпляр Pangolin Pooler передал неизвестную или недопустимую команду |
|
|
Не удалось отправить команду в backend или другой компонент |
|
|
Ошибка инициализации кеша аутентификации |
|
|
При включенной сквозной аутентификации нельзя использовать Unix-сокеты. Используйте TCP/IP |
|
|
OpenSSL не может загрузить старый провайдер. Проверьте OpenSSL-конфигурацию |
|
|
Ошибка реализации TLS-соединения. Проверьте сертификаты и параметры подключения |
|
|
Запуск под пользователем |
|
|
||
|
Имя, указанное в TLS-сертификате, не совпадает с ожидаемым именем пользователя/сервера. Проверьте сертификат |
|
|
Ошибка при перезагрузке TLS-конфигурации. Используется предыдущее значение |
|
|
Указанная база данных не настроена как источник аутентификации |
|
|
Попытка использовать зарезервированную БД как |
|
|
Подключение должно выполняться по защищенному TLS-каналу. Проверьте настройки клиента |
|
|
Сервер ожидает клиентский TLS-сертификат, но он не был предоставлен |
|
|
Аутентификация на основе сертификата завершилась неудачно. Возможные причины: имя не совпадает или отсутствует сертификат |
|
|
Значение из карты соответствия ( |
|
|
Указан неподдерживаемый тип аутентификации. Проверьте настройки |
|
|
Превышен лимит подключений или исчерпаны ресурсы Pooler для выделения пула |
|
|
Одновременное использование PAM и встроенной аутентификации запрещено. Используйте только один механизм |
|
|
Пользователь имеет MD5-хеш пароля, а клиент требует SCRAM. Обновите формат пароля |
|
|
SCRAM пароля клиента некорректен. Проверьте и повторите попытку |
|
|
Некорректный пароль. Убедитесь в правильности введенных данных |
|
|
Аутентификация SASL не удалась. Возможно, ошибка со стороны клиента или несовместимый формат |
|
|
ID узла должен быть числом от 1 до 65536. Проверьте настройки репликации или кластера |
|
|
Недостаточно памяти для выполнения операции. Проверьте настройки или нагрузку на систему |
|
|
Обнаружена синтаксическая ошибка в строке подключения. Проверьте формат и параметры |
|
|
Значение порта в строке подключения некорректно. Ожидается числовое значение |
|
|
Найден неподдерживаемый параметр в строке подключения |
|
|
В конфигурации не указан обязательный параметр |
|
|
Не удалось создать подключение к пирингу. Возможная причина — нехватка памяти |
|
|
Указан неверный режим пула. Поддерживаемые значения: |
|
|
Файл аутентификации поврежден или содержит ошибки. Проверьте его целостность |
|
|
Имя пользователя в файле аутентификации превышает допустимую длину |
|
|
Пароль в файле аутентификации превышает допустимую длину |
|
|
Требуется формат MD5, но пароль задан в другом формате |
|
|
SCRAM не является поддерживаемым методом, но пароль пользователя — в формате SCRAM |
|
|
Ошибка входа из-за несовпадения типа пароля |
|
|
Нарушение протокола SCRAM |
|
|
Ошибка загрузки плагина для обработки PKCS#12-файла. Проверьте путь к файлу и совместимость плагина |
|
|
Клиент не распознан. Возможно, используется устаревшая или несовместимая версия |
Пример команды для проверки вывода лога компонента, файла pangolin-pooler.log:
timeout 60s tail -f /pangolinlogs/pangolin-pooler/pangolin-pooler.log
Коды возврата при использовании сквозной аутентификации#
В таблице ниже приведены возможные коды возврата, которые возникают в логе Pangolin Pooler при использовании сквозной аутентификации.
Состояние |
Название |
Pangolin Pooler |
Pangolin DBMS |
|---|---|---|---|
|
Аутентификация выполнена успешно |
+ |
|
|
Аутентификация не прошла |
+ |
|
|
Произошел разрыв между Pooler и Pangolin DBMS |
+ |
|
|
Выполнился обмена пакетами на старте между Pooler и Pangolin DBMS |
+ |
|
|
Выполняется обмен данными |
+ |
|
|
Сработал таймер аутентификации |
+ |
+ |
Пример записи в логе#
Ниже приведен фрагмент лога Pangolin Pooler. Он показывает последовательность событий, происходящих во время подключения клиента, его аутентификации, активности в системе и последующего отключения.
Попытка входа пользователя
testв базуtest_dbс клиента по адресу<IP-Address>, порт<port>. Аутентификация выполняется без использования TLS:2022-08-17 14:12:48.194 MSK AUDIT test_db/test@<IP-Address>:<port> login attempt tls=noРегулярная статистика соединения: число транзакций и запросов в секунду, входящий/исходящий трафик, среднее время выполнения транзакции, запроса и ожидания. В данном случае активность низкая:
2022-08-17 14:13:46.990 MSK [1230] LOG stats: 0 xacts/s, 0 queries/s, in 3 B/s, out 4 B/s, xact 3284 us, query 355 us, wait 6 usОтсутствует активность — соединение не используется, трафик и задержки нулевые:
2022-08-17 14:15:46.991 MSK [1230] LOG stats: 0 xacts/s, 0 queries/s, in 0 B/s, out 0 B/s, xact 0 us, query 0 us, wait 0 usСоединение с клиентом закрывается по его инициативе (
client close request). Продолжительность соединения — 1789 секунд (~30 минут):2022-08-17 14:16:42.393 MSK AUDIT test_db/test@<IP-Address>:<port> closing because: client close request (age=1789s)Получено новое соединение от того же клиента (порт
<port>):2022-08-17 14:16:42.414 MSK AUDIT test_db/test@<IP-Address>: connection receivedПредупреждение: истек срок действия аутентификационного контекста клиента. Возможно, между соединениями прошло слишком много времени, либо внутренний кеш аутентификации обновился:
2022-08-17 14:16:42.414 MSK [1230] WARNING C-0x2278d78 (21474): (nodb)/test@<IP-Address>:<port> authentication context expired. user: db=test_db user=testНовая попытка входа без TLS:
2022-08-17 14:16:42.414 MSK AUDIT test_db/test@<IP-Address>:<port> login attempt tls=noОтправка стартового пакета аутентификации от клиента:
2022-08-17 14:16:42.414 MSK AUDIT test_db/test@<IP-Address>:<port> send auth startup packetАутентификация клиента прошла успешно:
2022-08-17 14:16:42.492 MSK AUDIT test_db/test@<IP-Address>:<port> auth server login okСводка статистики показывает, что клиент ведет небольшую активность:
2022-08-17 14:16:46.991 MSK [1230] LOG stats: 0 xacts/s, 0 queries/s, in 3 B/s, out 4 B/s, xact 3962 us, query 450 us, wait 12 usСнова отсутствие активности на соединении:
2022-08-17 14:17:46.991 MSK [1230] LOG stats: 0 xacts/s, 0 queries/s, in 0 B/s, out 0 B/s, xact 0 us, query 0 us, wait 0 us
Такие логи позволяют анализировать жизненный цикл соединения: от момента подключения до закрытия. Особенно полезны события AUDIT — они показывают каждое подключение, аутентификацию и причину завершения соединения. LOG stats помогает отслеживать нагрузку и поведение клиента.