ストリーミングレプリケーション
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のログへのエラーメッセージ出力有無