F.37. Запись журнала pgAudit в файл#

F.37. Запись журнала pgAudit в файл

F.37. Запись журнала pgAudit в файл #

F.37.1. О pgauditlogtofile #

Версия: 1.6.3

GitHub

F.37.2. Описание #

pgAudit Log to File является дополнением к pgAudit, которое будет перенаправлять строки аудита в независимый файл, вместо использования регистратора сервера PostgreSQL.

Это позволит нам иметь файл аудита, который можно легко переключать без загрязнения журналов сервера этими сообщениями.

Аудиторские журналы в системах с интенсивным использованием могут расти очень быстро. Это расширение позволяет автоматически вращать файлы на основе количества минут.

F.37.3. Установка #

  1. Добавьте pgauditlogtofile в "shared_preload_libraries" в postgresql.conf.

  2. Перезапустите PostgreSQL, чтобы перезагрузить новую общую библиотеку

  3. Создать расширение в базе данных postgres (например, pgaudit, нам не нужно создавать его во всех базах данных)

postgres=# CREATE EXTENSION pgauditlogtofile;

F.37.4. Конфигурация #

F.37.4.1. pgaudit.log_directory #

Имя каталога, в котором будет создан файл аудита.

Область применения: Система

По умолчанию: 'log'

Пустое значение или NULL отключат расширение, и аудит будет выполняться в журнале сервера PostgreSQL.

F.37.4.2. pgaudit.log_filename #

Имя файла, в который будет записываться аудит. Запись в существующий файл будет добавлять новые записи. Эта переменная может содержать временные шаблоны до минуты, чтобы обеспечить автоматическую ротацию.

Область применения: Система

По умолчанию: 'audit-%Y%m%d_%H%M.log'

Пустое значение или NULL отключат расширение, и аудит будет выполняться в журнале сервера PostgreSQL.

F.37.4.3. pgaudit.log_rotation_age #

Число минут, после которого файл аудита будет повернут.

Область применения: Система

По умолчанию: 1440 минут (1 день)

Замечания по производительности:

  • Если log_rotation_age < 60, фоновый рабочий процесс ротации будет просыпаться каждые 10 секунд.

  • Если log_rotation_age > 60, фоновый рабочий процесс ротации будет просыпаться каждую 1 минуту.

F.37.4.4. pgaudit.log_connections #

Перехватывает сообщения журнала сервера, когда log_connections включен.

Область применения: Система

По умолчанию: выкл

Требуется: log_connections = on

F.37.4.5. pgaudit.log_disconnections #

Перехватывает сообщения журнала сервера, когда log_disconnections включен.

Область применения: Система

По умолчанию: выкл

Требуется: log_disconnections = on

F.37.4.6. pgaudit.log_autoclose_minutes #

ЭКСПЕРИМЕНТАЛЬНО: автоматически закрывает обработчик файла аудита, удерживаемый сервером, после N минут бездействия.

Эта функция создает фоновый поток, который будет спать в фоновом режиме и закрывать обработчик файлов.

Область применения: Система

По умолчанию: 0

F.37.4.7. pgAudit Log To File - Формат записи #

CREATE FOREIGN TABLE pgauditlogtofile_extern (
  ----fields from postgresql session----
  log_time timestamptz(3) NULL,
  user_name text NULL,
  database_name text NULL,
  process_id int4 NULL,
  connection_from text NULL,
  session_id text NULL,
  session_line_num int8 NULL,
  command_tag text NULL,
  session_start_time timestamptz NULL,
  virtual_transaction_id text NULL,
  transaction_id int8 NULL,
  sql_state_code text NULL,
  -----fields from pgaudit record-------
  audit_type text NULL,
  statement_id text NULL,
  substatement_id text NULL,
  "class" text NULL,
  command text NULL,
  object_type text NULL,
  object_name text NULL,
  "statement" text NULL,
  "parameter" text NULL,
  ----additional fields--------
  detail text NULL,
  hint text NULL,
  internal_query text NULL,
  internal_query_pos int4 NULL,
  context text NULL,
  query text NULL,
  query_pos int4 NULL,
  file_error_location text NULL,
  application_name text NULL
)
SERVER your_server
OPTIONS (filename 'audit_log.csv', format 'csv');

F.37.4.8. Тест #

cd test
vagrant plugin install vagrant-vbguest
vagrant up