Registering a PEM agent#

PEMエージェントを使用する前に、PEMサーバーに登録する必要があります。 PEMサーバーパッケージによってインストールされたPEMエージェントは、サーバーの構成中に自動的に登録されます。 他のすべてのエージェントの場合、これらの手順に従う必要があります。

注釈

PEMエージェントをアップグレードした後、再起動する必要があります。再度登録する必要はありません。

PEMエージェントを登録する方法#

LinuxおよびWindowsホストでは、PEMエージェントパッケージには、 pemworkerと呼ばれるコマンドラインユーティリティが含まれています。これを使用して、 registering the PEM agent を含む管理タスクを実行できます。

Windowsでは、PEMエージェントグラフィカルインストーラーを使用して、インストール時にエージェントを登録できます。この便利なオプションは、pemworkerユーティリティが提供するすべての可能性をサポートしているわけではありません。インストーラーにエージェントを登録したくない場合は、 Register now チェックボックスをオフにします。詳細については、 installation instructions を参照してください。

pemworkerユーティリティを使用したPEMエージェントの登録#

pemworkerユーティリティは、PEMエージェントとともに自動的にインストールされます。これは、 Linuxでは/usr/edb/pem/agent/bin ディレクトリ、 WindowsC:\Program Files\edb\pem\agent-x64\bin にあります。エージェントを登録するには、PEMサーバーのパスワードを設定し、例に示すようにユーティリティを呼び出し、必要に応じてテーブルから関連オプションを追加します。各オプションの後には、対応する値を続けます。

Linux#

export PEM_SERVER_PASSWORD=edb
#  Running as root

pemworker --register-agent

Windows#

set PEM_SERVER_PASSWORD=edb
#  Running as admin

./pemworker.exe REGISTER

Option

Description

--pem-server

PEMバックエンドデータベースサーバーのIPアドレス。このパラメーターは必須です。

--pem-port

PEMバックエンドデータベースサーバーのポート。デフォルト値は`5432`です。

--pem-user

PEMバックエンドデータベースサーバーのスーパーユーザー権限を持つデータベースユーザーの名前。このパラメーターは必須です。

--pem-agent-user

PEMサーバーのバックエンドデータベースサーバーに接続するエージェントユーザー。

--cert-path

証明書が作成されるディレクトリへの完全なパス。パスを提供しない場合、証明書はLinuxでは`~/.pem`、 Windows`%APPDATA%/pem`で作成されます。

--config-dir

構成ファイルのディレクトリパス。デフォルトは`<pemworker path>/../etc`です。

--display-name

PEMブラウザツリーに表示されるエージェントのわかりやすい名前。 PEM 9.6以降では、デフォルトはホストの完全修飾ドメイン名FQDNであり、このオプションが設定されていない場合はホスト名にフォールバックします。 PEM 9.6より前のリリースの場合、デフォルトはホスト名です。

--force-registration

`force_registration`句を含めて、指定された引数でエージェントを登録します。この句は、既存のエージェント構成をオーバーライドする場合に役立ちます。デフォルト値は`Yes`です。

--group

エージェントが表示されるグループの名前。

--team

監視対象データベースサーバーへのアクセスを持つPEMバックエンドデータベースサーバー上のデータベースロールの名前。

--owner

エージェントを所有するPEMバックエンドデータベースサーバー上のデータベースユーザーの名前。

--allow_server_restart

`allow_server_restart`パラメーターを有効にして、PEMが監視対象サーバーを再起動できるようにします。デフォルト値は`True`です。

--allow-batch-probes

`allow-batch-probes`パラメーターを有効にして、PEMがこのエージェントでバッチプローブを実行できるようにします。デフォルト値は`False`です。

--batch-script-user

バッチ/シェルスクリプトの実行に使用するオペレーティングシステムユーザー。デフォルト値はnoneです。このパラメーターを空白のままにするか、指定されたユーザーが存在しない場合、スクリプトは実行されません。

--enable-heartbeat-connection

`enable-heartbeat-connection`パラメーターを有効にして、PEMエージェントとサーバーの間に専用のハートビート接続を作成し、アクティブステータスを更新します。デフォルト値は`False`です。

--enable-smtp

`enable-smtp parameter`を有効にして、PEMエージェントがPEMサーバーに代わってメールを送信できるようにします。デフォルト値は`False`です。

--enable-snmp

`enable-snmp parameter`を有効にして、PEMエージェントがPEMサーバーに代わってSNMPトラップを送信できるようにします。デフォルト値は`False`です。

-o

構成ファイルオプションをオーバーライドするかどうかを指定します。

pemworkerユーティリティの認証#

PEMデータベースに変更を加える前に、接続はPEMデータベースサーバーで認証されます。 pemworkerユーティリティを呼び出すときに、PEMサーバーの管理ユーザーロールpostgresに関連付けられたパスワードを提供する必要があります。管理パスワードは3つの方法で指定できます。

  • PEM_SERVER_PASSWORD 環境変数を設定します。

  • PGPASSWORD キーワードを使用して、コマンドラインにパスワードを入力します。

  • .pgpass ファイルにエントリーを作成します。

パスワードを入力しない場合、パスワード認証エラーが発生します。認証が成功すると、その他の不足している必須情報の入力を求められます。登録が完了すると、サーバーはエージェントが正常に登録されたことを確認します。

PEMエージェントの登録解除#

pemworkerユーティリティを使用して、PEMエージェントの登録を解除できます。エージェントの登録を解除するには、以下の例に示すようにpemworkerユーティリティを呼び出します。

Linux#

#  Running as root

pemworker --unregister-agent

Windows#

./pemworker.exe UNREGISTER-AGENT

pemworkerユーティリティを呼び出すときに、コマンド文字列にコマンドラインオプションを追加します。各オプションの後には、対応する値を続けます。

Option

Description

--pem-user <username>

PEMバックエンドデータベースサーバーのデータベースユーザーpem_adminロールのメンバーの名前を指定します。このパラメーターは必須です。

--config-dir

構成ファイルのディレクトリパスを指定します。デフォルトは`"<pemworker path>/../etc"`です。

高度な使用法#

以下は、PEMエージェント登録の詳細なオプションの一部です。

エージェントIDの設定#

登録された各PEMエージェントには、一意のエージェントIDが必要です。

below に示すように、 -o

オプションを使用して値が提供されない限り、値max(id)+1 は各エージェントIDに割り当てられます。

デフォルト構成のオーバーライド-例#

この例は、デフォルト構成をオーバーライドしてPEMエージェントを登録する方法を示しています。

コマンドラインを使用してPEMエージェントを登録します。 -o オプションを使用して、agent_id 値8を割り当てます。

#  Running as root

/usr/edb/pem/agent/bin/pemworker --register-agent \
- -pem-server pemserver \
- -pem-user postgres \
- -pem-port 5432 \
- -display-name agent8 \
- o agent_id=8
__OUTPUT__
Postgres Enterprise Manager Agent registered successfully!

8のagent_id が利用可能なため、PEMエージェントは正常に登録されました。指定されたIDが既存のエージェントによって既に使用されている場合、エラーがスローされます。

コマンドラインを使用してPEMエージェントを登録します。既存のSSL証明書とキーファイルを割り当てて、特定のエージェントIDに対して新しい証明書が生成されないようにします。 SSL証明書とキーファイルは、データベースユーザーagent<ID> に対して有効である必要があります。<ID> は、コマンドラインを使用して指定されたものと同じである必要があります。 -o オプションを使用します。

#  Running as root

#  List the location of valid SSL certificates and key files.

ls -l /root/.pem/agent5.*
- rw------- 1 root root 2192 Nov  7 11:27 /root/.pem/agent5.crt
- rw------- 1 root root 3244 Nov  7 11:27 /root/.pem/agent5.key

#  Register the PEM agent using command line. Assign the

#  SSL certificates and key files using the -o option.

/usr/edb/pem/agent/bin/pemworker --register-agent \
- -pem-server pemserver \
- -pem-user postgres \
- -pem-port 5432 \
- -config-dir /tmp/pem-config \
- -display-name agent5 \
- o agent_id=5 \
- o agent_ssl_crt=/root/.pem/agent5.crt \
- o agent_ssl_key=/root/.pem/agent5.key
__OUTPUT__
Postgres Enterprise Manager Agent registered successfully!
``` 有効なSSL証明書とキーファイルは、適切な権限で指定された場所で利用できるため、PEMエージェントは正常に登録されます。証明書またはキーファイルが有効でない場合、または適切な権限がない場合、エラーがスローされます。

###  非rootユーザーアカウントを使用してLinuxでPEMエージェントを登録する

非rootユーザーアカウントを使用してPEMエージェントを登録するには、最初にrootユーザーとしてPEMエージェントをインストールする必要があります。インストール後、edbなどの非rootユーザーのIDを引き継ぎます。次に

1. edbとしてログインします。 `pem` および`logs` ディレクトリを作成し、読み取り、書き込み、および実行権限を割り当てます。

```shell
    # Running as nonroot user edb
    mkdir /home/edb/pem
    mkdir /home/edb/pem/logs
    chmod 700 /home/edb/pem
    chmod 700 /home/edb/pem/logs
  1. エージェントをPEMサーバーに登録します。

export PEM_SERVER_PASSWORD=edb

# Use the following command to create agent certificates and an agent
# configuration file (`agent.cfg`) in the `/home/edb/pem` directory.
/usr/edb/pem/agent/bin/pemworker --register-agent --pem-server <172.19.11.230> --pem-user postgres --pem-port 5432 --display-name non_root_pem_agent --cert-path /home/edb/pem --config-dir /home/edb/pem

# Use the following command to assign read and write permissions to
# these files:
chmod -R 600 /home/edb/pem/agent*
  1. agent.cfg ファイルのパラメーターを変更します。

vi /home/edb/pem/agent.cfg
agent_ssl_key=/home/edb/pem/agent<id>.key
agent_ssl_crt=/home/edb/pem/agent<id>.crt
log_location=/home/edb/pem/worker.log
agent_log_location=/home/edb/pem/agent.log

<id> は、割り当てられたPEMエージェントIDです。

  1. tmp ディレクトリを作成し、環境変数を設定して、エージェントを起動します。

mkdir /home/edb/pem/tmp

# Create a script file, add the environment variable, give permissions, and execute:
vi /home/edb/pem/run_pemagent.sh
#!/bin/bash
export TEMP=/home/edb/agent/tmp
/usr/edb/pem/agent/bin/pemagent -c /home/edb/agent/agent.cfg
chmod a+x /home/edb/pem/run_pemagent.sh
cd /home/edb/pem
./run_pemagent.sh

これで、PEMエージェントが登録され、edbユーザーで起動されました。マシンが再起動しても、このエージェントは自動的に再起動しません。前述のコマンドを使用して手動で起動する必要があります。

  1. オプションで、ルートユーザーとしてこのPEMエージェントのサービスを作成して、次のようにマシンの再起動時にこのエージェントを自動的に起動できます。

a.構成ファイルパスの値と、pemagent サービスファイルのユーザーをスーパーユーザーとして更新します。

# Running as superuser
sudo vi  /usr/lib/systemd/system/pemagent.service
[Service]
Type=forking
WorkingDirectory=/home/edb/pem
Environment=LD_LIBRARY_PATH=/usr/edb/pem/agent/lib:/usr/libexec/edb-snmp++/lib
Environment=TEMP=/home/edb/pem/tmp
ExecStart=/usr/edb/pem/agent/bin/pemagent -c /home/edb/pem/agent.cfg

b.実行中のエージェントプロセスを停止し、エージェントサービスを再起動します。

# Find the process id of the running pem agent and pem worker process and kill that process
ps -ax | grep pemagent
kill -9 <process_id_of_pemagent>
ps -ax | grep pemworker
kill -9 <process_id_of_pemworker>
# Enable and start pemagent service
sudo systemctl enable pemagent
sudo systemctl start pemagent
sudo systemctl status pemagent
  1. PEMダッシュボードでエージェントのステータスを確認します。

注釈

  • root権限または別のユーザーたとえば、enterprisedbが所有するファイルへのアクセスを必要とするプローブとジョブは失敗します。 - agent.cfg ファイルをデフォルトの場所から別の場所に移動すると、PEMダッシュボードにエージェントステータスが`unknown` として表示される場合があります。詳細については、 Troubleshooting agent issues を参照してください。