Database Support Blog

  • PostgreSQL
2015.12.21

PostgreSQLの監視で押さえておきたい3つの監視項目

PostgreSQLで必要な監視項目は?

この記事は PostgreSQL Advent Calendar 2015 - Qiita の21日目の記事です。20日目は _john_doe_様 でした。

2015年もアシストのサポートセンターには様々なお問い合わせをいただきましたが、その中でも本番稼働中のデータベースの監視に関するお問い合わせが多かったです。そこで、今回は監視ツールでPostgreSQLを監視する際に最低限押さえておきたい3つの監視項目を紹介します。これらを監視ツールから監視することで、データベースの稼働状態の把握や、将来的に発生しうる問題を未然に防ぐことに役立ちますので、ぜひ設定しましょう。

お客様によって利用している監視ツールは様々ですので、今回は監視項目についてのみ解説します。

3つの監視項目

監視ツールでPostgreSQLを監視する際に最低限押さえておきたい監視項目は以下の3つです。

これら3つの監視を行うことで、予期せぬ問題やディスクフルによるデータベースの異常停止、今後発生しうる問題により早く対処できます。

以降では、各項目ごとの監視対象や設定時の注意点を紹介していきます。

1. プロセスの監視

監視目的/監視対象

データベースの異常停止をより早く検知して復旧までの時間を短くするために、プロセスの死活監視を行いましょう。マスタープロセス(postmasterプロセス)の監視のみを推奨します。他のpostgres子プロセスについては監視の必要がありません。異常停止した場合、マスタープロセスも異常停止するか、マスタープロセスによって該当プロセスが再起動されるかのいずれかであるためです。

注意点

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

監視ツールによる障害の誤検知を防ぐために、監視ツールではマスタープロセス数が1以外の場合を異常とするのではなく、0の場合を異常な状態として検知するように設定しましょう。Unix系システムでは、PostgreSQLマスタープロセスは新規接続の度に自身のプロセスを複製(fork)し、バックエンドプロセス(サーバープロセス)を生成します。このため、以下の例のように一時的にマスタープロセスが2つ以上存在することがあります。これは仕様動作であり、異常な状態ではありません。

(マスタープロセスが2つ以上存在する際のps auxの結果例)

$ 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. ログファイルの監視

監視目的/監視対象

パフォーマンス劣化やデータ破損などデータベースの異常をより早く検知して対処するために、ログファイルのメッセージを監視しましょう。PostgreSQLでは発生した問題の深刻度ごとに メッセージレベル が設定されています。この中でもERROR、FATAL、PANICはデータベースの稼働に影響する可能性があるため、監視の項目に追加します。

また、 以前の記事 で紹介したスロークエリを検知する設定を行われている場合は、LOGのメッセージレベルでログファイルにメッセージが出力されますので、LOGのメッセージについても監視項目に追加しましょう。

注意点

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

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

PGDATA/postgresql.confの以下2つのパラメーターを変更します。設定変更後は、pg_ctl reloadコマンドで設定を反映する必要があります。

(postgresql.confの設定例)

log_file_mode=0640
log_directory='/var/log'


syslogやApacheのrotatelogsなどの外部のログ・ローテーション・プログラムを使用します。syslogを使用する場合は、PGDATA/postgresql.confの以下のパラメーターを変更します。設定変更後は、pg_ctl reloadコマンドで設定を反映する必要があります。

(postgresql.confの設定例)

--PostgreSQL標準ログに加えてsyslogにもログを出力する場合
log_destination='stderr,syslog'

--syslogにのみログを出力する場合
log_destination='syslog'


Apacheのrotatelogsを使用する場合は、以下のようにサーバーの標準エラー出力をパイプでrotatelogsコマンドに渡してください。

(サーバーの標準エラー出力をrotatelogsコマンドに渡す例)

$ pg_ctl start | rotatelogs /var/log/pgsql_log 86400


3. ディスク空き容量の監視

監視目的/監視対象

データ破損やデータベースの異常停止を予防するために、ディスクの空き容量を監視しましょう。PGDATAやTABLESPACE機能やアーカイブWALファイルで使用しているディスク空き容量の監視を推奨します。これらで使用するディスクの空き容量が不足した場合、データやWALファイルが破損しやすい状態になるためです。また、WALファイルを格納するファイルシステムが容量不足になった場合、データベースサーバーはPANICのメッセージレベルで異常停止します。

注意点

ディスク空き容量監視のしきい値について

ディスク容量や監視ツールから警告を検知した後の処理内容によってディスク空き容量監視のしきい値の設定は変わると思いますが、ディスク空き容量監視のしきい値には、対処を行うまでの時間も考慮して余裕を持った値を設定しましょう。

例えば、ディスク空き容量が1%になった時点で検知できても、対処を行う時にはデータやWALファイルの破損やデータベースが異常停止している可能性があります。しかし、ディスク空き容量が20%未満になった時点で関係者にメールを飛ばす設定が行われていれば、データベースの稼働に影響を与えることなく余裕を持って対処できます。

まとめ

今回は、 監視ツールでPostgreSQLを監視する際に最低限押さえておきたい監視項目として、プロセスの監視、ログファイルの監視、ディスク空き容量の監視の3つを紹介しました。これらを監視ツールから監視することでデータベースの障害や障害に繋がりうる問題により早く対処できますので、ぜひこの機会に今回紹介した監視項目の設定が行われているかを確認してみてください。

2015年のDatabase Support Blog(PostgreSQL)は本記事が最後です。2016年もサポートセンターにお問い合わせをいただくことの多い問題(お客様がお困りになることが多い問題)を紹介することで、データベースを管理される方のお役に少しでも立てればと思っています。

皆様、良いクリスマスを、そして良いお年をお迎えください。

PostgreSQL Advent Calendar 2015 22日目の担当は tom__bo_cs様 です。


■本記事の内容について
 本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。

■商標に関して
 ・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
 ・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
  文中の社名、商品名等は各社の商標または登録商標である場合があります。

関連している記事

  • EDB
  • PostgreSQL
2024.01.16

EDBがもたらすデータベースの新たな価値 ~ EDB社Field CTO Ajit Gadge氏来日、セミナー講演レポート ~

EDB社のAjit Gadge氏を招き「PostgreSQLユーザーに捧ぐ、EDBを使ったDB機能向上とコスト削減の両立」セミナーを開催しました。DB市場の現状やトレンド、EDBの最新動向について紹介しております。アシストセッションのアーカイブ配信の視聴申し込みも可能です。ぜひご覧ください。

  • PostgreSQL
  • EDB
2023.12.20

PostgreSQLのSQLチューニングを体験してみよう!

35年以上教育事業を展開しているアシストが新たに取り組み始めた「ポスグレ学園」。連載最終回となる9回目の記事では、「PostgreSQL SQLチューニング実践」のワークショップ主管である 田中 健一朗 にインタビューしました。

  • PostgreSQL
  • EDB
2023.10.30

データベースの健康診断! ~ PostgreSQL DB稼働分析体験 ~

35年以上教育事業を展開しているアシストが新たに取り組み始めた「ポスグレ学園」。連載8回目となる今回の記事では、PostgreSQL DB稼働分析ワークショップの主管である保田 公貴にインタービューしました。

ページの先頭へ戻る