Pythonエージェントを使って、DockerコンテナにデプロイされたPythonアプリケーションをインストルメントすることができます。このドキュメントでは、Docker化されたPythonアプリケーションのインストルメントバージョンを構築、設定、デプロイする方法を紹介します。
インストルメント・コンテナの構築
このDockerfileは、Pythonエージェントをインストールすることで、PythonのDockerイメージのベースを提供します。 FROM
命令を変更することで、例えば、別のバージョンのPythonや異なるLinuxディストリビューションを使用するなど、カスタマイズすることができます。
はじめに、以下のコードブロックをコピーして、あなたのディレクトリに新しいDockerfileとして保存してください。
FROM python:3.6-alpineRUN pip install --no-cache-dir newrelicENTRYPOINT ["newrelic-admin", "run-program"]ベースイメージの構築
$ docker build -t python_newrelic:latest .FROM
の行をFROM python_newrelic:latest
に置き換えることで、新しいイメージを自分のDockerfileのベースとして使用することができます。アプリのコマンドラインは、newrelic-admin
プログラムが起動できるように、ENTRYPOINT
ではなく、CMD
命令の中に入れる必要があります。例えば、以下のようになります。CMD ["gunicorn", "-b :5000", "myapp:app"]エージェントを有効にするには、環境変数で設定する必要があります。
NEW_RELIC_LICENSE_KEY
とNEW_RELIC_APP_NAME
の変数が必要です。例えば、docker run
を使用する場合は、-e
オプションを追加します。$ docker run -e NEW_RELIC_LICENSE_KEY=YOUR_LICENSE_KEY \ -e NEW_RELIC_APP_NAME="YOUR APPLICATION NAME" \ INSTRUMENTED_IMAGE_NAME
ヒント
docker-compose
を使用している場合は、 secrets を使用してライセンスキーを管理することができます。
エージェントの設定
エージェントを設定する際には、2つのオプションがあります。
推奨します。環境変数で設定する
ほとんどのエージェントの設定は、環境変数で行うことができます。 -e
パラメータを docker run
に指定することで、実行時にこの設定を行うことができます。
$ docker run -e NEW_RELIC_APP_NAME="A Different App" \
-e NEW_RELIC_LOG=stdout \
-e NEW_RELIC_DISTRIBUTED_TRACING_ENABLED=true \
-e NEW_RELIC_LICENSE_KEY=YOUR_LICENSE_KEY \
INSTRUMENTED_IMAGE_NAME
あるいは、Dockerfileに環境変数を含めることもできます。
ENV NEW_RELIC_LOG=stdout \ NEW_RELIC_DISTRIBUTED_TRACING_ENABLED=true \ NEW_RELIC_APP_NAME="My Application" # etc.
重要
DockerfileまたはDockerイメージにライセンスキーを入れないことを強くお勧めします。代わりに、実行時に-e
オプションを使用して設定してください。
設定ファイルの使用
環境変数でオプションを設定できない、あるいは設定したくない場合は、設定ファイルで設定することができます。
設定ファイルを使ってPythonエージェントを設定したい場合は、ビルド時にDockerイメージに newrelic.ini
ファイルを追加するか、 ランタイムにファイルをマウントする 。このファイルは、アプリのルートディレクトリに置く必要があります。
重要
ファイルベースの構成を使用する場合は、ファイル内のlicense_key
設定、および環境変数で設定するその他の設定を削除する必要があります。それ以外の場合、ファイルのデフォルト値は環境変数を上書きします。 Dockerイメージにライセンスキーを含めないことを強くお勧めします。
newrelic.ini
Python agent configuration docs で説明されているファイルを生成またはダウンロードしてください。newrelic.ini
ファイルを編集して、設定を行います。詳細は、 Python agent configuration documentation を参照してください。以下のいずれかを選択してください。
オプション1:ビルド時に
追加``newrelic.ini
ファイルをDockerイメージに追加します。この行をDockerfileに追加し、プレースホルダーをアプリへのパス(WORKDIR
への相対パスまたは絶対パス)に置き換えて、通常通りビルドします。ADD newrelic.ini /PATH/TO/YOUR/APP
オプション2:
newrelic.ini
ファイルをランタイムにマウントします。docker run
コマンドに、以下の-v
スイッチを追加し、/PATH/TO/YOUR/APP
を、Docker イメージ内のアプリのベースディレクトリへの 絶対 パスに置き換えます。$ docker run -v /local/path/to/newrelic.ini:/PATH/TO/YOUR/APP/newrelic.ini \ -e NEW_RELIC_LICENSE_KEY=YOUR_LICENSE_KEY \ INSTRUMENTED_IMAGE_NAME