Download PDF
Download page Pythonエージェントのインストール.
Pythonエージェントのインストール
Related Pages:
このページでは、アプリケーション環境を準備して AppDynamics Python エージェントをインストールする方法について説明します。
はじめに
- Python対応環境 でご使用の環境がサポートされているか確認。
- エージェントをインストールするマシンで、Python パッケージのインデックスにアクセスできることを確認。
- 監視するWSGIベースのアプリケーションを準備。
- アプリケーションが実行しているマシンに、エージェントソフトウェアのインストール権限を持つユーザーとしてアクセスし、アプリケーションを再起動できることを確認。これらの特権を持つユーザーアカウントがあることを確認。
uWSGI を使用している場合は、uWSGI 構成ファイルで
enable-threads=1
を設定。エージェントにはマルチスレッドが必要です。
Python エージェントと、「apt-get」などの OS パッケージマネージャによってインストールされた uWSGI のバージョンとの間には互換性がないことが知られています。このため、この問題を回避するために AppDynamics では pip から uWSGI をインストールすることが推奨されています。モニタするアプリケーションが仮想環境で実行されている場合は、仮想環境をアクティブにします。たとえば、次のソースコマンドで仮想環境をアクティブ化します。
source /<path_to_virtual_environment>/bin/activate
仮想環境のアクティブ化は、アプリケーションがグローバルPython環境で実行されている場合は不要。
エージェントのインストール
Pythonアプリケーションを実行しているマシンに、適切なユーザー認証情報を使用して次のようにログインします。
- 仮想環境の場合、ユーザはその仮想環境の所有者である必要があります。
- グローバル Python 環境の場合は、インストールコマンドをルートで実行する必要があります。
次の項で説明するインストール方法のいずれかを使用して、エージェントをインストールできます。
pip のインストール
最新バージョンのエージェントをインストールまたはアップグレードするには、 pip install
コマンドを次のように実行します。
プラットフォーム [英語] | コマンド |
---|---|
Linux |
CODE
|
Alpine Linux |
CODE
|
複数のパッケージがある場合は、pip list
コマンドまたはパッケージ一覧(https://pypi.python.org/pypi)を使用してエージェントを検索し、その出力から appdynamics
を見つけます。次に出力例を示します。
運用デプロイメントでは、AppDynamicsはテスト/ステージング環境で最初に展開することなく、バージョンが依存しないようにフリーズすることを推奨しています。特定のバージョンの AppDynamics Python エージェントをインストール(またはアップグレード)するコマンドは以下のとおりです。
pip install -U appdynamics==<released_agent_version>
次に例を示します。
pip install -U appdynamics==4.4.0.0
このコマンドを実行するたび、常に同じバージョンのエージェントがインストールされます。
AppDynamics ダウンロードポータルからのインストール
ポータルから
PythonAgent*.tar.bz2
ファイル(ターゲットプラットフォームに基づく)をダウンロードし、コンテンツをフォルダに解凍します。
次のコマンドを実行して、最新の pip が wheel のインストールをサポートしていることを確認します。pip install --upgrade pip
CODE次のコマンドを実行して、wheel 形式をインストールします。
プラットフォーム [英語]
コマンド
Linux pip install -f <untar_folder> appdynamics
CODEAlpine Linux pip install -f <untar_folder> appdynamics-alpine
CODE
エージェントの構成
エージェントとコントローラとの通信に必要なAppDynamics設定を指定する構成ファイルを指定します。このファイルは Python ConfigParser 形式である必要があります。Pythonアプリケーションのユーザーは、構成ファイルの読み取りアクセス権限が必要です。
構成ファイルの行はスペースで始まらないことにご注意ください。#で始まる行はコメントであり、エージェントにより無視されます。
以下は最低限必要な設定を行ったシンプルな構成ファイルの例です。
[agent] app = <app_name> tier = <tier_name> node = <node_name> [controller] host = <controller_host> port = <controller_port> ssl = true account = <your AppDynamics controller account name> accesskey = <your AppDynamics controller account access key>
構成の次の点に注意してください。
- ssl 設定により、エージェントが SSL でコントローラに接続するかどうかが決まります。SaaS コントローラにはこの設定が必須です。
account
値は、SaaS アカウントまたはマルチテナントのオンプレミスコントローラを使用している場合に必要です。シングル テナント コントローラの場合は、デフォルトでcustomer1
に設定されます。- すべてのコントローラでアクセスキーが必要です。アカウント名とアクセスキーを調べるには、AppDynamics UI の右上隅にある をクリックし、次に [License] をクリックします。
ssl
、http-proxy
またはwsgi_module
など、その他の設定がご使用の環境で必要となる場合があります。設定の完全なリストについては、「Pythonエージェント設定」を参照してください。
pyagent run
を使用してアプリケーションをインストゥルメント化する場合は、構成ファイルパスをパラメータとして pyagent run コマンドに渡します。その他の展開では、uWSGI with Emperor と Apache with mod_wsgi のサンプルに示すように、APPD_CONFIG_FILE
環境変数を設定します。
Alpine Linux プラットフォームの場合:
AppDynamics では、init プロセスを使用することを推奨しています。init プロセスを指定すると、ゾンビプロセスの取得などの init システムの機能が、作成されたコンテナ内で実行されるようになります。docker run コマンドの引数として --init を使用できます。
次に例を示します。
docker run -idt --privileged --init --name <container-name> <container-id> sh
Docker ファイルのエントリポイントとして、tini を使用できます。
Sample command
RUN apk add --no-cache tini
# Tini is now available at /sbin/tini
ENTRYPOINT ["/sbin/tini", "--"]
アプリケーションのインストゥルメンテーション
使用するインストゥルメンテーション手順は、次の展開オプションからどのようにアプリケーションを展開するかによって異なります。
Python環境に関係なく、PasteDeployを使用してアプリケーションを構築した場合は、PasteDeploy構成を変更してPythonエージェントをインストールできます。PasteDeployを参照してください。
pyagent run
WSGI サーバの呼び出し方法を制御できる場合は、pyagent run
を使用してアプリケーションをインストゥルメント化できます。このコマンドで、Python エージェント対応の WSGI サーバを実行します。コマンドを指定して実行するためのプロセス ランチャまたはマネージャを使用する場合は、一般的にこの方法が可能です。たとえば、Supervisor、uWSGI without Emperor、init.d スクリプトなどで管理されるフレームワークがあります。
pyagent run
コマンドを使用するには、既存のアプリケーションの実行コマンドの前に pyagent run
コマンド追加し、「Configure the Agent」で説明されている AppDynamics 構成ファイルをパラメータとして渡します。
いかなる場合も PYTHONPATH
を上書きしないでください。上書きすると、pyagent run
コマンドがエージェントをロードしなくなります。PYTHONコマンドに追加する必要がある場合は、pythonpath構成変数を使用します。たとえば、次のコマンドを使用すると上書きではなく、/foo
または /bar
を PYTHONPATH
に追加します。
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
次のように置き換えます。
pyagent run -c <path_to_appdynamics_config_file> -- gunicorn -w 8 -b '0.0.0.0:9000' example.app:application
その他のPure Python WSGIベースのフレームワーク
DjangoまたはFlaskではないWSGIベースのフレームワークをご使用の場合は、以下のようにします。
- AppDynamics 構成ファイルで、WSGI アプリケーションを指定するには、
APPD_WSGI_MODULE
ディレクティブを設定して、アプリケーションモジュールを指すようにします。Pythonエージェント設定 を参照してください。 - 実行コマンドの先頭に
pyagent run
を追加。 - 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
uWSGI Emperor
ご使用の環境が uWSGI Emperor の場合は、WSGI 構成ファイルを変更して手動でプロキシを起動する必要があります。
uWSGI EmperorはuWSGIサーバーに特化したプロセスマネージャです。uWSGI Emeperor では管理対象の uWSGI プロセスの起動方法を制御できないため、pyagent run
コマンドで使用できません。
WSGI構成ファイルの場所はデプロイメント方法により異なります。Emperor の展開の詳細については、http://uwsgi-docs.readthedocs.org/en/latest/Emperor.html を参照してください。
uWSGI Emperor のアプリケーションをインストゥルメント化するには
- 「Configure the Agent」に記載された方法で構成ファイルを作成。
uWSGI構成ファイルを変更。構成がモジュールディレクティブを使用するか wsgi-file ディレクトリを使用するかにより、次のいずれかを実行。
Module Directive
uWSGI 構成内に次のようなモジュールディレクティブがある場合は、module = yourcompany.sample:app
モジュール設定を変更し、
APPD_WSGI_MODULE
とAPPD_CONFIG_FILE
設定を追加して、次のように構成を変更(構成ファイルが/etc/appdynamics.cfg
に保存されていると仮定)。env = APPD_CONFIG_FILE=/etc/appdynamics.cfg env = APPD_WSGI_MODULE=yourcompany.sample:app module = appdynamics.scripts.wsgi:application
WSGI-File Directive
uWSGI 構成内にwsgi-file
ディレクティブがある場合は、wsgi-file = /var/www/yourcompany/sample.py callable = app
構成を次のように変更(構成ファイルが
/etc/appdynamics.cfg
に保存されていると仮定)。env = APPD_CONFIG_FILE=/etc/appdynamics.cfg env = APPD_WSGI_SCRIPT_ALIAS=/var/www/yourcompany/sample.py env = APPD_WSGI_CALLABLE_OBJECT=app module = appdynamics.scripts.wsgi
インストゥルメンテーションを行ったアプリケーションでトラフィックを実行する前に、以下を実行してプロキシを手動で起動します。
pyagent proxy start
mod_wsgiを使用したApache
Python エージェント ベータは、単一 WSGI ファイルを指す WSGIScriptAlias
を使用する mod_wsgi
構成のみをサポートしています。 たとえば、以下のタイプの構成がサポートされています。
WSGIScriptAlias /books /var/www/acme/bookstore/app.wsgi
スクリプトのエイリアスがディレクトリを指していたり、スクリプトが WSGIScriptAliasMatch
ディレクティブを使用している場合は、python@appdynamics.com に問い合わせて Python エージェントをご使用の環境に展開する方法について相談してください。
前述のような構成がサポートされている mod_wsgi
を使用する Apache 環境の場合は、その mod_wsgi
構成ファイルを変更してプロキシを手動で起動する必要があります。
mod_wsgi を使用する Apache のアプリケーションをインストゥルメント化するには
- 「Configure the Agent」に記載された方法で構成ファイルを作成。
mod_wsgi
構成ファイルを変更。mod_wsgi
構成ファイルに次のようなエントリがある場合は、WSGIScriptAlias /books /var/www/acme/bookstore/app.wsgi WSGICallableObject application
エントリを次のように変更(構成ファイルが
/etc/appdynamics.cfg
に保存されていると仮定)。SetEnv APPD_CONFIG_FILE /etc/appdynamics.cfg SetEnv APPD_WSGI_MODULE acme.bookstore:app WSGIScriptAlias /books /<path_to_virtualenv>/lib/python2.7/site-packages/appdynamics/scripts/wsgi.py
インストゥルメント化されたアプリケーションを使用してトラフィックを実行する前に、次を実行してプロキシを手動で起動。
pyagent proxy start
PasteDeploy
AppDynamicsが提供するコンポジットファクトリを使用してPasteDeploy構成を変更し、PasteDeployで構築されたPythonアプリケーションをインストゥルメント化することができます。この機能は、他のデプロイメントオプションで記述されたアプリケーションがPasteDeployを使用して構築されている場合、インストゥルメンテーションに使用することができます。
AppDynamics のコンポジットファクトリの名前は、egg:appdynamics#instrument
です。これにはアプリケーションから元のアプリケーションを指す「target
」というパラメータと、APPD_settings へのフルパスが必要です。
PasteDeployで構築されたアプリケーションをインストゥルメント化するには
AppDynamicsプロキシを手動で起動。
pyagent proxy start
PasteDeploy 構成ファイルで、既存のコンポジットの名前を一意の名前に変更します。
たとえば、「metadata
」 というアプリケーションの既存のコンポジット構成については、[composite:metadata] use = egg:Paste#urlmap /: meta
以下の名前に変更。
[composite:_orig_metadata] use = egg:Paste#urlmap /: meta
次のように、「
metadata
」アプリケーション用の新しいコンポジットセクションを、今名前変更した元のものの上に作成します。名前を変更した古いアプリケーションの名前を、新しいコンポジットアプリケーションに命名します。
AppDynamics コンポジットファクトリ(
egg:appdynamics#instrument
)を使用するように構成。ターゲットを名前変更したアプリケーションに設定。
AppDynamics 構成ファイルの環境変数
APPD_CONFIG_FILE
を、ご使用の構成ファイルへのパスに設定。 {{2}}は特定の属性を識別し、 {{3}} はこの属性に割り当てる新規の値を指定します。[composite:metadata] use = egg:appdynamics#instrument target = orig_metadata APPD_CONFIG_FILE = /etc/appdynamics.cfg
その他のAPPD_ 構成変数を設定することも可能。例:
APPD_LOGS_DIR=/var/log/appdynamics
。
- アプリケーションを再起動。