Журнал отчета
-
Определите настройки параметра включения сборщика отчетов.
postgres@monman_db=# \dconfig+ logging*Разбор команды
\dconfig+— метакоманда psql для отображения параметров конфигурации с расширенной информацией (включая контекст и привилегии доступа);logging*— фильтр по шаблону: выбираются все параметры, имена которых начинаются сlogging.
List of configuration parametersParameter | Value | Type | Context | Access privileges-------------------+-------+------+------------+-------------------logging_collector | off | bool | postmaster |(1 row)Параметр
logging_collectorустановлен вoff— сборщик логов отключен. Изменение требует перезапуска экземпляра (Context: postmaster). -
Включите сборщик.
postgres@monman_db=# ALTER SYSTEM SET logging_collector TO on;ALTER SYSTEMpostgres@monman_db=# ALTER SYSTEM SET log_directory = '/pgerrorlogs/06';ALTER SYSTEMВыйдите из сеанса psql и завершите оболочку postgres.
postgres@monman_db=# \q[postgres@ServerName ~]$ exitlogoutПерезапустите экземпляр PostgreSQL.
[student@ServerName ~]$ sudo systemctl restart postgresqlПроверьте запущенные процессы PostgreSQL.
[student@ServerName ~]$ ps f -C postgresPID TTY STAT TIME COMMAND61867 ? Ss 0:00 /usr/pangolin-{pangolin_version}/bin/postgres -D /pgdata/06/data61891 ? Ss 0:00 \_ postgres: logger61892 ? Ss 0:00 \_ postgres: checkpointer61893 ? Ss 0:00 \_ postgres: background writer61895 ? Ss 0:00 \_ postgres: idle sessions terminator61896 ? Ss 0:00 \_ postgres: walwriter61897 ? Ss 0:00 \_ postgres: license checker61898 ? Ss 0:00 \_ postgres: autovacuum launcher61899 ? Ss 0:00 \_ postgres: autounite launcher61900 ? Ss 0:00 \_ postgres: integrity check launcher61901 ? Ss 0:00 \_ postgres: logical replication launcherВ списке процессов появился
postgres: logger— сборщик логов успешно запущен после перезапуска экземпляра. -
Подключитесь к БД
postgresи включите журналирование входов в сеанс.[student@ServerName ~]$ sudo -iu postgres[postgres@ServerName ~]$ psqlpostgres@postgres=# ALTER SYSTEM SET log_connections TO on;ALTER SYSTEMПерезагрузите конфигурацию.
postgres@postgres=# SELECT pg_reload_conf();pg_reload_conf----------------t(1 row) -
В соседнем терминале проверьте наличие журнала отчета и включите его мониторинг с помощью
tail -f. В режиме мониторинга командаtail -fвернет командную строку при ее остановкеCtrl+C.[student@ServerName ~]$ sudo ls -ltrh /pgerrorlogs/06-rw------- 1 postgres postgres 1.4K Nov 11 09:30 postgresql-2024-11-11_092534.log[student@ServerName ~]$ sudo tail -f /pgerrorlogs/06/postgresql-2024-11-11_092534.log -
Сделайте несколько успешных и неуспешных попыток войти в сеанс.
Выполните успешное переключение на БД
monman_db.postgres@monman_db=# \c monman_dbYou are now connected to database "monman_db" as user "postgres".Выполните попытку подключения через локальный сокет — аутентификация не должна пройти.
postgres@monman_db=# \c "dbname=student user=student password=student"connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "student"Previous connection keptВыполните попытку подключения через TCP — аутентификация должна пройти.
postgres@monman_db=# \c "dbname=student user=student password=student host=localhost"You are now connected to database "student" as user "student" on host "localhost" (address "::1") at port "5432". -
Проверьте, что записалось в журнал отчета (пункт 4 для определения местоположения журнала отчета).
2024-11-11 09:40:46.843 MSK [62196] LOG: connection received: host=[local]2024-11-11 09:40:46.847 MSK [62196] LOG: connection authenticated: identity="postgres" method=peer (/pgdata/06/data/pg_hba.conf:89)2024-11-11 09:40:46.847 MSK [62196] LOG: provided user name (student) and authenticated user name (postgres) do not match2024-11-11 09:40:46.847 MSK [62196] LOG: AUDIT: SESSION, CONNECTION, FAILED,database = student,user = student2024-11-11 09:40:46.847 MSK [62196] FATAL: Peer authentication failed for user "student"2024-11-11 09:40:46.847 MSK [62196] DETAIL: Connection matched pg_hba.conf line 89: "local all all peer"2024-11-11 09:40:59.062 MSK [62200] LOG: connection received: host=::1 port=399962024-11-11 09:40:59.081 MSK [62200] LOG: connection authenticated: identity="student" method=scram-sha-256 (/pgdata/06/data/pg_hba.conf:93)2024-11-11 09:40:59.081 MSK [62200] LOG: connection authorized: user=student database=student application_name=psqlВ журнале записаны все попытки подключения: неуспешная попытка через локальный сокет (
FATAL: Peer authentication failed) и успешное подключение через TCP (LOG: connection authorized). Каждая запись содержит метку времени, PID процесса и уровень логирования (LOG,FATAL,AUDIT,DETAIL). -
Сбросьте настройки в
postgresql.auto.conf, остановите мониторинг и удалите рольstudent.postgres@postgres=# ALTER SYSTEM RESET ALL;ALTER SYSTEMpostgres@postgres=# SELECT pg_reload_conf();pg_reload_conf----------------t(1 row)postgres@postgres=# DROP ROLE student;DROP ROLE
Самопроверка
Вопрос 1
Что означает Context: postmaster у параметра logging_collector?
Вопрос 2
Какая функция возвращает имя текущего файла журнала отчета?
Вопрос 3
В журнале отчета записано:
2024-11-11 09:40:46.843 MSK [62196] LOG: connection received: host=[local]
2024-11-11 09:40:46.847 MSK [62196] LOG: connection authenticated: identity="postgres" method=peer
2024-11-11 09:40:46.847 MSK [62196] FATAL: Peer authentication failed for user "student"
Какие утверждения верны?