APMインサイト エージェント設定のオプション
このページでは、Webページのトランザクション追跡の設定チューニング法を説明します。設定はapminsight.confファイルで行います。ファイルがAPMインサイト エージェントのデプロイ先フォルダーにあることを確認してから作業してください。
- バックグラウンド トランザクションの設定は、バックグラウンド トランザクションの追跡、
- お客さま独自クラスの組み込み方は、カスタム インストルメンテーション、
- 類似トランザクションのマージ方法は、類似トランザクションのグループ化へ移動して確認ください。
以下、設定をまとめて説明します。
設定 | 説明 | デフォルト値 | |
---|---|---|---|
application.name* |
例:myonlineshopping.com
|
My Application |
|
apm.host* |
例:mymachine.mydomain.com |
||
apm.protocol.https |
|
false |
|
apm.port* |
例:9090 |
||
behind.proxy |
|
false |
|
agent.server.port* |
|
||
apdex.threshold |
|
0.5(秒) |
|
sql.capture.enabled |
|
true |
|
transaction.trace.enabled |
|
true |
|
transaction.trace.threshold |
|
2(秒) |
|
transaction.trace.sql.parametrize |
|
true |
|
transaction.trace.sql.stacktrace.threshold |
|
3(秒) |
|
webtransaction.trace.input.params.record |
|
false |
|
webtransaction.trace.input.params.ignore |
|
password、authKey |
|
webtransaction.naming.use.requesturl |
|
||
webtransaction.encoding.charset |
|
||
transaction.skip.listening |
|
*.css、*.js、*.gif、*.jpg、*.jpeg、*.bmp、*.png |
|
transaction.tracking.request.interval |
|
1(リクエスト) |
|
include.components |
メモ:パッケージ名を指定すると、デフォルトでインストルメンテーションの対象となり、custom_instrumentation.confでの同じ設定は不要です。 |
||
apminsight.log.dir |
|
||
apminsight.log.level |
|
INFO(レベル) |
|
autoupgrade.enabled |
|
false |
無効値が指定された場合、APMインサイトはデフォルト値を利用します。以下に示す項目以外は、実行中の変更が可能です。
- application.name
- apm.host
- apm.port
- agent.server.port
- apminsight.log.dir
- apminsight.log.level(Javaエージェントの場合。.NETエージェントでは、このプロパティも実行時に変更可能)
「*」のマークがあるものは、必須項目です。必須項目が1つでも指定されていない場合、エージェントは初期化や起動ができません。ただし、エージェント デプロイ先のアプリケーション サーバーは、正常起動します。
Apdexしきい値の詳細情報は、https://apdex.org/overview.htmlで確認ください。
バックグラウンド トランザクションの追跡
Webアプリケーションでは表の通信とは別に、バックグラウンドでメンテナンス、スケジュール、メッセージングなどを実行していることが多々あります。APMインサイトはこれらのトランザクションも取得し、ダッシュボードのバックグラウンド タブで表示します。
バックグラウンド トランザクションの追跡には、background_transaction.confファイルでの有効化が必要です。バックグラウンド トランザクションの設定法を、下に説明します。
設定 | 説明 | デフォルト値 |
---|---|---|
bgtransaction.tracking.enabled |
|
true |
bgtransaction.trace.enabled |
|
true |
bgtransaction.trace.threshold |
|
5(秒) |
bgtransaction.tracking.request.interval |
|
Javaでは1、.NETでは5 |
- これらの値は、Javaエージェントでは実行時の変更ができません。変更を有効にするには、サーバー再起動が必要です。
- .NETエージェントでは再起動不要で、値は実行中に更新されます。
カスタム インストルメンテーション
APMインサイト エージェントは、Webコンポーネントやフレームワークから事前定義のあるクラスを組み込み、アプリケーションを把握することができます。お客さま指定クラスの組み込みも可能です。カスタム インストルメンテーションを利用すれば、アプリケーションで利用している特定機能やモジュールの追跡が容易となります。
Javaエージェントでは、2通りの方法で、アプリケーションのカスタム インストルメンテーションができます。
1:設定ファイルを利用する
希望のクラスを組み込むには、「custom_instrumentation.conf」ファイルで以下の形式に従い、クラス名を指定してください。
Fully/qualified/ClassName : Methods to be instrumented
複数メソッドを指定するには、カンマ(,)区切りにしてください。メソッド名を指定しない場合は、指定クラスにあるすべてのメソッドを組み込みます。If there exists, overloading methods that needs to be instrumented, all overloaded methods will be instrumented. クラスは改行区切りで1つずつ指定してください。
例:
- a/b/c/CustomClass : methodA, methodB
- a/b/c/CustomClass:
パッケージにあるすべてのクラスを組み込む場合、パッケージ名を下のとおり記載します。
package_name/.*:
例:
- a/b/c/.* :
パッケージ全体の指定は推奨しません。パッケージにある全クラスの全メソッドを組み込むこととなり、CPUやメモリに余分な負荷がかかります。多くのメソッドはパフォーマンス監視と関係が薄く、トレースが余分に長くなります。ただし、コードの流れを把握するのが目的であれば、パッケージ全体の指定も可能です。
2:Javaアノテーションを利用する
お客さまアプリケーションのクラスやメソッドは、Javaアノテーションでも、カスタム インストルメンテーションが可能です。Javaアノテーションの利用で、トランザクションへのカスタム名の定義や、カスタム コンポーネントの割り当てが可能となります。
メモ:この機能は、エージェントのバージョン2.2から利用できます。
要件
- apminsight-javaagent.zipファイルをダウンロードしてください。エージェントjarや関連ファイルにくわえ、apminsight-javaagent-api.jarが入っています。
- apminsight-javaagent-api.jarファイルをプロジェクト ビルドのパスに追加してください。jarファイル エクスポートの際には、アプリケーションのライブラリも必要です。
カスタム インストルメンテーでは、2つのアノテーションを使います。
ApmTracker:トレースに組み込むあらゆるクラスやメソッド使えます。
ApmRootTracker:トランザクション実行の開始地点となるメソッドで使います。
ApmTracker
このアノテーションはクラスにもメソッドにも利用できます。クラスで利用すると、内部の全メソッドに属性が適用されます。アノテーションのオーバーライドは、メソッド横断で実行されます。
属性
アノテーションする要素にコンポーネント名を定義します。任意属性です。
例
@ApmTracker
public class Category {
...
}
@ApmTracker(component="payment"
public class PaymentProcessor {
...
}
ケース3:メソッドでの利用例
public class Product {
@ApmTracker
public int getPrice(String product, String brand) {
...
}
...
@ApmTracker(component="FetchBrand")
private List fetchAllBrandsList(String product) {
...
}
}
ApmRootTracker
このアノテーションは、メソッドでのみ利用できます。アノテートしたメソッドが、サーバーのトランザクション処理中に最初に実行される際、トランザクションはtxnName属性で指定した名前に置き換わります。それ以外の場合は、通常のメソッド呼び出しの扱いとなり、トレースにも入ります。
属性
この属性の値は、ApmRootTrackerがアノテートしたメソッドを実行する際、トランザクションの命名に利用されます。
アノテーションする要素にコンポーネント名を定義します。任意属性です。
例
@ApmRootTracker(txnName="Service-Initialisation")
public void init() {
...
}
}
類似トランザクションのグループ化
トランザクション名の動的変化は多くのアプリケーションで日常的に発生しており、アプリケーション追跡が困難となる要因です。動的トランザクションでは、Webアプリケーションは単一URLを利用しつつも、実行のたび一意の英数字の識別子をURLに付加するため、Webトランザクション名自体が変わってしまいます。このようなURLを個々に追跡するのは、超人的作業です。類似トランザクションをグループにまとめれば、これら動的トランザクションは、実際のURLに一元化して監視できます。
設定の編集UIを開き、トランザクション マージ タブを選択、マージするパターンを手動での手順3に従って指定します。
手動で行う場合は、次の手順で操作します。
- エージェント インストール後、APMインサイト.NETエージェントへ移動してください。
- DotNetAgentフォルダーを開きます。
- transaction_merge_patterns.confを開き、下のサンプルのようにパターンを追加します。
- aspsite/account/~=account:このパターンは、aspsite/account/で始まるトランザクションにマッチし、accountへのリネームを行います。
- aspsite/~/basicdetails=basicdetails:このパターンは、aspsite/で始まり/basicdetailsで終わるトランザクションにマッチし、basicdetailsへのリネームを行います。
- ~/educationdetails=educationdetails:このパターンは、/educationdetailsで終わるトランザクションにマッチし、educationdetailsへのリネームを行います。
- 編集後は、transaction_merge_patterns.confファイルを、次の場所に貼り付けてください。
- %WINDIR%ProgramData\DotnetAgent(64ビット バージョンの場合):Windows Server 2003では、対応するパスは次の通りです。%WINDIR%Documents and Settings\All Users\Application Data\DotNetAgent
- %WINDIR%ProgramData\DotnetAgent(32ビット バージョンの場合):Windows Server 2003では、対応するパスは次の通りです。%WINDIR%Documents and Settings\All Users\Application Data\DotNetAgent
- 監視が複数ある場合は、アプリケーション用のサブフォルダーごとに、設定ファイルを貼り付ける必要があります。
- 設定ファイルではいつでも、パターンを追加、削除、コメントが可能です。
- エージェントを設定したアプリケーション サーバーをシャットダウンします。
- apminsight.confがあるディレクトリに、新規ファイル「transaction_merge_patterns.conf」を作成します。
- ファイルをテキスト エディターで開き、下記の構文で、キー・バリューのペアを指定してください。
- URL=new_name_to_be_assigned(キーは正規表現をサポート)
- アプリケーション サーバーの起動後は、上記パターンでトランザクションのマージが行われます。
例:
次のトランザクションURLがあるものとします。
ebay/shop/user/4534634 ebay/shop/user/1380284
ebay/shop/0278734/chocolate/orion
ebay/shop/0278734/chocolate/snickers
ebay/shop/3847553/stationary/pencil
ebay/shop/9734944/stationary/pen
transaction_merge_patterns.confで以下のように指定してください。
ebay/shop/.*/chocolate/.*=ebay/shop/chocolate
ebay/shop/.*/stationary/.*=ebay/shop/stationary
ebay/shop/user/.*=ebay/shop/users
- お客さまアプリケーションで、apminsight.confファイルがあるディレクトリに、新規ファイル「transaction_merge_patterns.conf」を作成します。
- ファイルをテキスト エディターで開き、下記の構文で、キー・バリューのペアを指定してください。
URL=new_name_to_be_assigned(キーは正規表現をサポート)
- Railsサーバーの再起動後は、上記パターンでトランザクションのマージが行われます。
例:
ruby/shop/item/laptops/.*=shop/laptops
ruby/shop/item/.*/dell/.*=shop/item/dell
.*/cart/purchase=shop/purchase