pgFouine - Инструкции по установке и руководство

Инсталляция

Можно распаковать тарбол pgFouine или инсталлировать RPM-пакет.

  • Если пользоваться тарболом, то pgFouine инсталлируется локально и запускается командой ./pgfouine.php в той директории, в которую её установили.
  • Если установить RPM-пакет, то pgFouine инсталлируется глобально и запускается командой pgfouine.php.

Как включить протоколирование запросов

PostgreSQL 7.x

Отредактируйте файл postgresql.conf (обычно находится в /var/lib/pgsql/data/), установив следующие директивы:

  • Для записи запросов, длящихся дольше n миллисекунд:
    syslog = 2
    log_min_duration_statement = n
    
    log_duration = false
    log_statement = false
    
    Для записи каждого обработанного запроса установите log_min_duration_statement на 0. Чтобы отключить запись запросов, установите этот параметр на -1.
  • Для записи всех запросов дольше n миллисекунд И продолжительности ВСЕХ запросов (работает только с PostgreSQL 7.x; pgFouine считает продолжительность каждого запроса лишь один раз):
    syslog = 2
    log_min_duration_statement = n
    
    log_duration = true
    log_statement = false

Затем отредактируйте /etc/syslog.conf для настройки возможностей PostgreSQL:

local0.*       -/var/log/pgsql

Следует игнорировать способность PostgreSQL создавать лог-файл по умолчанию, иначе запросы будут протоколироваться дважды:

*.info;mail.none;authpriv.none;cron.none;local0.none                /var/log/messages

Перезапустите syslogd и PostgreSQL.

Кроме лишних I/O (операций ввода/вывода), вреда от избыточных записей никакого. Можно заставить syslog послать лог на другой сервер по сети с помощью @ip.ad.dr.ess.

PostgreSQL 8.x

Настройка syslog

Отредактируйте файл postgresql.conf (обычно находится в /var/lib/pgsql/data/), установив следующие директивы:

  • Чтобы включить протоколирование в syslog
    log_destination = 'syslog'
    redirect_stderr = off
    silent_mode = on
  • Для записи запросов, длящихся дольше n миллисекунд:
    log_min_duration_statement = n
    log_duration = off
    log_statement = 'none'
    Для записи каждого обработанного запроса установите log_min_duration_statement на 0. Чтобы отключить запись запросов, установите этот параметр на -1.

Затем отредактируйте /etc/syslog.conf для настройки возможностей PostgreSQL:

local0.*       -/var/log/pgsql

Следует игнорировать способность PostgreSQL создавать лог-файл по умолчанию, иначе запросы будут протоколироваться дважды:

*.info;mail.none;authpriv.none;cron.none;local0.none                /var/log/messages

Перезапустите syslogd и PostgreSQL.

Кроме лишних I/O (операций ввода/вывода), вреда от избыточных записей никакого. Можно заставить syslog послать лог на другой сервер по сети с помощью @ip.ad.dr.ess.

Фильтр по базе данных и/или пользователю

Можно фильтровать лог-файл по базе данных или пользователю параметрами -database и -user. Для этого нужно установить следующий log_line_prefix:

log_line_prefix = 'user=%u,db=%d'

Использование лог-файла stderr

Пользуясь указанным методом, можно направлять лог на stderr вместо syslog. Делать это не рекомендуется, так как не гарантируется цельность операторов, если они многострочные.

log_destination = 'stderr'
redirect_stderr = on
log_line_prefix = '%t [%p]: [%l-1] '

Использование

pgFouine - простой в использовании инструмент командной строки. Следующая команда создаёт HTML-отчёт со стандартными параметрами:

$ pgfouine.php -file your/log/file.log > your-report.html

С помощью этой строки можно отобразить текстовый отчёт с 10 запросами на каждый экран на стандартном выводе:

$ pgfouine.php -file your/log/file.log -top 10 -format text

На странице "Примеры отчетов" можно найти больше полезных примеров.

pgfouine.php -help поможет найти информацию об использовании.