Логирование в postgresql

Логирование в postgresql

    Настройка журнальных записей

    Приемник сообщений (log_destination = список)
    stderr поток ошибок
    csvlog формат CSV (только с коллектором)
    jsonlog формат JSON (только с коллектором)
    syslog демон syslog
    eventlog журнал событий Windows
    Коллектор сообщений (logging_collector = on) позволяет собирать дополнительную информацию, никогда не теряет сообщения (в отличие от syslog), записывает stderr, csvlog и jsonlog в файл log_directory/log_filename


    Журнал сообщений сервера можно направлять в разные приемники и выводить в разных форматах. Основной параметр, который определяет приемник и формат — log_destination (можно указать один или несколько приемников через запятую)
    Значение stderr (установленное по умолчанию) выводит сообщенияв стандартный поток ошибок в текстовом виде. Значение syslog направляет сообщения демону syslog в Unix-системах, а eventlog —в журнал событий Windows
    Обычно дополнительно включают специальный процесс — коллектор сообщений. Он позволяет записать больше информации, поскольку собирает ее со всех процессов, составляющих PostgreSQL. Он спроектирован так, что никогда не теряет сообщения; как следствие, при большой нагрузке он может стать узким местом
    Коллектор сообщений включается параметром logging_collector. При значении stderr информация записывается в каталог, определяемый параметром log_directory, в файл, определяемый параметром log_filename.
    Включенный коллектор сообщений позволяет также указать приемник csvlog; в этом случае информация будет сбрасываться в формате CSV в файл log_filename с расширением csv. При использовании приемника jsonlog содержимое файла отчета будет записываться в формате JSON, а имя файла будет иметь расширение json

    Информация о журнале

    сообщения определенного уровня log_min_messages
    время выполнения длинных команд log_min_duration_statement
    время выполнения команд log_duration
    имя приложения application_name
    контрольные точки log_checkpoint
    sподключения и отключения log_(dis)connections
    длинные ожидания log_lock_waits
    текст выполняемых команд log_statement
    использование временных файлов log_temp_files


    Ротация файлов журнала

    С помощью коллектора сообщений:
    настройка параметрмаска имени файла log_filename
    время ротации, мин log_rotation_age
    размер файла для ротации, КБ log_rotation_size
    перезаписывать ли файлы log_truncate_on_rotation = on
    комбинируя маску файла и время ротации, получаем разные схемы:'postgresql-%H.log', '1h' 24 файла в сутки'
    postgresql-%a.log', '1d' 7 файлов в неделю
    Внешние средства:
    системная утилита logrotate


    Если записывать журнал в один файл, рано или поздно он вырастетдо огромных размеров, что крайне неудобно для администрированияи анализа. Поэтому обычно используется та или иная схема ротации журналов.
    https://postgrespro.ru/docs/postgresql/16/logfile-maintenance
    Коллектор сообщений имеет встроенные средства ротации, которые настраиваются несколькими параметрами, основные из которых приведены на слайде.Параметр log_filename позволяет задавать не просто имя, а маску имени файла с помощью спецсимволов даты и времени.Параметр log_rotation_age задает время переключения на следующий файл в минутах (а log_rotation_size — размер файла, при котором надо переключаться на следующий).Включение log_truncate_on_rotation перезаписывает уже существующие файлы.Таким образом, комбинируя маску и время переключения, можно получать разные схемы ротации
    https://postgrespro.ru/docs/postgresql/16/runtime-config-logging#RUNTIME-CONFIG-LOGGING-WHERE
    В качестве альтернативы можно воспользоваться внешними программами ротации, например пакетный дистрибутив для Ubuntu использует системную утилиту logrotate (ее настройки находятся в файле /etc/logrotate.d/postgresql-common).
    Можно искать определенную информацию средствами ОС или специально разработанными скриптами
    Стандартом де-факто для анализа является программа PgBadger https://github.com/darold/pgbadger, но надо иметь в виду, что она накладывает определенные ограничения на содержимое журнала.В частности, допускаются сообщения только на английском языке.
    Источник: https://edu.postgrespro.ru/16/dba1-16/dba1_12_admin_monitoring.html

    #Включим вывод всех команд и времени их выполнения: megabase=# ALTER SYSTEM SET log_min_duration_statement=0; ALTER SYSTEM megabase=# megabase=# SELECT pg_reload_conf(); pg_reload_conf ---------------- t (1 row) megabase=# Теперь выполним какую-нибудь команду: megabase=# SELECT sum(random()) FROM generate_series(1,1000000); sum -------------------- 500059.86041098554 (1 row) #И посмотрим журнал less /var/log/postgresql/postmaster.log
    logging collector

    logging_collector (boolean) включает сборщик сообщений, после его включения необходимо перезагрузить сервер
    log_destination (string) - указывает методы протоколирования через запятую: stderr ( по умолчанию), csvlog и syslog
    stderr log/postgresql.log
    csvlog log/postgresql.csv
    log_directory (string) - определяет каталог, в котором создаются журнальные файлы
    log_filename - задает имена журнальных файлов
    log_statement - указывает какие SQL-команды записывать в журнал ( none, ddl, mod и all )

    logging_collector = on log_statement = 'all' log_destination = 'stderr,csvlog,syslog' log_directory = 'pg_log' log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' ............... /etc/init.d/postgresql restart

    Источники
    Последнее изменение: 16.12.2024 06:22


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ