Appearance
Настройка журналирования 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:514syslog-ng
bash
filter f_postgres { program("postgres"); };
destination d_journalist {
tcp("journalist-server" port(514));
};
log {
source(src);
filter(f_postgres);
destination(d_journalist);
};Проверка
- Проверить локальные сообщения:
bash
journalctl -u postgresqlили:
bash
tail -f /var/log/syslog- Подключиться к базе:
bash
psql -U postgres- Убедиться, что события появились в ЖУРНАЛЛИСТ
Какие события попадают
- запуск и остановка сервера
- подключения и отключения клиентов
- ошибки 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, что делает интеграцию с подсистемой ЖУРНАЛЛИСТ простой и эффективной. Это позволяет включить события базы данных в общую систему наблюдаемости, анализа и автоматизации.