5.7. エラー報告とログ取得

5.7.1. ログの出力先

log_destination (string)

Pgpool-IIは、Pgpool-IIのメッセージのログ出力先を2種類サポートします。 複数のログ出力先を使用したい場合は、希望するログ出力先をカンマで区切ったリストをパラメータに設定することができます。

#for example to log on both syslog and stderr
log_destination = 'syslog,stderr'
      

デフォルトではstderrのみにログ出力します。

注意: log_destinationでsyslogオプションを使用できるようにするために、いくつかのシステムではシステムのsyslogデーモンの設定を変更しなければならないでしょう。 Pgpool-IIではログをLOCAL0からLOCAL7までのsyslogファシリティで記録することができます(syslog_facilityを参照してください)。 しかし、ほとんどのプラットフォームのデフォルトのsyslog設定ではこれらのメッセージはすべて破棄されます。 うまく動作させるためにsyslogデーモンの設定に以下のようなものを追加しなければならないでしょう。

local0.*    /var/log/pgpool.log
	

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

logging_collector (boolean)

このパラメータはログ収集機構を有効にします。 それはstderrに送られたログメッセージを捕捉し、ログファイルにリダイレクトするバックグラウンドプロセスです。

注意: ログ収集機構を使わずにstderrにログを出力することもできます。 その場合はログメッセージはサーバのstderrがリダイレクトされたところに単に出力されます。 しかしこの方法はログの量が少ない場合にのみ適切な方法です。 ログを巡回させる便利な方法がないからです。

このパラメータはサーバ起動時のみ設定可能です。

logging_collectorPgpool-II V4.2以降でのみ使用可能です。

log_directory (string)

logging_collectorを有効と設定した場合、このパラメータはログファイルが作成されるディレクトリを確定します。

デフォルトは/tmp/pgpool_logsです。

このパラメータはPgpool-II起動時のみ設定可能です。

log_filename (string)

logging_collectorが有効な場合、このパラメータは作成されたログファイルのファイル名を設定します。 値はstrftimeパターンとして扱われるため、%エスケープを使用して、時刻によって変動するファイル名を指定することができます。 サポートされている%-エスケープはstrftime 仕様によく似ています。

エスケープすることなくファイル名を指定する場合、ディスク全体を使い切ってしまうことを防止するためにログローテーションを行うユーティリティを使用することを計画するべきです。

デフォルトはpgpool-%Y-%m-%d_%H%M%S.logです。

このパラメータはPgpool-II起動時のみ設定可能です。

log_file_mode (integer)

logging_collectorが有効になっている場合、このパラメータはログファイルのパーミッションを設定します。 パラメータの値はchmod および umaskシステムコールで許容されるフォーマットで指定される数値モードであると期待されます。

注意: 8進数を使うには、数値を0(ゼロ)で開始してください。

このパラメータはPgpool-II起動時のみ設定可能です。

log_rotation_age (integer)

logging_collectorが有効な場合、このパラメータは個々のログファイルの最大寿命を決定します。 この値が単位なしで指定された場合は、分単位であるとみなします。 デフォルトは24時間です。

ゼロに設定することで、寿命に基づいた新しいログファイルの生成は無効になります。

このパラメータはPgpool-II起動時のみ設定可能です。

log_rotation_size (integer)

logging_collectorが有効な場合、このパラメータは個々のログファイルの最大容量を決定します。 ここでキロバイト単位で指定したデータ量がログファイルに出力された後、新しいログファイルが生成されます。

ゼロに設定することで、サイズに基づいた新しいログファイルの生成は無効になります。

このパラメータはPgpool-II起動時のみ設定可能です。

log_truncate_on_rotation (boolean)

logging_collectorが有効な場合、PostgreSQLは既存の同名のファイルに追加するのではなく、そのファイルを切り詰める(上書きする)ようになります。 しかし、切り詰めは時間を基にしたローテーションのために新規にファイルが開かれた時にのみ発生し、サーバ起動時やサイズを基にしたローテーションでは発生しません。 オフの場合、全ての場合において既存のファイルに追記されます。 例えば、この設定をpgpool-%H.logのようなlog_filenameと組み合わせて使用すると、24個の時別のログファイルが生成され、それらは周期的に上書きされることになります。

このパラメータはPgpool-II起動時のみ設定可能です。

syslog_facility (enum)

syslogへのログ取得が有効な場合、このパラメータは使用されるsyslogの「facility」を決定します。 LOCAL0LOCAL1LOCAL2LOCAL3LOCAL4LOCAL5LOCAL6LOCAL7の中から選んでください。 デフォルトはLOCAL0です。 使用しているシステムのsyslogデーモンの文書を同時に参照してください。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

syslog_ident (string)

syslogへのログ取得が有効な場合、このパラメータはsyslogログ内のPgpool-IIメッセージを特定するのに使用するプログラム名を確定します。 デフォルトはpgpoolです。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

5.7.2. いつログを取得するか

client_min_messages (enum)

どのメッセージ階層をクライアントに送るかを管理します。 有効な値は、DEBUG5DEBUG4DEBUG3DEBUG2DEBUG1LOGNOTICEWARNING、およびERRORです。 それぞれの階層はそれに続く全ての階層を包含します。 デフォルトはNOTICEです。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。 現在のセッションでのパラメータ値は、PGPOOL SETコマンドで変更することもできます。

log_min_messages (enum)

どのメッセージ階層をサーバログに書き込むかを管理します。有効な値はDEBUG5DEBUG4DEBUG3DEBUG2DEBUG1INFONOTICEWARNINGERRORLOGFATAL、およびPANICです。 それぞれの階層はその下の全ての階層を含みます。 デフォルトはWARNINGです。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。 現在のセッションでのパラメータ値は、PGPOOL SETコマンドで変更することもできます。

5.7.3. 何をログに

log_statement (boolean)

onに設定されている場合、全てのSQL文をログ出力します。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。 現在のセッションでのパラメータ値は、PGPOOL SETコマンドで変更することもできます。

log_per_node_statement (boolean)

log_statementと似ていますが、DBノード単位でログが出力されます。 レプリケーションや負荷分散が動いていることを確認するのに便利です。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。 現在のセッションでのパラメータ値は、PGPOOL SETコマンドで変更することもできます。

notice_per_node_statement (boolean)

log_per_node_statementと似ていますが、NOTICEメッセージとしてDBノード単位でログが出力されます。 client_min_messagesのデフォルト設定(すなわちNOTICE)では、このログメッセージはクライアントの端末にも出力されます。 クライアントにとっては、Pgpool-IIのログファイルにアクセスする必要がないので便利です。 log_per_node_statementと違って、notice_per_node_statementは内部的に発行する問い合わせ(たとえば システムカタログへの問い合わせ)は出力しないことに注意してください。 これは、この機能がテストにも使えるように設計されているからです。 内部的な問い合わせは非決定論的に発行される傾向があるため、テストに使うには適していません。 同じ理由で、バックエンドのプロセスIDも出力されません。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。 現在のセッションでのパラメータ値は、PGPOOL SETコマンドで変更することもできます。

log_client_messages (boolean)

onに設定されている場合、クライアントメッセージをログ出力します。

このパラメータは、Pgpool-IIの設定を再読み込みすることで変更可能です。 現在のセッションでのパラメータ値は、PGPOOL SETコマンドで変更することもできます。

log_hostname (boolean)

onに設定されている場合、psコマンドの結果、および(log_connectionsがonの場合には)接続時のログに、IPアドレスではなくホスト名を表示します。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

log_connections (boolean)

onに設定されている場合、全てのクライアント接続をログへ出力します。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

log_disconnections (boolean)

onに設定されている場合、全てのクライアント接続終了をログへ出力します。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

log_pcp_processes (boolean)

onに設定されている場合、PCPプロセスの正常なforkあるいはexitした状態をログに出力します。 デフォルトはonです。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。

log_error_verbosity (enum)

ログ取得されるそれぞれのメッセージに対し、サーバログに書き込まれる詳細の量を制御します。 有効な値は、TERSEDEFAULT、およびVERBOSEで、それぞれは表示されるメッセージにより多くのフィールドを追加します。 TERSEDETAILHINTQUERY、およびCONTEXTエラー情報を除外します。

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。 現在のセッションでのパラメータ値は、PGPOOL SETコマンドで変更することもできます。

log_line_prefix (string)

これは、各ログ行の先頭に出力するprintfの書式文字列です。 %から始まる"エスケープシーケンス"は、後述の通りのステータス情報で置き換えられます。 認識できないエスケープは無視されます。 他の文字はそのままログ行に出力されます。 デフォルトは '%m: %a pid %p: 'で、タイムスタンプ、アプリケーション名、プロセスIDを印字します。

表 5-6. log_line_prefixのエスケープオプション

エスケープ効果
%a アプリケーション名。 子プロセス(セッションプロセス)の初期値は"child"です。 クライアントがアプリケーション名(スタートアップメッセージあるいはSETコマンドを使って)を設定すると、アプリケーション名は変更されます。 他の種類のプロセスでは、アプリケーション名はハードコードされた文字列です。 表5-7を参照してください。
%pプロセスID (PID)
%Pプロセス名
%tミリ秒なしのタイムスタンプ
%mミリ秒付きのタイムスタンプ
%dデータベース名
%uユーザ名
%lプロセスごとのログ行番号
%%'%' 文字自身

表 5-7. 各プロセスのアプリケーション名

プロセスの種類アプリケーション名
mainmain
childchild
streaming replication delay check workersr_check_worker
watchdog heart beat senderheart_beat_sender
watchdog heart beat receiverheart_beat_receiver
watchdogwatchdog
watchdog life checklife_check
follow primary childfollow_child
watchdog utilitywatchdog_utility
pcp mainpcp_main
pcp childpcp_child
health check processhealth_check%d (%dはバックエンドノードIDに置換されます)
logger processlogger (loggerプロセスが管理するログファイルに「logger」というアプリケーション名が出力されることはありません)

このパラメータはPgpool-IIの設定を再読み込みすることで変更可能です。