F.28. pgauditlogtofile — расширение pgAudit для перенаправления строк аудита в отдельный файл#

F.28. pgauditlogtofile — расширение pgAudit для перенаправления строк аудита в отдельный файл

F.28. pgauditlogtofile — расширение pgAudit для перенаправления строк аудита в отдельный файл #

Версия: 1.7.6

F.28.1. Обзор #

pgauditlogtofile — это дополнение к pgAudit, которое перенаправляет строки аудита в отдельный файл вместо использования системного журнала сервера Tantor BE.

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

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

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

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

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

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

postgres=# CREATE EXTENSION pgauditlogtofile;

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

F.28.3.1. pgaudit.log_format #

Формат, используемый для записи аудиторских журналов.

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

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

Параметры: csv / json

Примечания по CSV:

  • Все поля заключаются в кавычки и экранируются при необходимости.

  • Оператор и параметры рассматриваются как одно уникальное значение.

  • Пустые значения выводятся как пустые без кавычек.

Заметки по JSON:

  • Ключи и значения заключены в кавычки.

  • Значения экранируются при необходимости.

F.28.3.2. pgaudit.log_directory #

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

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

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

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

F.28.3.3. pgaudit.log_filename #

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

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

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

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

F.28.3.4. pgaudit.log_rotation_age #

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

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

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

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

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

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

F.28.3.5. pgaudit.log_connections #

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

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

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

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

F.28.3.6. pgaudit.log_disconnections #

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

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

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

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

F.28.3.7. pgaudit.log_autoclose_minutes #

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

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

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

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

F.28.3.8. 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,
  remote_client text NULL,
  remote_port text NULL,
  session_id text NULL,
  session_line_num int8 NULL,
  command_tag text 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_with_parameters text NULL,
  ----additional fields--------
  detail text NULL,
  hint text NULL,
  internal_query text NULL,
  internal_query_pos int4 NULL,
  context text NULL,
  debug_query text NULL,
  cursor_pos int4 NULL,
  function_name text NULL,
  filename_linenum text NULL,
  application_name text NULL
)
SERVER your_server
OPTIONS (filename 'audit_log.csv', format 'csv');

F.28.3.9. Тест #

cd test
vagrant plugin install vagrant-vbguest
vagrant up