• ログイン

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

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

問題を作成する

アプリケーションの自動ネーミング

アプリケーションに付けた名前は、New Relic のパフォーマンス指標を整理するのに役立ちます。

New Relic の Java エージェントは、 newrelic.yml で、 app_name という設定で指定されたアプリケーション名に対して、単一の JVM 内のすべてのトランザクションやその他のメトリクスを報告します (アプリケーションの命名に関する詳細は、 Name your Java application を参照してください)。 enable_auto_app_naming in newrelic.ymltrue に変更することで、アプリケーションはそのコンテキスト、フィルタ、サーブレット、またはリクエスト属性に合わせて命名されます。

この設定により、複数のウェブアプリケーションを1つのJVMで実行しながら、トランザクション、エラー、メトリクスをNew Relicのユーザーインターフェースで他の適切なアプリケーションに報告することができます。バックグラウンドタスクは、これまで通り newrelic.yml のデフォルトのアプリケーション名を使用します。

重要

これらの設定変更を有効にするには、JVMの再起動が必要です。

この設定はInfinite Tracingを有効にした場合には機能しません。

注意

アプリの自動ネーミングを有効にすると、エージェントに取り込まれるデータ量が増加します。 データ取り込みの警告と監視を行うには様々な方法があります

アプリケーション名のソース

enable_auto_app_namingtrue に設定すると、New Relic は以下の情報源を使ってアプリケーションの名前を付けます。

アプリの種類

ネーミングソース

バックグラウンドタスク

newrelic.ymlからのデフォルトのアプリケーション名です。

Webトランザクション

優先順位の高い順に並べています。

  • リクエスト属性(最優先)
  • サーブレットの初期化パラメーター
  • フィルターの初期化パラメーター
  • ウェブアプリケーションのコンテキストパラメーター
  • Webアプリのコンテキスト名(表示名)
  • Webアプリのコンテキストパス(最優先)

リクエスト属性

APPLICATION_NAME リクエスト属性は、XML内のどの設定よりも優先されます。この属性は、Web トランザクションのできるだけ早い段階で設定してください。複数回呼び出された場合は、最後に呼び出されたものがアプリケーション名を決定します。

ヒント

APPLICATION_NAME は ServletRequests でのみ動作します。

request属性を使用して、リクエストURIに基づいたきめ細かなアプリケーションの命名を行うこと。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
...
String requestUri = httpServletRequest.getRequestURI();
if (requestUri.startsWith("/my-special-request/")) {
request.setAttribute("com.newrelic.agent.APPLICATION_NAME", "MySpecialWebApp");
}
...

サーブレットの初期化パラメーター

web.xml の個々のサーブレットにアプリケーション名を設定するには、 init パラメータを使用します:

<servlet>
<servlet-name>SqlServlet</servlet-name>
<servlet-class>test.SqlServlet</servlet-class>
<init-param>
<param-name>com.newrelic.agent.APPLICATION_NAME</param-name>
<param-value>MyServletApp</param-value>
</init-param>
</servlet>

エージェントは、 init-param を呼び出すことで、その値を取得します。

javax.servlet.ServletConfig#getInitParameter(String)

を引数にして com.newrelic.agent.APPLICATION_NAME.

Web リクエストが複数のサーブレットを呼び出す場合は、最初に終了したサーブレットの init-param が優先されます。 init-param を持っていないサーブレットは、ウェブアプリのデフォルトのアプリケーション名を使用します。

アプリケーション名は、XMLで宣言する以外にも、javax.servlet.ServletRequestに属性を格納することで、アプリケーションコードで設定することができます。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
...
request.setAttribute("com.newrelic.agent.APPLICATION_NAME", "MyWebApp");
...

フィルターの初期化パラメーター

Webアプリにサーブレットがない場合は、フィルタのinitパラメータを使うことができます。

<filter>
<filter-name>SqlFilter</filter-name>
<filter-class>test.SqlFilter</filter-class>
<init-param>
<param-name>com.newrelic.agent.APPLICATION_NAME</param-name>
<param-value>MyFilterApp</param-value>
</init-param>
</filter>

エージェントは、 init-param の値を、 javax.servlet.FilterConfig#getInitParameter(String) を引数に com.newrelic.agent.APPLICATION_NAME を呼び出すことで取得します。アプリケーションの名前付けは、フィルタよりもサーブレットが優先されるため、フィルタのinitパラメータは、サーブレットが呼び出されなかった場合にのみ使用されます。最初に終了したフィルタの init-param が優先されます。

コンテキストパラメータ

コンテキストパラメーターを使ってアプリケーション名を設定するには

<context-param>
<param-name>com.newrelic.agent.APPLICATION_NAME</param-name>
<param-value>MyWebApp</param-value>
</context-param>

エージェントは、 javax.servlet.ServletContext#getInitParameter(String) を引数に com.newrelic.agent.APPLICATION_NAME を呼び出すことで、コンテキスト・パラメータの値を取得します。コンテキストパラメータは、 display-name 要素よりも優先されます。

表示名

display-name element in web.xml を使ってアプリケーション名を決定する。

<display-name>MyWebApp</display-name>

エージェントは、 display-name 要素の値を、 javax.servlet.ServletContext#getServletContextName() を呼び出すことで取得します。

コンテクストパス

display-name 要素がなく、アプリ名を設定するために他の上位階層の方法が使用されていない場合、アプリ名はウェブアプリのコンテキストパスから得られます。エージェントは、 javax.servlet.ServletContext#getContextPath() を呼び出すことで、コンテキストパスを取得します。

コンテキストパスは、リクエストのコンテキストを選択するために使用されるリクエストURIの部分です。コンテキストパスは、リクエストURIの中で常に最初に置かれます。例えば、以下のようになります。

次のようなURLを考えてみましょう。

http://example.com/newrelic-axis2-ws/getWeather

このURLに

  • リクエストURIは /newrelic-axis2-ws/getWeather です。
  • コンテキストパスは /newrelic-axis2-ws です。
  • アプリケーション名は newrelic-axis2-ws です。
Copyright © 2023 New Relic株式会社。

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