Understanding Postgres Enterprise Manager components and architecture
=====================================================================

Postgres Enterprise
ManagerPEMは、単一のグラフィカルインターフェイスを介して複数のPostgresサーバーを監視および管理します。
PEMは、インフラストラクチャの次の領域を監視できます。

-  **ホスト** —
   1つ以上のサーバー物理または仮想とそのオペレーティングシステム。

-  **データベースサーバー** —ホストで実行されているPostgreSQL、 EDB
   Postgres Advanced Server、またはEDB Postgres Extended
   Server旧2ndQPostgresの1つ以上のインスタンス。

-  **データベース** —
   1つ以上のデータベースと、テーブルやインデックスなどのスキーマオブジェクト。

..  Note::
   Postgresという用語は、 PostgreSQL、 EDB Postgres Advanced Server、またはEDB Postgres Extended Serverを指します。

PEMは個々のソフトウェアコンポーネントで構成されています。

-  **PEMサーバー** —
   PEMサーバーは、データを監視するためのデータリポジトリであり、エージェントとクライアントが接続するサーバーです。
   PEMサーバーは、PostgreSQLのインスタンス、監視データを保存するための関連データベース、およびWebサービスを提供するサーバーで構成されています。

-  **PEMエージェント** —
   PEMエージェントは、タスクを実行し、エージェントホストおよび監視対象のPostgresインスタンスからPEMサーバーに統計を報告します。単一のPEMエージェントは、エージェントがインストールされている同じホストまたは複数のリモートホストに存在するPostgresの複数のインストール済みインスタンスを監視できます。
   PEMサーバーインストールの一部としてエージェントをインストールするか、スタンドアロンエージェントをインストールできます。

-  **PEM Webクライアント** — PEM
   Webインターフェイスを使用すると、Postgresサーバーを管理および監視し、PEM拡張機能を使用できます。
   Webインターフェイスソフトウェアは、PEMサーバーと共にインストールされ、サポートされているWebブラウザーを使用してアクセスされます。

-  **SQLプロファイラー** —
   SQLプロファイラーは、PEMで分析するSQLプロファイラーツールの監視データとクエリプランを記録するPostgresサーバー拡張機能です。これはPEMのオプショナルコンポーネントですが、拡張機能は、使用するPostgresの各インスタンスで有効にする必要があります。
   SQLプロファイラーは、PEMサーバーで管理されているものだけでなく、PostgresのEDBディストリビューションのサポートされているバージョンで使用できます。詳細およびサポートされているバージョンについては、
   :ref:`Installing SQL Profiler <Installing the SQL Profiler extension>` を参照してください。

PEMアーキテクチャ
-----------------

次のアーキテクチャ図は、PEMサーバー、クライアント、管理対象および非管理対象のPostgresサーバー間の関係を示しています。

.. figure:: images/pem_architecture.png
   :width: 70% 
   :alt: PEM Architecture

   PEM Architecture

PEMサーバー
^^^^^^^^^^^

.. figure:: images/pem_server.png
   :width: 70% 
   :alt: PEM Server

   PEM Server

PEMサーバはPostgresのインスタンス、クライアントにWebサービスを提供するApache
Webサーバのインスタンス、およびPEMエージェントで構成されています。
PEMは、サーバーサイドの暗号化プラグインを使用して認証証明書を生成します。

PostgresのインスタンスデータベースサーバとApacheウェブサーバHTTPDのインスタンスは、同じホスト上または別のホスト上にあってもかまいません。

..  Note::
   すべてのPEM機能は、選択したバックエンドデータベースサーバーPostgreSQLまたはEDB Postgres Advanced Serverで利用できます。

-  **Postgresインスタンスデータベースサーバー**
   —これはバックエンドデータベースサーバーです。 ``pem``
   という名前のデータベースをホストし、PEMサーバーのリポジトリとして機能します。
   ``pem``
   データベースには、各監視対象ホスト、サーバー、およびデータベースから収集されたメトリックデータを保存する複数のスキーマが含まれています。

   -  ``pem``
      —このスキーマは、PEMアプリケーションのコアです。これには、アプリケーションに必要な構成ファンクション、テーブル、またはビューの定義が含まれています。
   -  ``pemdata``
      —このスキーマには、監視対象データの現在のスナップショットが保存されます。
   -  ``pemhistory`` —このスキーマには、履歴監視データが保存されます。

-  **Apache WebサーバーHTTPD** — PEM
   Webアプリケーションは、HTTPDを使用したWSGIアプリケーションとして展開され、クライアントにWebサービスを提供します。これは次で構成されています。

   -  **Webコンテンツプレゼンテーション**
      —プレゼンテーションレイヤーは、Webアプリケーションブラウザやログインページなどによって作成されます。
   -  **Rest API** — REST
      APIにより、他のアプリやサービスとの統合が可能になります。
   -  **データベースサーバーの管理/management**
      —データベースサーバーの管理と、管理対象サーバーと非管理対象サーバーのCREATE、ALTER、DROPなどの管理アクティビティを実行できます。
   -  **ダッシュボード/チャートの生成**
      —内部的に、Webアプリケーションには、ダッシュボードとチャートを生成する機能が含まれています。
   -  **管理ツール** — Audit Manager、Capacity Manager、Log
      Manager、Postgres Expert、Postgres Log Analysis
      Expert、およびチューニングウィザードは、Web ppplication.
   -  で利用できます。他のツールは、管理対象または非管理対象サーバーで機能を提供します。

      -  **SQLプロファイラーUIの統合** &mdash ;
         SQLプロファイラーは、セッションコンテンツの簡単に分析されたトレースを生成します。
      -  **クエリエディタ/データビュー** — Query
         Editorを使用すると、データの照会、編集、および表示ができます。
      -  **Debugger** —デバッガーは、クエリーのデバッグに役立ちます。
      -  **パフォーマンス診断**
         —パフォーマンス診断は、Postgresインスタンスのパフォーマンスを分析するのに役立ちます。

専用マシンを使用して、PEMバックエンドデータベースの運用インスタンスをホストすることをお勧めします。監視対象のデータベースサーバーの数、およびサーバーが処理しているワークロードによっては、ホストは高レベルのデータスループットの影響を受ける場合があります。

PEMエージェント
^^^^^^^^^^^^^^^

.. figure:: images/pem_agent.png
   :width: 70% 
   :alt: PEM Agent

   PEM Agent

PEMエージェントは、マシンとオペレーティングシステムと、それらがバインドされている各Postgresインスタンスから監視データを収集します。各PEMエージェントは1つの物理マシンまたは仮想マシンを監視でき、他のシステムにインストールされている複数のデータベースサーバーをローカルに監視できます。これらのサーバーは、同じシステムまたはリモートにインストールできます。また、サーバーのシャットダウン、
SQLプロファイラーのトレース、カスタムジョブなど、ユーザーがスケジュールした他のタスクを実行する責任もあります。

PEMエージェントは、PEMサーバーのインストール時にデフォルトでPEMサーバーにインストールされます。通常、PEMホスト上のPEMエージェントと呼ばれます。別に、PEMを使用して監視するPostgresインスタンスをホスティングする他のサーバーにPEMエージェントをインストールすることもできます。

ローカルで監視するかリモートでモニタリングかにかかわらず、PEMエージェントは、SSL証明書ベースの認証を使用して、PostgreSQLのlibpqを使用してPEMサーバーに接続します。
WindowsのPEMエージェントインストーラーとLinuxのpemworker
CLIは、各エージェントをPEMサーバーに登録し、必要な証明書を生成およびインストールします。

PEMエージェントとPEMサーバーの間は一方通行だけです。
PEMエージェントは常にPEMサーバーに接続します。

PEMエージェントは、監視対象の各データベースサーバーに接続できる必要があります。この接続は、TCP/IP接続またはオプションでUnixホスト上のUnixドメインソケットを介して確立され、オプションでSSLを使用できます。監視対象サーバーへの接続と認証を構成する必要があります。

構成が完了すると、各エージェントは、ホストと、監視対象の各データベースサーバーとデータベースに関する統計情報やその他の情報を収集します。各情報は
*メトリック* と呼ばれ、 *プローブ*
によって収集されます。ほとんどのプローブは、効率のために一度にマルチプルのメトリックを収集します。収集されるメトリックの例は次のとおりです。

-  ディスクI/O統計

-  ネットワーク統計

-  データベースサーバーバージョン文字列

-  データベースサーバー構成オプションGUC値

-  テーブルアクセス統計

-  テーブルとインデックスのサイズ

PEMプローブのリストについては、 :ref:`Probes <Probes>` を参照してください。

デフォルトでは、データベースサーバにバインドされたPEMエージェントはOS
/データベースモニタリング統計を収集し、その特定のデータベースサーバのスケジュールされたタスク/ジョブを実行し、PEMサーバーの\ ``pem``
データベースにデータを保存します。

アラート処理、SNMP /
SMTPスプーラー、およびNagiosスプーラーデータは、PEMサーバー上の\ ``pem``
データベースに保存され、デフォルトでPEMホスト上のPEMエージェントによって処理されます。ただし、PEMエージェントのSNMP
/
SMTPおよびNagiosパラメーターを調整することにより、他のPEMエージェントによる処理を有効にできます。

これらのパラメーターの詳細については、 :ref:`PEMサーバー構成の編集 <PEMサーバー構成の編集>` を参照してください。

PEM Webクライアント
^^^^^^^^^^^^^^^^^^^

PEMクライアントは、サポートされているブラウザーで実行されるWebベースのアプリケーションです。クライアントのWebインターフェイスはPEMサーバーに接続し、管理対象または非管理対象サーバーと、それらに存在するデータベースとスキーマを直接管理できます。

クライアントでは、ダッシュボード、 Postgres Log Analysis
Expert、Capacity
Managerなどの機能を介してサーバーに記録されたデータを利用するPEM機能を使用できます。

SQLプロファイラー拡張機能
^^^^^^^^^^^^^^^^^^^^^^^^^

すべてのサーバーにSQLプロファイラー拡張機能をインストールする必要はありませんが、
SQLプロファイラーを使用する各サーバーに拡張機能をインストールして有効にする必要があります。監視されていない開発サーバーにSQLプロファイラー拡張機能をインストールして有効にすることもできます。アドホックに使用するためにSQLプロファイラー拡張機能を一時的にインストールすることもできます。

PEMで管理されていないサーバーでSQLプロファイラーを使用できます。ただし、スケジュールされたトレースを実行するには、サーバーに拡張機能をインストールして有効にし、インストールおよび構成済みのPEMエージェントで管理する必要があります。

詳細については、 :ref:`Installing SQL Provider <Installing the SQL Profiler extension>` および :ref:`Using SQL Profiler <Using SQL Profiler>` を参照してください。
