ログは、障害調査や状態確認に必要な情報です。
ただ、やみくもに保存すると容量がひっ迫したりリソースを消費するのでバランスが大事です。
以下は、私の基本設定例です
利用環境
MiracleLiux 9.2
PostgreSql 13
データディレクトリ:/var/lib/pgsql/data
OS側の事前作業:/var/log配下にディレクトリ準備
postgresqlのデータディレクトリとOSの/var/log配下の両方から参照できると便利です。
ディレクt理
・ディレクトリ作成、権限付与
mkdir /var/log/psql
chmod 777 /var/log/psql
・シンボリックリンク作成
ln -s /var/log/psql /var/lib/pgsql/data/log
postgresql.confの設定
編集時の注意
・バックアップは取得しておきましょう
誤った場合に元にもどせるように!
・変更する場合は
元の値を残し、改行して記述するほうが良いです
そうすると、既定値がわかるのでもとに戻す時や既定値が不明な場合に困りません。
logging_collector
ログ出力可否です。
既定でonのため修正不要です。
logging_collector = on
log_destination
ログ出力方法です。インストール環境により違いがあるようです。
syslogの場合、OS側に出力されます。※ジャーナルログ
stderrは、data/logに出力されるので、stderrを推奨。
log_destination = 'stderr'
ログ出力先
作成したディレクトリを指定します
log_directory = '/var/log/psql'
log_file_mode
ログファイルのパーミッションです。
通常だとpostgresユーザ限定になりますので他のユーザも閲覧できるようにします。
※利用環境やセキュリティ要件によって判断が必要。
log_file_mode = 0644
log_filename
ログファイル名
改廃しないなら固定するほうが良いのですが、ログが肥大化するので1か月くらいがよいでしょう。
%dは日付です。
log_filename = 'postgresql-%d.log'
log_rotation_age
ローテート周期です
既定で1日になっていると思います。
log_rotation_age = 1d
log_connections
認証時のログです
セキュリティ上、認証時のログは取得したほうがよいです
log_connections = on
log_disconnections
切断時のログです。こちらも取得しましょう
log_disconnections = on
log_line_prefix
ログ出力内容です。既定値は情報が少ないので追加しましょう
log_line_prefix = '[%t]%u %d %p[%l]'
%t 時間
%u ユーザ
%d データベース名
%p プロセスID
%l セッションラインNo
log_min_duration_statement
SQL遅延時の出力時間です
利用環境により設定しましょう
単位はミリ秒です
log_min_duration_statement = 30000
編集完了後
サービスを再起動して動作確認しましょう。