Как заставить писать pgpool-II 3.x/4.0/4.1 в отдельный лог-файл

pgpool-II достаточно известный балансировщик и пулер соединений для PostgreSQL и не нуждается в представлении. До версии 4.2 у pgpool-II были достаточно скудные настройки логирования — это писать лог в syslog или stderr, в версии 4.2 появился полноценный лог-коллектор в котором можно легко настроить логирование в отдельный файл, сделать ротацию и прочие полезные вещи, прям как в PostgreSQL (собственно logging collector оттуда и был портирован в pgpool-II 4.2).

В статье ниже я расскажу как быстро настроить логирование в отдельный файл для pgpool-II версий 3.x, 4.0 и 4.1, там где нет logging collector.

Исходные данные: CentOS Linux 7 + pgpool-II 4.0.x
Задача: Настроить логгирование pgpool-II 4.0.x в отдельный файл через syslog

Вроде бы задача простая, открываем официальную документацию на версию 4.0.x и настраиваем, но дьявол кроется в деталях.

Важно отметить, что в CentOS Linux 7 используется rsyslog, который обладает огромным функционалом и очень гибок — это большой плюс.
По умолчанию pgpool-II будет писать все в общий журнал /var/log/messages, что не очень удобно для последующего чтения и парсинга, например с помощью системы мониторинга, того же Zabbix.
Мы настроим логирование в отдельный каталог /var/log/pgpool в файл pgpool.log, а так же сделаем архивирование и ротацию логов.

Приступим:

1. Создаем правило для rsyslog для перенаправления логов в отдельный файл, создадим файл /etc/rsyslog.d/pgpool.conf

template(name="PGpoolMsg" type="string" string="%msg:::drop-last-lf%\n")

if ( $programname startswith "pgpool" ) then {
    action(type="omfile" file="/var/log/pgpool/pgpool.log" template="PGpoolMsg")
    stop
}

Здесь все довольно просто:
а) Обратите внимание на строку $programname startswith «pgpool», по умолчанию написано pgpool, что соответствует параметру syslog_ident из файла конфигурации pgpool-II;
б) Указание template создает отдельный шаблон с форматом строки лога, т.к. pgpool-II сам добавляет в лог информацию о дате, времени и pid (см. параметр log_line_prefix у pgpool-II), то нам не нужно добавлять их же от rsyslog и мы задаем формат строки без временных меток, просто пишем в лог строку %msg
в) В остальном все просто, пишем в лог-файл /var/log/pgpool/pgpool.log строку нужного формата от нужного programname и останавливаемся (stop);

2. Создадим каталог для логов, пустой лог и назначим владельца и права:

mkdir /var/log/pgpool
chmod 755 /var/log/pgpool
touch /var/log/pgpool/pgpool.log
chmod 644 /var/log/pgpool/pgpool.log
chown -R postgres:postgres /var/log/pgpool

Обратите внимание, что владельцем каталога /var/log/pgpool я установил пользователя postgres и в сценарии ротации файл лога ниже так же будет фигурировать пользователь postgres.
Проверьте наличие этого пользователя в системе, если его вдруг нет, то создайте.

3. Проверим настройки логирования в конфиге /etc/pgpool-II/pgpool.conf, у меня такие:

log_destination = 'syslog'
logdir = '/var/log/pgpool'

Я привел те параметры которые отличаются от параметров по умолчанию, все остальные параметры логирования у меня стандартные.

4. Перезапустим rsyslogd

systemctl restart rsyslog

5. После этого в файл /var/log/pgpool/pgpool.log должна начать добавляться информация.

Перезапуск самого pgpool-II не потребуется.

Смотрим

tail -f /var/log/pgpool/pgpool.log

и радуемся результату.

6. Настроим ротацию лога

Создадим файл /etc/logrotate.d/pgpool с таким содержимым:

/var/log/pgpool/pgpool.log {
    daily
    rotate 14
    compress
    delaycompress
    missingok
    create 0644 postgres postgres
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

Теперь у нас есть отдельный лог для pgpool-II и настроена его архивирование и ротация.

На этом все, до скорых встреч.

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


Оставить комментарий

avatar
1000

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

  Подписаться  
Уведомление о