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 the SQL Profiler extension <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サービスを提供するWebサーバ、およびPEMエージェントで構成されています。
PEMは、サーバーサイドの暗号化プラグインを使用して認証証明書を生成します。

PostgresのインスタンスとWebサーバーは、同じホスト上または別のホスト上にあってもかまいません。

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

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

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

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

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

    - **SQLプロファイラーUIの統合** -
      SQLプロファイラーは、セッションコンテンツの簡単に分析されたトレースを生成します。
    - **クエリエディタ/データビュー** -
      クエリエディタでは、データを照会、編集、および表示できます。e
      db_tran_20 **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:`プローブ <プローブ>` を参照してください。

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

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

これらのパラメーターの詳細については、 :ref:`サーバー構成パラメーター - リファレンス <サーバー構成パラメーター - リファレンス>` を参照してください。

PEM Webアプリケーション
^^^^^^^^^^^^^^^^^^^^^^^

WebアプリケーションはPEMサーバーに接続し、管理対象または非管理対象サーバーと、それらに存在するデータベースとスキーマを直接管理できます。

Webアプリケーションでは、ダッシュボードやCapacity
Managerなどの機能を介してサーバーに記録されたデータを利用するPEM機能を使用できます。

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

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

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

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