pyagent run

WSGI サーバーの呼び出し方法を制御できる場合は、pyagent run を使用してアプリケーションをインストルメント化できます。このコマンドで、Python エージェント対応の WSGI サーバを実行します。コマンドを指定して実行するためのプロセス ランチャまたはマネージャを使用する場合は、一般的にこの方法が可能です。たとえば、Supervisor、uWSGI without Emperor、init.d スクリプトなどで管理されるフレームワークがあります。

pyagent run コマンドを使用するには、既存のアプリケーションの実行コマンドの前に pyagent run コマンドを追加して、「エージェントの設定」で説明されている AppDynamics 構成ファイルをパラメータとして渡します。

いかなる場合も PYTHONPATH を上書きしないでください。上書きすると、pyagent run コマンドがエージェントをロードしなくなります。PYTHONPATH に追加する必要がある場合は、pythonpath 構成変数を使用します。たとえば、次のコマンドを使用すると、上書きではなく、/foo/barPYTHONPATH に追加します。

PYTHONPATH への正しい追加方法
pythonpath = /foo
pythonpath = /bar
次の構文を使用して PYTHONPATH に値を追加しないでください。これは、PYTHONPATH への誤った追加方法です。
env = PYTHONPATH=/foo:/bar 

supervisorctlの使用

supervisorctl を使用する場合は、Supervisor 構成を更新した後で supervisorctl reload コマンドを使用して Python エージェントをロードする必要があります。supervisorctl restart コマンドを使用した場合、Supervisor はその構成ファイルを再読み込みしません。

エージェントが読み込まれたことを確認するには、Pythonエージェントログファイルを検索します。デフォルトの場所は、/tmp/appd/logs/<app_name>-<node_name>.log です。たとえば、エージェント構成ファイルに指定したアプリケーション名が myapp でノード名が mynode であり、ログファイルの場所を変更していない場合は、ログファイルは /tmp/appd/logs/myapp-mynode になります。

ログファイルが存在する場合は、エージェントがロードされています。ログファイルが存在しない場合はエージェントは読み込まれていません。この場合、supervisorctl reload を使用して Supervisor 構成を再読み込みしてください。

DjangoおよびFlask

  • ご使用のフレームワークが Django または Flask の場合は、pyagent runを実行コマンドの先頭に追加してください。たとえば、現在の run コマンドが次のようである場合:
    gunicorn -w 8 -b '0.0.0.0:9000' example.app:application
  • ASGI コードベースを unicorn サーバーで実行する場合は、run コマンドの前に pyagent run を追加します。たとえば、現在の run コマンドが次のようである場合:
    uvicorn --port 9090 --reload --log-level trace mysite.asgi:application
次のように置き換えます。
gnuicorn
pyagent run -c <path_to_appdynamics_config_file> -- gunicorn -w 8 -b '0.0.0.0:9000' example.app:application
uvicorn
pyagent run -c <path_to_appdynamics_config_file> -- uvicorn --port 9090 --reload --log-level trace mysite.asgi:application

その他のPure Python WSGIベースのフレームワーク

DjangoまたはFlaskではないWSGIベースのフレームワークをご使用の場合は、以下のようにします。
  1. AppDynamics 構成ファイルで、WSGI アプリケーションを指定するには、APPD_WSGI_MODULE ディレクティブを設定して、アプリケーションモジュールを指すようにします。「Python エージェント設定」を参照してください。
  2. 実行コマンドの先頭に pyagent run を追加します。
  3. AppDynamicsが生成したアプリケーションを実行。
たとえば、実行コマンドが次のような場合、
gunicorn -w 8 -b '0.0.0.0:9000' example.app:application
以下の2つのコマンドと置き換えます。
pyagent run -c /path/to/appdynamics.cfg -- gunicorn -w 8 -b '0.0.0.0:9000'
appdynamics.scripts.wsgi:application