Как включить логирование подключений и запросов к базе PostgreSQL?
Включение логирования подключений и запросов может повлиять на производительность базы данных. Соблюдайте осторожность при настройке этих параметров.
Чтобы посмотреть логи:
- В списке Relational Database Service выберите нужный кластер.
- На панели слева откройте раздел Logs .
- На вкладке Error Logs выберите вкладку Log Details .
- Чтобы скачать файл с логами, перейдите на вкладку Download и нажмите Download .
На текущий момент логи нельзя выгрузить в бакет OBS или забрать с помощью API .
PostgreSQL логирование SQL запросов
В файле postgresql.conf указываем параметры:
log_duration = on # Включает логирование запросов
log_min_duration_statement = 1 # Минимальное время миллисекунд выполнения, для попадания в лог
log_directory = ‘log’ # Директория для логов относительно PGDATA
log_filename = ‘postgresql-%a.log’ # Формат логфайлов
UPD ver 13: log_statement = 'all' logging_collector = on
Перезагрузим сервер:
systemctl restart postgresql-12; systemctl status postgresql-12
Проверим логи:
# pwd
/data/pgdata/log
# ls
postgresql-Fri.log postgresql-Sat.log postgresql-Thu.log
postgresql-Mon.log postgresql-Sun.log postgresql-Tue.log
Как просмотреть журнал событий в PostgreSQL
Хочу посмотреть журнал событий, которые выполнял с БД (PostgreSQL), но что-то не могу найти команды для этого действия. Хотел бы выводить: дату, время, пользователь которой зашел и какой запрос выполнил. Кто может подсказать с этим. Знаю такую команду SELECT * FROM pg_stat_activity , но тут как-то не точно пишет
Отслеживать
JuniorLittle
задан 27 окт 2020 в 16:48
JuniorLittle JuniorLittle
191 1 1 золотой знак 3 3 серебряных знака 13 13 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Хотел бы выводить: дату, время, пользователь которой зашел и какой запрос выполнил.
А с чего вы взяли, что эти гигабайты логов вообще куда-то сохраняются по-умолчанию? Их легко в день может быть больше чем сама база по объёму.
Сначала сами явным образом настраиваете логирование, потом ищете что вам понадобилось в логах. Вероятно вы захотите включить log_connections , log_disconnections , поменять log_line_prefix (либо задать log_destination = csv чтобы получить логи в csv формате) и поставить log_statement = all
view pg_stat_activity показывает серверные процессы этого экземпляра postgresql (у вас может не быть прав на отображение всех полей этого view ). Те, которые backend_type = ‘client backend’ , — процессы обслуживающие подключённых прямо сейчас клиентов и для них, в частности, поле query — последний выполненный запрос в этой сессии (или выполняемый сейчас в зависимости от state ).
Включение core dump в PostgreSQL

Опубликовано: 23.11.2021
При возникновении сложных проблем требуется посмотреть на более детальный лог. Он, по умолчанию, не включен, так как создает очень высокую нагрузку на систему и занимает много дискового пространства. Рассмотрим его включение и средства просмотра. Предполагается, что мы работаем в системе Linux и у нас уже установлена и работает СУБД PostgreSQL.
Сборка PostgreSQL
Для включения подробного лога, наша СУБД должна быть собрана с опцией debug. Посмотреть опции сборки установленного PostgreSQL можно с помощью команды pg_config. Так как она может быть установлена вне стандартного каталога для запуска, вводим:
find / -name pg_config -type f
Допустим, команда вернула:
* далее, наша работа должна учитывать данный путь. Ниже по инструкции вам нужно будет менять мое значение /usr/pgsql-11/bin на свое.
/usr/pgsql-11/bin/pg_config | grep -i debug
Если система ничего не вернула, то нам нужно пересобрать СУБД.
Для начала установим пакеты, которые нам понадобятся для сборки:
yum install centos-release-scl-rh epel-release
yum install wget systemtap-sdt-devel gcc llvm-libs llvm-toolset-7-clang-devel llvm5.0-devel libicu-devel perl-ExtUtils-Embed zlib-devel krb5-devel openssl-devel pam-devel libxml2-devel libxslt-devel openldap-devel libuuid-dev systemd-devel tcl-devel python-devel gcc-c++
Как видим, для сборки PostgreSQL требуется большое число библиотек. Чтобы не засорять систему, рекомендуется сделать сборку (configure, make) на другом компьютере или в контейнере Docker.
Смотрим версию установленного программного продукта:
В моем примере было:
psql (PostgreSQL) 11.14
На странице ftp.postgresql.org/pub/source можно найти все версии для исходников. Мы же поступим, немного, по-другому. Создадим переменную с нашей версией:
И загрузим исходник командой:
wget —no-check-certificate https://ftp.postgresql.org/pub/source/v$PG_VER/postgresql-$PG_VER.tar.gz
* если получим ошибку, вводим команду yum install wget.
Распаковываем скачанный архив:
tar zxf postgresql-*.tar.gz
Перейдем в распакованный каталог:
Смотрим, с какими опциями собрана наша установленная СУБД:
/usr/pgsql-11/bin/pg_config | grep -i configure
Берем полученные опции и добавляем при конфигурировании еще несколько — —enable-cassert —enable-debug:
./configure —enable-cassert —enable-debug ‘—enable-rpath’ ‘—prefix=/usr/pgsql-11’ ‘—includedir=/usr/pgsql-11/include’ ‘—libdir=/usr/pgsql-11/lib’ ‘—mandir=/usr/pgsql-11/share/man’ ‘—datadir=/usr/pgsql-11/share’ ‘—with-icu’ ‘—with-llvm’ ‘—with-perl’ ‘—with-python’ ‘—with-tcl’ ‘—with-tclconfig=/usr/lib64’ ‘—with-openssl’ ‘—with-pam’ ‘—with-gssapi’ ‘—with-includes=/usr/include’ ‘—with-libraries=/usr/lib64’ ‘—enable-nls’ ‘—enable-dtrace’ ‘—with-uuid=e2fs’ ‘—with-libxml’ ‘—with-libxslt’ ‘—with-ldap’ ‘—with-selinux’ ‘—with-systemd’ ‘—with-system-tzdata=/usr/share/zoneinfo’ ‘—sysconfdir=/etc/sysconfig/pgsql’ ‘—docdir=/usr/pgsql-11/doc’ ‘—htmldir=/usr/pgsql-11/doc/html’ ‘CFLAGS=-O2 -g gdb -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong —param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic’ ‘LLVM_CONFIG=/usr/lib64/llvm5.0/bin/llvm-config’ ‘CLANG=/opt/rh/llvm-toolset-7/root/usr/bin/clang’ ‘PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig’
* желтым отмечено то, что было добавлено в моем случае. Остальное, это то, что выдала команда /usr/pgsql-11/bin/pg_config | grep -i configure.