このドキュメントでは、 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/logsDockerfileに次のいずれかを追加して、ログを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 に関する詳細なサポート フォーラムの投稿をお読みください。