このドキュメントでは、 dockerコンテナーでの agent for Java アプリケーションの基本的なインストールについて説明します。 必須の設定について説明し、次のようなオプションの設定についても説明します。
- コンテナが使用される環境に関わらず、各コンテナに同一のNew Relic設定ファイルを使用する方法
- すべての環境のすべてのエージェントが微妙に異なる設定データを必要とする場合に、Dockerレイヤーをどのように使用するか
- ある環境ではNew Relicエージェントを無効にし、別の環境では有効にする方法
ここでは高度なオプションについては説明しませんが、JavaエージェントをDockerボリュームにインストールして、Swarm、ECS、AKS、EKS、OpenShift、Kubernetesなどの他のソフトウェアでDockerコンテナイメージを使用することができます。私たちのDockerの例ではTomcatを参照していますので、他のアプリケーションサーバーを使用している場合は、ベンダーのドキュメントを参照してください。
Javaエージェントの取得
curl
、Invoke-WebRequest
(PowerShell)、またはNew Relic UIを使用してnewrelic-java.zip
をダウンロードします。
インストールディレクトリの設定
newrelic-java.zip
ファイルは都合のよい場所ならどこでも解凍できます。以降のセクションでは、現在の作業ディレクトリに抽出したと仮定します。これにより、必要なファイルが./newrelic
に配置されます。
スタートアップスクリプトの変更
アプリケーションサーバーを起動するコマンドを含む起動スクリプトには、Javaの組み込み引数-javaagent
が含まれている必要があります。この引数は、 JAVA_OPTS
環境変数を使用して設定することをお勧めします。その引数の値には、 ADD
エージェントのjarファイルをイメージに追加する場所が含まれている必要があります。
たとえば、Tomcatでは、 Dockerfile
で次のようなコマンドを使用します。
RUN mkdir -p /usr/local/tomcat/newrelicADD ./newrelic/newrelic.jar /usr/local/tomcat/newrelic/newrelic.jarENV JAVA_OPTS="$JAVA_OPTS -javaagent:/usr/local/tomcat/newrelic/newrelic.jar"
エージェントの設定
デフォルトでは、エージェントの動作はnewrelic.yml
の構成エントリによって制御されます。これは通常、エージェントと同じディレクトリにあります。このセクションでは、 Dockerfile
の環境変数またはJavaシステムプロパティを使用して、これらのnewrelic.yml
構成をオーバーライドする方法について説明します。
特定の構成を確認する前に、 Dockerfile
を使用してnewrelic.yml
をロードする方法を次に示します。
ADD ./newrelic/newrelic.yml /usr/local/tomcat/newrelic/newrelic.yml
基本的なDockerのインストールでは、以下の設定を行います。
アプリケーション名
アプリケーション名は、New Relicでアプリケーションを識別するために設定する設定です。
ヒント
同じ役割を果たす複数のアプリにアプリケーション名を再利用することで、それらのアプリからのすべてのデータがNew Relicの同じ論理的なアプリケーションにロールアップされます。追加のグループ化オプションの詳細については、 Use multiple names for an app を参照してください。
次のDockerfile
コマンドのいずれかで、 MY_APP_NAME
をアプリケーション名に置き換えます。
オプション | コマンド |
---|---|
環境変数 |
|
Java システム プロパティ |
|
コンテナを起動すると、New Relicにアプリケーション名が表示されます。
ライセンスキー
この設定は、New Relic アカウントにデータを報告するために必要です。
ライセンスキーをコピーするには
API キーUIに移動して を取得します。
これらの
Dockerfile
コマンドのいずれかで、MY_LICENSE_KEY
をライセンスキーに置き換えます。オプション
コマンド
環境変数
ENV NEW_RELIC_LICENSE_KEY="MY_LICENSE_KEY"Java システム プロパティ
ENV JAVA_OPTS="$JAVA_OPTS -Dnewrelic.config.license_key='MY_LICENSE_KEY'"
ログ
デフォルトでは、ログはnewrelic.jar
の場所を基準にしてlogsディレクトリに書き込まれます。アプリケーションサーバーを起動するユーザーアカウントにも、次のようなタスクを実行する権限があることを確認してください。
- logsディレクトリの作成。
- そのディレクトリ内のログファイルを作成し、追記する。
Dockerfileの例を次に示します。 tomcat
はTomcatを起動するユーザーです。
RUN mkdir -p /usr/local/tomcat/newrelic/logsRUN chown -R tomcat:tomcat /usr/local/tomcat/newrelic/logs
Dockerfileに次のいずれかを追加して、ログをSTDOUT
に送信することもできます。
オプション | コマンド |
---|---|
環境変数 |
|
Java システム プロパティ |
|
環境(オプション)
Java プロパティまたは環境変数を渡して、エージェントがnewrelic.yml
で使用する環境固有のセクションを決定できます。 すべての構成を Docker 経由で渡すのではなく、 newrelic.yml
ファイルで環境固有の構成を制御する場合は、このアプローチを使用します。
以下は、Docker 経由でnewrelic.environment
Java システム プロパティを渡し、 newrelic.yml
の環境セクションでカスタム値dev
を使用するDockerfile
の例です。
CMD命令のシェル形式を使用して、選択した新しい環境変数への参照を含めます(たとえば、
ENV
)。CMD java -Dnewrelic.environment=$ENV -jar myjar.jardocker run
コマンドラインに、コンテナに環境変数を設定するための引数を含めます。bash$docker run -it -e "ENV=dev" myDockerImage
重要
newrelic.environment
の値を指定しない場合、エージェントは実稼働環境で実行されていると見なし、構成ファイルの本体の値を使用します。
エージェントが有効(オプション)
この設定は、エージェントを有効にするかどうかを制御します。例えば、すべてのインストールに同じDockerイメージを使用したいとします。しかし、エンジニアがテストアプリを起動するたびにNew Relicエージェントを実行するのは、インスタンス数を増やしたくないからです。
この問題は、 newrelic.environment
Javaシステムプロパティを使用して解決できます。
newrelic.yml
の本体で、agent_enabled: false
を設定してJavaエージェントを無効にします。newrelic.yml
の特定の環境セクションで、agent_enabled: true
を設定します。
そして、実行時に環境を指定することで、特定のエージェントを実行することができます。
追加のTomcat Dockerfileの例
次のステップ
これで、Dockerでの基本的なエージェントのインストールが完了しましたが、ここでは追加の手順をご紹介します。
- 他の 設定を確認する エージェントのために。
- Docker と New Relic に関する詳細なサポート フォーラムの投稿をお読みください。