Monitoring PGD Proxy
====================

プロキシは、クラスターとグループレベル、またはプロセスレベルで監視できます。

クラスターを介したモニタリング
------------------------------

SQLを使用する
^^^^^^^^^^^^^

すべてのグループの現在の構成は、 :ref:`bdr.node_group_routing_config_summary <bdr.node_group_routing_config_summary>` ビューに表示されます。

 :ref:`bdr.node_routing_config_summary <bdr.node_routing_config_summary>` ビューには、現在のノードごとのルーティング構成が表示されます。

 :ref:`bdr.proxy_config_summary <bdr.proxy_config_summary>` は、プロキシごとの構成を示します。

プロセスレベルでのモニタリング
------------------------------

プロキシのヘルスチェック
^^^^^^^^^^^^^^^^^^^^^^^^

PGDプロキシは、次のHTTPヘルスチェックAPIエンドポイントを提供します。
APIエンドポイントは\ ``GET``
要求に応答します。エンドポイントを使用する前に、エンドポイントを有効にして構成する必要があります。
 :ref:`Postgres configuration <Postgres configuration>` を参照してください。

.. csv-table::
  :header: Endpoint,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `/health/is-ready`,プロキシが現在の書き込みリーダーに接続を正常にルーティングできるかどうかを確認します。
  `/health/is-live`,プロキシが実行されているかどうかを確認します。
  `/health/is-write-ready`,プロキシが現在の書き込みリーダーPGD 5.5.0以降に接続を正常にルーティングできるかどうかを確認します。
  `/health/is-read-only-ready`,プロキシが読み取り専用接続を正常にルーティングできるかどうかを確認しますPGD 5.5.0以降。

準備状況
^^^^^^^^

有効な\ ``GET`` 要求を受信したとき

-  デフォルト書き込みモードでは、プロキシは現在の書き込みリーダーに接続を正常にルーティングできるかどうかを確認します。

-  読み取り専用モードの場合、プロキシは読み取り専用接続を正常にルーティングできるかどうかを確認します。

-  いずれのモードでも、プロキシは最初に現在の書き込みリーダーに接続を正常にルーティングできるかどうかを確認します。それができる場合、チェックは成功です。そうでない場合、読み取り専用接続をルーティングできるかどうかを確認します。それができる場合、チェックは成功です。そうでない場合、チェックは失敗します。

チェックが正常に返された場合、APIは\ ``true``
とHTTPステータスコード\ ``200 (OK)``
を含む本文で応答します。それ以外の場合、\ ``false``
を含む本文をHTTPステータスコード\ ``500 (Internal Server Error)``
とともに返します。

ライブネス
^^^^^^^^^^

Livenessチェックは、HTTPステータスコード\ ``200 (OK)`` を含む\ ``true``
またはErrorのいずれかを返します。
PGDプロキシサービスが開始に失敗するか終了すると、要求をリッスンするHTTPサーバーが停止するため、
``false`` は返されません。

プロキシログの場所
------------------

プロキシは、他のシステムサービスで監視できるシステムログにログを書き込みます。

syslog
^^^^^^

-  Debianベース - ``/var/log/syslog``

-  Red Hatベース - ``/var/log/messages``

``journalctl``
コマンドを使用して、PGDプロキシのトラブルシューティングのためのログをフィルタリングおよび表示します。以下は、クイックリファレンスのためのサンプルコマンドです。

.. code:: sh

   journalctl -u pgd-proxy -n100 -f
   journalctl -u pgd-proxy --since today
   journalctl -u pgd-proxy --since "10 min ago"
   journalctl -u pgd-proxy --since "2022-10-20 16:21:50" --until "2022-10-20 16:21:55"
