連載
» 2017年04月05日 05時00分 UPDATE

データベースサポート最前線の現場から(10):【PostgreSQL】本番稼働中のPostgreSQLシステムで押さえておくべき「3つ」の監視項目 (1/2)

データベース管理システムの運用でトラブルが発生したらどうするか。データベースサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、監視ツールを活用してPostgreSQLを監視する際に最低限押さえておくべき「監視項目」を紹介します。

[家島拓也,株式会社アシスト]
※本連載は、アシストのデータベースサポートスペシャリストによる「Database Support Blog」より、提供社の許可の下、一部修正して転載するものです。

連載バックナンバー

 アシストのサポートセンターには、「“本番稼働中”のデータベースの監視」に関する問い合わせがよくあります。そこで今回は、監視ツールを活用してPostgreSQLを監視する際に最低限押さえておくべき3つの「監視項目」を紹介します。

  1. 「プロセス」の監視
  2. 「ログファイル」の監視
  3. 「ディスク空き容量」の監視

 この3つの情報を適切に採取し、監視ツールで監視するようにしておくことで、予期せぬ問題の対処や、ディスクフルによるデータベースの異常停止への対応など、「現時点のデータベース稼働状態の把握」と、「将来的なトラブルシューティング」に役立てられます。

1:「プロセス」の監視

監視目的と監視対象について

 「プロセス」の情報は、データベースの異常停止をより早く検知して、復旧までの時間を短くすることを目的に、システムの死活状況を監視するために採取します。

 PostgreSQLでは、マスタープロセスである「postmaster」の監視のみを推奨します。他の子プロセスである「postgres」の情報までは監視する必要はありません。システムが異常停止した場合には、マスタープロセスも異常停止するか、マスタープロセスによって該当プロセスが再起動されるかのいずれかであるためです。

監視ツールで設定する「マスタープロセス数」について

 監視ツールによる障害の誤検知を防ぐために、監視ツールでは、マスタープロセス数が「0」である場合を異常な状態として検知するようにしましょう。

 UNIX系システムでのPostgreSQLマスタープロセスは、新規接続のたびに自身のプロセスを複製(fork)し、バックエンドプロセス(サーバプロセス)を生成します。このため、一時的にマスタープロセスが2つ以上存在することがあります。これは仕様に沿った動作であり、異常ではありません。異常検知の条件を「1以外」にしない理由はこちらにあります。

$ ps aux|grep /bin/postgres|grep -v gdb
p945 9077 0.0 0.0 42072 5664 pts/20 S 16:10 0:00 /home/p945/pgHome/bin/postgres
p945 9515 0.0 0.0 42072 2152 pts/20 t 16:34 0:00 /home/p945/pgHome/bin/postgres # <--複製されたプロセス
マスタープロセスが2つ以上存在する際の「ps aux」コマンドの出力例

2:「ログファイル」の監視

監視目的と監視対象について

 「ログファイル」は、パフォーマンスの劣化やデータ破損など、データベースの異常をより早く検知して対処するために採取します。

 PostgreSQLのログファイルでは、発生した問題の「深刻度」ごとにメッセージレベルが設定されます。

PostgreSQLのログファイルに付加されるメッセージの深刻度レベル
深刻度レベル 内容 syslog eventlog
DEBUG1..DEBUG5 開発者向けの連続的でより詳細な情報 DEBUG INFORMATION
INFO VACUUM VERBOSEの出力などの、ユーザーによって暗黙的に要求された情報 INFO INFORMATION
NOTICE 長い識別子の切り詰めに関する注意など、運用上の補助になる情報 NOTICE INFORMATION
WARNING トランザクションブロック外でのCOMMITのような警告情報 NOTICE WARNING
ERROR 現在のコマンドを中断させる原因となったエラーの情報 WARNING ERROR
LOG チェックポイントの活動のような、管理者向けの情報 INFO INFORMATION
FATAL 現在のセッションを中断させる原因となったエラーの情報 ERR ERROR
PANIC 全てのデータベースセッションを中断させる原因となった、より深刻なエラーの情報 CRIT ERROR
出典:PostgreSQL 9.4.5文書 18.8. エラー報告とログ取得

 このうち、緊急度の高い「ERROR」「FATAL」「PANIC」を監視項目として追加します。

 なお、スロークエリの情報は「LOG」のレベルで出力されます。スロークエリを検知する設定を行っている場合には、LOGも監視項目に追加しましょう。

UNIX系システムにおけるログファイルのパーミッションについて

 UNIX系システムにおけるPostgreSQLの標準ログのパーミッションは「0600」ですが、親ディレクトリのPGDATAのパーミッションは「0700」であるため、監視ツールからPostgreSQLの標準ログを監視できない場合があります。PostgreSQLインストールユーザー以外で監視ツールを使用する場合は、以下のいずれかの方法で対処できます。

  • (方法1)PostgreSQL標準ログのパーミッションと出力先を変更する

 「PGDATA/postgresql.conf」の以下2つのパラメーターを変更します。

log_file_mode=0640
log_directory='/var/log'
「postgresql.conf」の修正内容

 設定変更後、「pg_ctl reload」コマンドで設定を反映します。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。