新しくなったpg_monzでPostgreSQLのクラスタを監視する
近未来の技術トレンドを先取り! 「Tech-Sketch」出張所 第20回
ストリーミングレプリケーション
pg_monzはPostgreSQL単体で稼働するシングル構成の状態だけでなく、PostgreSQLのストリーミングレプリケーションを使った冗長構成の状態や、pgpool-IIを使った負荷分散クラスタの状態の監視を行うことができます。
PostgreSQLのストリーミングレプリケーションを使った冗長構成では、プライマリサーバ、スタンバイサーバがそれぞれどのサーバで稼働しているかを把握する必要がありますが、複数のPostgreSQLサーバにログインして確認するのは手間がかかります。pg_monzではアプリケーションpg.statusを表示することで各サーバの役割を俯瞰的に確認することができます。以下の例では3台のPostgreSQLサーバが稼働しており、pgsql01がプライマリサーバ、pgsql02、pgsql03がスタンバイサーバであることが分かります。
アプリケーションpg.stat_replicationを表示することでスタンバイサーバの状態を確認できます。以下の例ではプライマリサーバpgsql01にスタンバイサーバ192.168.1.14(pgsql02)、192.168.1.15(pgsql03)が接続されていること、レプリケーションの遅延は0byteであることが分かります。また、この環境では同期レプリケーションを設定しており、優先度(sync_priority)が1のpgsql02が同期スタンバイとして稼働していることが分かります。
pg_monzではこの他にもストリーミングレプリケーションに関して以下のような情報を収集できます。
- WAL sender/receiverのプロセス数
- スタンバイサーバでのリカバリと競合するためにキャンセルされた問い合わせ数
pgpool-II
pgpool-IIを使った負荷分散クラスタでは、クラスタの状態を把握するための情報をpgpool-IIからも得る必要があります。pg_monzではアプリケーションpgpool.nodesを表示することでpgpool-IIが管理しているバックエンドのPostgreSQLサーバの情報を確認できます。以下の例では3台のPostgreSQLサーバが正常稼働しており、192.168.1.13(pgsql01)がプライマリサーバ、192.168.1.14(pgsql02)、192.168.1.15(pgsql03)がスタンバイサーバであることが分かります。また、それぞれのサーバのステータスは正常(Backend statusが2.サーバダウン時は3が表示される)で、pgpool-IIからPostgreSQLサーバへSQLを負荷分散する際の重み付けは均等(0.33)に設定されていることが分かります。
アプリケーションpgpool.connectionsを表示することでpgpool-IIが保有するコネクション数を確認できます。以下の例ではpgpool01からバックエンドのPostgreSQLサーバ3台に1本ずつ計3本のコネクションを持っていることが分かります。また、クライアントに対してpgpool-IIは最大10本のコネクションを持つことが可能で、1本のコネクションを現在使用中であることが分かります。
pg_monzでは、この他にもpgpool-IIに関して以下のような情報を収集できます。
- pgpool-IIの死活状態
- watchdog利用時の仮想IP割り当て有無
- クエリキャッシュ利用時のキャッシュヒット率、件数
- pgpool-IIのログへのエラーメッセージ出力有無
この記事は参考になりましたか?
- 近未来の技術トレンドを先取り! 「Tech-Sketch」出張所連載記事一覧
- この記事の著者
-
中西 剛紀(TIS株式会社)(ナカニシ ヨシノリ)
TIS株式会社 IT基盤技術本部 OSS推進室所属。 OSS推奨ミドルウェアスタック「ISHIGAKI Template」の開発とともに、OSSのプロダクトサポートや技術支援を提供するサービスに従事している。過去の業務で様々なDBMSと苦楽を共にした後、現在はPostgreSQLに心酔。日本Pos...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
