Skip to content

Настройка журналирования PostgreSQL в Syslog и подсистему ЖУРНАЛЛИСТ

PostgreSQL поддерживает вывод журналов как в файл, так и напрямую в syslog. Для интеграции с подсистемой ЖУРНАЛЛИСТ рекомендуется использовать syslog, что обеспечивает централизованный сбор и анализ событий базы данных.

Общая схема

PostgreSQL:

  • генерирует события (запросы, ошибки, подключения, репликация)
  • отправляет их в syslog
  • syslog (rsyslog / syslog-ng) пересылает данные в ЖУРНАЛЛИСТ

Где настраивается логирование

Файл конфигурации:

bash
postgresql.conf

Обычно расположен:

bash
/var/lib/pgsql/data/postgresql.conf

или

bash
/etc/postgresql/<version>/main/postgresql.conf

Включение syslog

Базовая настройка

conf
logging_collector = off
log_destination = 'syslog'

Дополнительные параметры

conf
log_destination = 'syslog'
syslog_facility = 'LOCAL0'
syslog_ident = 'postgres'

Управление уровнем логирования

conf
log_min_messages = warning
log_min_error_statement = error
log_connections = on
log_disconnections = on
log_duration = off

Пример конфигурации

conf
log_destination = 'syslog'
logging_collector = off
syslog_facility = 'LOCAL0'
syslog_ident = 'postgres'

log_min_messages = warning
log_connections = on
log_disconnections = on

Перезапуск PostgreSQL

bash
systemctl restart postgresql

Настройка пересылки в ЖУРНАЛЛИСТ

rsyslog

Файл:

bash
/etc/rsyslog.d/postgresql.conf

Пример по имени программы:

bash
if $programname == 'postgres' then @@journalist-server:514
& stop

или по facility:

bash
local0.* @@journalist-server:514

syslog-ng

bash
filter f_postgres { program("postgres"); };

destination d_journalist {
    tcp("journalist-server" port(514));
};

log {
    source(src);
    filter(f_postgres);
    destination(d_journalist);
};

Проверка

  1. Проверить локальные сообщения:
bash
journalctl -u postgresql

или:

bash
tail -f /var/log/syslog
  1. Подключиться к базе:
bash
psql -U postgres
  1. Убедиться, что события появились в ЖУРНАЛЛИСТ

Какие события попадают

  • запуск и остановка сервера
  • подключения и отключения клиентов
  • ошибки SQL
  • длительные запросы
  • проблемы репликации
  • внутренние ошибки

Рекомендации

  • использовать отдельный facility (local0–local7)
  • не включать избыточный уровень логирования (debug) в production
  • использовать TCP для передачи
  • фильтровать незначимые события

Альтернативный вариант (через файл)

Если используется файловое логирование:

conf
logging_collector = on
log_directory = 'log'
log_filename = 'postgresql.log'

Далее можно использовать rsyslog:

bash
input(type="imfile"
      File="/var/lib/pgsql/data/log/*.log"
      Tag="postgres"
      Facility="local0")

Когда использовать syslog

Рекомендуется:

  • для централизованного мониторинга
  • для корреляции событий с другими системами
  • для построения аналитики

Особенности PostgreSQL

  • гибкая настройка уровней логирования
  • возможность детального аудита
  • высокая нагрузка при включении подробных логов

Краткий вывод

PostgreSQL имеет встроенную поддержку syslog, что делает интеграцию с подсистемой ЖУРНАЛЛИСТ простой и эффективной. Это позволяет включить события базы данных в общую систему наблюдаемости, анализа и автоматизации.