• ログイン無料アカウント

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

Docker用Pythonエージェントのインストール

Pythonエージェントを使って、DockerコンテナにデプロイされたPythonアプリケーションをインストルメントすることができます。このドキュメントでは、Docker化されたPythonアプリケーションのインストルメントバージョンを構築、設定、デプロイする方法を紹介します。

インストルメント・コンテナの構築

このDockerfileは、Pythonエージェントをインストールすることで、PythonのDockerイメージのベースを提供します。 FROM 命令を変更することで、例えば、別のバージョンのPythonや異なるLinuxディストリビューションを使用するなど、カスタマイズすることができます。

  1. はじめに、以下のコードブロックをコピーして、あなたのディレクトリに新しいDockerfileとして保存してください。

    FROM python:3.6-alpine
    RUN pip install --no-cache-dir newrelic
    ENTRYPOINT ["newrelic-admin", "run-program"]
  2. ベースイメージの構築

    $ docker build -t python_newrelic:latest .
  3. FROM の行を FROM python_newrelic:latest に置き換えることで、新しいイメージを自分のDockerfileのベースとして使用することができます。アプリのコマンドラインは、 newrelic-admin プログラムが起動できるように、 ENTRYPOINT ではなく、 CMD 命令の中に入れる必要があります。例えば、以下のようになります。

    CMD ["gunicorn", "-b :5000", "myapp:app"]
  4. エージェントを有効にするには、環境変数で設定する必要があります。 NEW_RELIC_LICENSE_KEYNEW_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イメージにライセンスキーを含めないことを強くお勧めします。

  1. newrelic.ini Python agent configuration docs で説明されているファイルを生成またはダウンロードしてください。

  2. newrelic.ini ファイルを編集して、設定を行います。詳細は、 Python agent configuration documentation を参照してください。

  3. 以下のいずれかを選択してください。

    • オプション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
Copyright © 2022 New Relic Inc.