Troubleshooting#

既知のインストールと構成の問題#

既存のmod_wsgiとの競合#

システムにmod_wsgiの競合するバージョンがある場合、RHEL、Rocky、AlmaまたはOracle LinuxにPEMサーバーをインストールするときにこのエラーが表示されます。

[root@etpgxlt firstuser]# dnf install edb-pem
Updating Subscription Management repositories.
Last metadata expiration check: 0:01:33 ago on Wed 30 Mar 2022 01:28:16 AM EDT.
Error:
 Problem: problem with installed package python3-mod_wsgi-4.6.4-4.el8.s390x
  - package python39-mod_wsgi-4.7.1-4.module+el8.4.0+9822+20bf1249.s390x conflicts with python3-mod_wsgi provided by python3-mod_wsgi-4.6.4-4.el8.s390x
  - package python39-mod_wsgi-4.7.1-4.module+el8.4.0+9822+20bf1249.s390x conflicts with python3-mod_wsgi provided by python3-mod_wsgi-4.6.4-3.el8.s390x
  - package edb-pem-server-8.4.0-7.rhel8.s390x requires python39-mod_wsgi >= 4.7, but none of the providers can be installed
  - package edb-pem-8.4.0-7.rhel8.s390x requires edb-pem-server = 8.4.0-7.rhel8, but none of the providers can be installed
  - cannot install the best candidate for the job
(try to add --allowerasing to command line to replace conflicting packages or --skip-broken to skip uninstallable packages or --nobest to use not only best candidate packages)
[root@etpgxlt firstuser]#

この問題を解決するには、python3-mod_wsgi パッケージを削除し、PEMのインストールを再試行します。

dnf remove python3-mod_wsgi

JITからのエラー#

PEMバックエンドPostgresインスタンスでJITが有効になっている場合、RHEL、Rocky、AlmaまたはOracle LinuxでPEMサーバーを構成した後、ワーカー.logにこのエラーが表示される場合があります。

Tue Nov 28 03:02:19 2023 WARNING: Error clearing zombies: ERROR:  failed to JIT module: Added modules have incompatible data layouts: E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-a:8:16-n32:64 (module) vs E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-v128:64-a:8:16-n32:64 (jit)
CONTEXT:  SQL statement "WITH running_agent_job AS (
        SELECT j.jobid, j.agent_id
        FROM pem.job j LEFT JOIN pem.joblog jl ON (j.jobid = jl.jlgjobid)
        WHERE jl.jlgstatus = r AND agent_id = $1 AND j.jobarid != agent_runtime_id
        ORDER BY j.jobid, jl.jlgjobid
        FOR UPDATE SKIP LOCKED
    ), joblog_status_update AS (
        UPDATE pem.joblog jl SET jlgstatus=d
        FROM running_agent_job r
        WHERE r.jobid = jl.jlgjobid AND jl.jlgstatus=r
        RETURNING r.agent_id, jl.jlgjobid, jl.jlgid
    ), jobsteplog_status_update AS (
        UPDATE pem.jobsteplog js SET jslstatus=d
        FROM joblog_status_update jl
        WHERE js.jsljlgid = jl.jlgid AND js.jslstatus=r
        RETURNING jl.agent_id, jl.jlgjobid AS job_id
    )
    UPDATE pem.job j SET jobprocessid=NULL, jobnextrun=NULL, jobarid=NULL
    FROM (SELECT DISTINCT agent_id, job_id FROM jobsteplog_status_update) js
    WHERE js.job_id = j.jobid"
PL/pgSQL function pem.clear_job_zombies(integer) line 8 at SQL statement

エラーを解決するには、バックエンドデータベースサーバーのpostgresql.conf ファイルでjit パラメーターをoff に設定します。

jit=off

バックエンドデータベースサーバーを再起動します。

RHEL Python 3.9標準ライブラリのバグによるクラッシュ#

RHEL 9、Rocky 9、Alma 9またはOracle Linux 9サーバーが影響を受けるPython 3.9バージョンを実行している場合、PEM構成中に次のエラーが表示されます。

TypeError: realpath() got an unexpected keyword argument strict

Python 3.9の最新のパッチバージョンに更新することにより、エラーを解決できます。この問題がPythonバージョン3.9.21のRedHatディストリビューションに存在しないことを確認しました。

dnf upgrade python3

PEM構成を再試行します。

PEMサーバーの再構成#

状況によっては、PEMサーバーのアンインストール、再インストール、およびサーバーの再構成が必要になる場合があります。そのためには

  1. PEMサーバー構成を削除し、アンインストールします。

/usr/edb/pem/bin/configure-pem-server.sh –un
  1. PEMパッケージを削除します。

yum erase edb-pem-server
  1. pem データベースを削除します。

DROP DATABASE pem
  1. 証明書を/root/.pem/ から別の場所に移動します。

mv /root/.pem/* <new_location>
  1. agent.cfg ファイルを/usr/edb/pem/agent/etc/agent.cfg から別の場所に移動します。

mv /usr/edb/pem/agent/etc/agent.cfg <new_location>
  1. 次に、PEMサーバーを再度構成します。

/usr/edb/pem/bin/configure-pem-server.sh

PEM Webアプリケーションがロードされません#

PEM Webアプリケーションがロードされていない場合は、 check the web services are running 。実行中の場合は、Webサーバーとアプリケーションエラーログを確認します。

WebサーバーとしてNGINXを使用している場合、Webサーバーログは/var/log/nginx/error.log にあり、アプリケーションログは/var/log/edb-uwsgi/pem.log にあります。

Apache HTTPDを使用している場合 ログは/var/log/httpd/error_log にあります。このファイルには、Webサーバーとアプリケーションのエラーメッセージの両方が含まれています。

WebサーバーとしてApache HTTPDを使用しており、ログに次のメッセージが表示される場合。

Truncated or oversized response headers received from daemon process edbpem: /usr/edb/pem/web/pem.wsgi

/etc/httpd/conf フォルダーにあるApache httpd.conf ファイルの下部に次のステートメントを追加します。

WSGIApplicationGroup %{GLOBAL}

次のステートメントを追加した後、HTTPDサーバーを再起動します。

sudo systemctl restart httpd.service

PostgreSQLサーバーへの接続エラー#

PostgreSQLサーバーに接続すると、次のいずれかのエラーメッセージが表示される場合があります。メッセージを注意深く確認します。各エラーメッセージは、問題を解決するために必要な情報を取り入れようとします。

  • サーバーへの接続が失われました このエラーメッセージは、接続の試行が指定されたしきい値よりも時間がかかったことを示します。 [サーバー]ダイアログボックスに表示される接続プロパティに問題があるか、ネットワーク接続の問題、またはサーバーが実行されていない可能性があります。

  • サーバーに接続できませんでした 接続は拒否されました このエラーには2つの理由が考えられます。

    • データベースサーバーは実行されていません。サーバーを起動します。

    • サーバーは、表示されているアドレスでTCP/IP要求を受け入れるように構成されていません。

セキュリティ上の理由から、PostgreSQLサーバーは「そのままでは」TCP/IPポートでリッスンしません。代わりに、TCP/IP要求をリッスンするように有効にする必要があります。バージョン7.3.xおよび7.4.xのpostgresql.conf ファイルにtcpip = true を追加します。バージョン8.0.x以降にlisten_addresses='*' を追加します。これらの追加により、サーバーは任意のIPインターフェイスでの接続を受け入れます。

詳細については、 runtime configuration に関するPostgreSQLドキュメントを参照してください。

  • FATAL pg_hba.confエントリー 接続時にPEMがこのメッセージを表示する場合、ネットワーク経由でサーバーに正しく接続できますが、接続を受け入れるように構成されていません。クライアントは、データベースの合法的なユーザーとして検出されませんでした。

サーバーに接続するには、PEMクライアントのホストからの接続を受け入れるようにデータベースサーバー上のpg_hba.conf ファイルを構成します。データベースサーバホスト上のpg_hba.conf ファイルを変更し、次のフォームでエントリを追加します。

  • host template1 postgres 192.168.0.0/24 md5 IPV4ネットワークの場合

  • host template1 postgres ::ffff:192.168.0.0/120 md5 IPV6ネットワークの場合

詳細については、 client authentication に関するPostgreSQLドキュメントを参照してください。

  • FATAL パスワード認証に失敗しました password authentication failed for user エラーメッセージは、入力したパスワードに問題がある可能性を示しています。パスワードを再試行して、正しく入力したことを確認します。エラーメッセージが返された場合は、正しいパスワードを持っていること、サーバーへのアクセスが許可されていること、およびサーバーのpostgresql.conf 構成ファイルでアクセスが正しく構成されていることを確認します。

PEM Webサーバーの接続性チェック#

次のコマンドを実行して、クライアントがPEMサーバーに到達し、応答を取得できるかどうかを確認します。

curl https://<SERVER_ADDR>:8443/pem/misc/ping -k -i
__OUTPUT__
PING

<SERVER_ADDR> は、PEMサーバーのIPアドレスです。出力PING は、PEM Webサーバーが稼働していることを確認します。