Как заставить писать 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 и настроена его архивирование и ротация.

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

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


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

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

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x