• ログイン今すぐ開始

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

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

問題を作成する

New Relic Java agent for Dockerのインストール

このドキュメントでは、Javaアプリケーション用のAPMエージェントをDockerコンテナにインストールする基本的な方法を説明します。必要な構成について説明するとともに、以下のようなオプションの構成についても検討しています。

  • コンテナが使用される環境に関わらず、各コンテナに同一のNew Relic設定ファイルを使用する方法
  • すべての環境のすべてのエージェントが微妙に異なる設定データを必要とする場合に、Dockerレイヤーをどのように使用するか
  • ある環境ではNew Relicエージェントを無効にし、別の環境では有効にする方法

ここでは高度なオプションについては説明しませんが、JavaエージェントをDockerボリュームにインストールして、Swarm、ECS、AKS、EKS、OpenShift、Kubernetesなどの他のソフトウェアでDockerコンテナイメージを使用することができます。私たちのDockerの例ではTomcatを参照していますので、他のアプリケーションサーバーを使用している場合は、ベンダーのドキュメントを参照してください。

Javaエージェントの取得

curlInvoke-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/newrelic
ADD ./newrelic/newrelic.jar /usr/local/tomcat/newrelic/newrelic.jar
ENV 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をアプリケーション名に置き換えます。

オプション

コマンド

環境
変数

ENV NEW_RELIC_APP_NAME="MY_APP_NAME"

Javaシステム
プロパティ

ENV JAVA_OPTS="$JAVA_OPTS -Dnewrelic.config.app_name='MY_APP_NAME'"

コンテナを起動すると、New Relicにアプリケーション名が表示されます。

ライセンスキー

この設定は、New Relic アカウントにデータを報告するために必要です。

ライセンスキーをコピーするには

  1. API keys UI にアクセスし、ライセンスキーを取得してください。

  2. これらのDockerfileコマンドの1つで、 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/logs
RUN chown -R tomcat:tomcat /usr/local/tomcat/newrelic/logs

Dockerfileに次のいずれかを追加して、ログをSTDOUTに送信することもできます。

オプション

コマンド

環境
変数

ENV NEW_RELIC_LOG_FILE_NAME=STDOUT

Javaシステム
プロパティ

ENV JAVA_OPTS=-Dnewrelic.config.log_file_name=STDOUT

環境(オプション)

Javaプロパティまたは環境変数のいずれかを渡して、エージェントがnewrelic.ymlで使用する環境固有のスタンザを判別できます。 Dockerを介してすべての構成を渡すのではなく、 newrelic.ymlファイルで環境固有の構成を制御したい場合は、このアプローチを使用してください。

これは、Dockerを介してnewrelic.environment Javaシステムプロパティを渡して、 newrelic.ymlの環境スタンザでカスタム値devを使用するDockerfileの例です。

  1. CMD命令のシェル形式を使用して、選択した新しい環境変数への参照を含めます(たとえば、 ENV )。

    CMD java -Dnewrelic.environment=$ENV -jar myjar.jar
  2. docker runコマンドラインに、コンテナに環境変数を設定するための引数を含めます。

    docker run -it -e "ENV=dev" myDockerImage

重要

newrelic.environmentの値を指定しない場合、エージェントは実稼働環境で実行されていると見なし、構成ファイルの本体の値を使用します。

エージェントが有効(オプション)

この設定は、エージェントを有効にするかどうかを制御します。例えば、すべてのインストールに同じDockerイメージを使用したいとします。しかし、エンジニアがテストアプリを起動するたびにNew Relicエージェントを実行するのは、インスタンス数を増やしたくないからです。

この問題は、 newrelic.environment Javaシステムプロパティを使用して解決できます。

  1. newrelic.ymlの本体で、 agent_enabled: falseを設定してJavaエージェントを無効にします。
  2. newrelic.ymlの特定の環境スタンザでは、 agent_enabled: trueを設定します。

そして、実行時に環境を指定することで、特定のエージェントを実行することができます。

追加のTomcat Dockerfileの例

次のステップ

これで、Dockerでの基本的なエージェントのインストールが完了しましたが、ここでは追加の手順をご紹介します。

Copyright © 2022 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.