アクセラと+αな生活
アクセラとα350と共に過ごす気まぐれ日記です。
Firefox ブラウザ無料ダウンロード
2017年08月
≪07月  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31    09月≫
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
そういえば、PostgreSQL はログ出力するように設定してました。

PostgreSQL 8.1 では標準ではログ出力しないので、設定を変更する必要があります。

PostgreSQL 8.1でログ出力の設定方法は以下があります。
 ・postgresql.conf で設定する
 ・PostgreSQL の起動コマンドの引数でログの設定を行う。


恒久的にログ出力で問題ないので、postgresql.conf でログ出力の設定を行うことにします。

「/var/lib/pgsql/data/postgresql.conf」の以下の箇所を vi で編集します。

<# ERROR REPORTING AND LOGGING セクション>
○log_destination
 ログをファイル出力する場合、「log_destination = 'stderr'」にする必要があります。
 なので、「log_destination = 'stderr'」としました。

○redirect_stderr
 ログをファイルにリダイレクトするか否かを設定です。
 ファイルにリダイレクトするので、「redirect_stderr = on」としました。

○log_directory = 'pg_log'
 ログの出力先の指定です。
 'pg_log'の場合、「/var/lib/pgsql/data/pg_log」に出力されます。
 出力先を変えたい場合は、変えて下さい。

 ※出力先は「postgresql」ユーザの書き込み権限が必要です。

○log_filename
 ログのファイル名を指定します。
 うちの Vine ちゃんは1日分を1ログとしたので、「log_filename = 'postgresql_%y-%m-%d.log'」としました。(「postgresql_09-07-22.log」、「postgresql_09-07-23.log」というネーミングになります)

○log_truncate_on_rotation
 ログのローテーション時にファイルを空にするかの設定です。
 空にする必要はないので、「log_truncate_on_rotation = off」としました。

○log_rotation_age
 ログのローテーションを行う間隔(単位:分)を指定します。
 うちの Vine ちゃんは1日分を1ログとしたので、「log_rotation_age = 1440」としました。

○log_rotation_size
 ログのローテーションを行うファイルサイズを指定します。
 ファイルサイズではローテーションしないので、「log_rotation_size = 0」としました。

○client_min_messages
 log_min_messages
 log_min_error_statement

 種類別のログの出力レベルを指定します。
 「client_min_messages = notice」、「log_min_messages = info」、「log_min_error_statement = info」としました。

○log_min_duration_statement
 SQLの実行時間(単位:ミリ秒)を指定し、この値を超えた実行時間のSQLがログ出力されます。
 値を変えれば、負荷が掛かっているSQLだけを出力させることもできます。
 全ての実行SQLを採取するため、「log_min_duration_statement = 0」としました。

○log_connections
 セッションの接続情報をログ出力するかの設定です。
 「log_connections = on」(セッション接続もログ出力)にしました。

○log_disconnections
 セッションの切断情報をログ出力するかの設定です。
 「log_disconnections = on」(セッション切断もログ出力)にしました。

○log_duration
 SQLの実行時間をログ出力するかの設定です。
 「log_duration = on」(実行時間を出力)にしました。

○log_line_prefix
 ログの接頭語を指定します。
 「log_line_prefix = '[%t] PID:%p DB:%d USER:%u '」(時間(%t)、プロセスID(%p)、DB名(%d)、ユーザ名(%u)を出力)としました。

他にも設定パラメータはありますが、うちの Vine ちゃんの変更点は上記です。

あとは、PostgreSQL を再起動すれば、ログ出力を開始します。
# /etc/rc.d/init.d/postgresql restart
Stopping postgresql service: [ OK ]
Starting postgresql service: [ OK ]


で、こんなログが出力されます。
[2009-07-23 00:00:00 JST] PID:24471 DB:[unknown] USER:[unknown] LOG: connection received: host=[local]
[2009-07-23 00:00:00 JST] PID:24471 DB:postgres USER:postgres LOG: connection authorized: user=postgres database=postgres
[2009-07-23 00:00:01 JST] PID:24471 DB:postgres USER:postgres LOG: duration: 111.875 ms statement: select pg_start_backup('online_backup')
;
[2009-07-23 00:00:01 JST] PID:24471 DB:postgres USER:postgres LOG: disconnection: session time: 0:00:00.15 user=postgres database=postgres
host=[local]
[2009-07-23 00:00:03 JST] PID:24509 DB:[unknown] USER:[unknown] LOG: connection received: host=[local]
[2009-07-23 00:00:03 JST] PID:24509 DB:postgres USER:postgres LOG: connection authorized: user=postgres database=postgres
[2009-07-23 00:00:03 JST] PID:24509 DB:postgres USER:postgres LOG: duration: 64.740 ms statement: select pg_stop_backup();
[2009-07-23 00:00:03 JST] PID:24422 DB: USER: LOG: archived transaction log file "000000010000000000000009.009A216C.backup"
[2009-07-23 00:00:03 JST] PID:24509 DB:postgres USER:postgres LOG: disconnection: session time: 0:00:00.10 user=postgres database=postgres
host=[local]

上記のログの内容はオンラインバックアップ時の「pg_start_backup」、「pg_stop_backup」です。
(赤字が「log_line_prefix」で設定した部分です)
情報量としては、十分です。


【注意点】
このログ、自動では削除されないため、ずっと残ります。。。
古い不要なログを削除しないと、「ちりも積もれば。。。ディスク圧迫」になるかもしれません。

ログの削除はVineLinux TIPS集(find でのファイル操作)の例で示している削除方法をシェル化して、自動実行させておけば十分でしょう。

コメント
この記事へのコメント
URL :
コメント :
パスワード :
管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
Template designed by アクセラと+αな生活

Powered by .
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。