Докер образ для быстрого запуска анализатора журналов PostgreSQL

Журналы работы очень полезный инструмент, и их может быть очень много. Их можно  записывать в /dev/null или вообще отключить, но лучше не стоит так делать, ведь в них можно отыскать массу полезной информации о работе СУБД.

Для обработки журналов ребята из французской компании dalibo делают инструмент под названием pgbadger. Фактически это perl-скрипт который парсит лог postgresql и формирует на его основе отчет в виде html страницы с графиками и историей.

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

Далее на файл журнала или на каталог предлагается “натравить” скрипт и получить отчет. Далее полученный файл либо просто открывать в браузере, либо настраивать web сервер для его отображения.

После того как вся эта конструкция (Установка pgbadger, настройка cron, установка web сервера) была настроена вручную пару раз стало понятно что это совсем не “быстрый старт”. 

Для упрощения и ускорения развертывания был подготовлен docker образ в котором собраны вместе собственно сам pgbadger, веб сервер nginx, cron для выполнения анализа по расписанию.

Как пользоваться:

0. Как правило мы рекомендуем запускать любые инструменты анализа на отдельном хосте, т.к. анализ журналов может быть достаточно затратной операцией, особенно по процессорному времени, особенно если журналы большие. С позволения читателя вопрос передачи журналов на данный момент я оставлю за рамками данной статьи т.к. выбор конкретного инструмента — вопрос открытый (ключевые слова для гугления rsyslog, filebeat, rsync, fluetnd).

  1. Настроить ведение журналов в инстансе Postgres.
  2. Настроить передачу журналов и их архивацию на хосте где будет происходить анализ.
  3. При старте контейнера из образа ему нужно подключить каталог с журналами в качестве тома данных (пример смотри в описании).
  4. Дождаться выполнения регламентного задания по анализу, либо запустить анализ вручную.
  5. Перейти на страницу сгенерированного отчета.

Что внутри:

  1. Pgbadger версии 9.2
  2. Скрипт запуска pgbadger для обработки журналов. В текущей реализации образа в качестве исходных файлов в каталоге должны быть сжатые (*.tar.gz) журналы PostgreSQL. 
  3. Системный планировщик заданий — Cron. На пятой минуте каждого часа автоматически запускается анализ журналов, пропуская тот журнал который пишется в текущий момент. Ручной запуск возможен через docker exec. По окончании анализа обработанный файл перемещается в поддиректорию, а отчет складывается в рабочую директорию веб сервера.
  4. Веб-сервер — nginx — для отображения отчета Pgbadger.
  5. "Запускатель" всех сервисов Supervisord.
  6. Изменяемых параметров работы сервисов в контейнере сейчас нет, от слова совсем. Все “захардкожено”. А именно: 
    1. анализ выполняется в 4 потока
    2. в тихом режиме
    3. инкрементально (т.е. делается главная страница с календарем и ссылками на отчеты по дням и по неделям)
    4. В календаре первый день недели понедельник
    5. Часовой пояс для графиков GMT+3

 

Планы развития:

  1. Конфигурирование через переменные окружения
  2. Работа с журналами нескольких серверов (отдельные каталоги для исходных данных и для отчетов)

Образ и исходники доступны публично на hub.docker.com и github

Дисклеймер: ишузы в репозитории отключены. “Ждем ваших pull-requesto-ов” ©
 

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *