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

Журнал отчета

  1. Определите настройки параметра включения сборщика отчетов.

    postgres@monman_db=# \dconfig+ logging*
    Разбор команды

    • \dconfig+ — метакоманда psql для отображения параметров конфигурации с расширенной информацией (включая контекст и привилегии доступа);
    • logging* — фильтр по шаблону: выбираются все параметры, имена которых начинаются с logging.
    List of configuration parameters
    Parameter | Value | Type | Context | Access privileges
    -------------------+-------+------+------------+-------------------
    logging_collector | off | bool | postmaster |
    (1 row)

    Параметр logging_collector установлен в off — сборщик логов отключен. Изменение требует перезапуска экземпляра (Context: postmaster).

  2. Включите сборщик.

    postgres@monman_db=# ALTER SYSTEM SET logging_collector TO on;
    ALTER SYSTEM
    postgres@monman_db=# ALTER SYSTEM SET log_directory = '/pgerrorlogs/06';
    ALTER SYSTEM

    Выйдите из сеанса psql и завершите оболочку postgres.

    postgres@monman_db=# \q
    [postgres@ServerName ~]$ exit
    logout

    Перезапустите экземпляр PostgreSQL.

    [student@ServerName ~]$ sudo systemctl restart postgresql

    Проверьте запущенные процессы PostgreSQL.

    [student@ServerName ~]$ ps f -C postgres
    PID TTY STAT TIME COMMAND
    61867 ? Ss 0:00 /usr/pangolin-{pangolin_version}/bin/postgres -D /pgdata/06/data
    61891 ? Ss 0:00 \_ postgres: logger
    61892 ? Ss 0:00 \_ postgres: checkpointer
    61893 ? Ss 0:00 \_ postgres: background writer
    61895 ? Ss 0:00 \_ postgres: idle sessions terminator
    61896 ? Ss 0:00 \_ postgres: walwriter
    61897 ? Ss 0:00 \_ postgres: license checker
    61898 ? Ss 0:00 \_ postgres: autovacuum launcher
    61899 ? Ss 0:00 \_ postgres: autounite launcher
    61900 ? Ss 0:00 \_ postgres: integrity check launcher
    61901 ? Ss 0:00 \_ postgres: logical replication launcher

    В списке процессов появился postgres: logger — сборщик логов успешно запущен после перезапуска экземпляра.

  3. Подключитесь к БД postgres и включите журналирование входов в сеанс.

    [student@ServerName ~]$ sudo -iu postgres
    [postgres@ServerName ~]$ psql
    postgres@postgres=# ALTER SYSTEM SET log_connections TO on;
    ALTER SYSTEM

    Перезагрузите конфигурацию.

    postgres@postgres=# SELECT pg_reload_conf();
    pg_reload_conf
    ----------------
    t
    (1 row)
  4. В соседнем терминале проверьте наличие журнала отчета и включите его мониторинг с помощью 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
  5. Сделайте несколько успешных и неуспешных попыток войти в сеанс.

    Выполните успешное переключение на БД monman_db.

    postgres@monman_db=# \c monman_db
    You 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".
  6. Проверьте, что записалось в журнал отчета (пункт 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 match
    2024-11-11 09:40:46.847 MSK [62196] LOG: AUDIT: SESSION, CONNECTION, FAILED,database = student,user = student
    2024-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=39996
    2024-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).

  7. Сбросьте настройки в postgresql.auto.conf, остановите мониторинг и удалите роль student.

    postgres@postgres=# ALTER SYSTEM RESET ALL;
    ALTER SYSTEM
    postgres@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"

Какие утверждения верны?