Application Real-Time Monitoring Service (ARMS) では、カスタム構成 タブで ARMS エージェントのスイッチをオンまたはオフにして特定の機能を有効または無効にしたり、サンプリングポリシーを構成したりできます。
ARMS API を使用してこれらの設定を構成する方法については、「SaveTraceAppConfig」をご参照ください。
前提条件
アプリケーションに ARMS エージェントがインストールされています。 詳細については、「アプリケーションモニタリングの概要」をご参照ください。
手順
ARMS console にログインします。 左側のナビゲーションウィンドウで、 を選択します。
[アプリケーションリスト] ページで、上部のナビゲーションバーでリージョンを選択し、管理するアプリケーションの名前をクリックします。
説明[言語] 列に表示されるアイコンは、アプリケーションが記述されている言語を示します。
: Java アプリケーション
: Go アプリケーション
: Python アプリケーションハイフン ([-]): Managed Service for OpenTelemetry で監視されるアプリケーション。
左側のナビゲーションウィンドウで、[アプリケーション設定] をクリックします。 表示されるページで、[カスタム構成] タブをクリックします。
必要に応じてパラメーターを設定し、ページの下部にある [保存] をクリックします。
サンプリングレート設定
ARMS Pro Edition
[サンプリングレート設定] セクションでは、トレースのサンプリングポリシーとサンプリングインターフェイスを指定できます。 詳細については、「V3.2.8 より前の ARMS エージェントのトレースサンプリングモードを選択する」をご参照ください。
トレースサンプリング設定は、スロットリング設定よりも優先されます。

ARMS Basic Edition
ARMS Basic Edition は、クライアントサンプリングポリシーをサポートしています。 収集されたデータの行数に基づいて課金されます。 デフォルトでは、各 ARMS エージェントはアカウントの各インターフェイスについて 1 分あたり 1 つのトレースを無料で収集します。 また、[クライアントサンプリングポリシーを追加] をクリックして、カスタムサンプリングポリシーを追加することもできます。
パラメーター | 説明 |
サンプリングポリシー名 | サンプリングポリシーの名前。 |
サンプリングタイプ と サンプリング値 |
|
適用インターフェース | サンプリングポリシーが適用されるインターフェイスの範囲。 有効な値: [各インターフェイス] または [インターフェイスを指定]。 [インターフェイスを指定] を選択した場合は、インターフェイス名を入力する必要があります。 説明 [インターフェイスを指定] を選択した場合は、1 つのインターフェイス名のみを入力できます。 複数のインターフェイスを指定する場合は、各インターフェイスのサンプリングポリシーを設定する必要があります。 |
サンプリングポリシーを設定した後、コンソールでポリシーを有効にするかどうかを指定できます。 複数のサンプリングポリシーが有効になっている場合、ポリシーは次の順序で有効になります。デフォルトサンプリング (無料) > トラフィック制限 (指定されたインターフェイス) > 固定比率サンプリング (指定されたインターフェイス) > トラフィック制限 (すべてのインターフェイス) > 固定比率サンプリング (すべてのインターフェイス)。 また、サンプリングポリシーの設定を変更したり、サンプリングポリシーを削除したりすることもできます。

エージェントスイッチとログレベル
[エージェントスイッチ設定] セクションでは、ARMS エージェントのスイッチとさまざまなプラグインのスイッチをオンまたはオフにし、ログレベルを構成できます。
ARMS エージェントとログレベルの変更は、アプリケーションを再起動しなくてもすぐに有効になります。 ARMS エージェントのスイッチがオフになっている場合、ARMS はアプリケーションを監視できません。 注意して進めてください。 各プラグインスイッチへの変更を有効にするには、アプリケーションを手動で再起動する必要があります。

しきい値設定
[しきい値設定] セクションでは、低速 SQL クエリ、インターフェイスの応答時間、およびスロットリングのしきい値を構成できます。

メッセージキュー設定
[メッセージキュー構成] セクションでは、メッセージキューに関する監視設定を構成できます。

カスタム RabbitMQ コンシューマー: カスタムコンシューマーのクラス名または匿名内部コンシューマーのクラス名を指定して、コンシューマーのトレースを表示できます。 複数のコンシューマーはコンマ (,) で区切ります。
カスタム Kafka 消費メソッド: ネイティブ Kafka SDK を使用してメッセージを消費するときに、トレースとメトリックを表示するためにカスタム消費メソッドを指定できます。
Kafka は自動メッセージパススルーコンテキストを送信します: 配信トレースと消費トレースを関連付けるために、Kafka メッセージに複数のヘッダーが自動的に追加されます。
エージェント収集設定

呼び出しチェーンを収集: トレースデータが報告されるかどうかを制御します。 スイッチはデフォルトでオンになっています。 オフにすると、トレースデータは報告されなくなります。
スロットリングしきい値: エージェントが 1 秒あたりに処理できるリクエストの最大数を指定します。デフォルトは 100 です。 このしきい値を超えるリクエストのトレースデータは収集されません。
説明トレースサンプリング設定は、スロットリング設定よりも優先されます。
プローブの最大処理可能 QPS しきい値: エージェントが 1 秒あたりに処理できるリクエストの最大数を指定します。 パフォーマンス最適化のために、システムがこのしきい値を最大 5% 調整する場合があることに注意してください。 このしきい値を超えるリクエストは監視されません。 これらのリクエストについては、スパンは生成されず、メトリックは記録されず、トレース ID はログに出力されません。
エントリなしで内部呼び出しデータを収集: エントリポイントのない内部呼び出しデータは、一般に、スケジュールされた HTTP リクエスト、データベースインタラクション、メッセージ送信、または JDK スレッドプールを介して開始された RPC 呼び出しなどのアクティビティによって生成されたスパンおよびメトリックデータを指します。
ログレベル構成: トラブルシューティングのためにエージェントのログレベルを調整します。
インターフェイス呼び出し設定

インターフェイス応答時間しきい値: リクエストの応答時間がしきい値を超えると、リクエストは低速としてマークされます。
ホワイトリスト: [概要] タブと [シナリオベースの分析] > [例外] タブから除外する例外を指定します。
例外フィルタリング親クラス継承: 有効にすると、現在収集されている例外が例外フィルタリングホワイトリストで構成されている例外クラスのサブクラスである場合、それもフィルタリングされます。
構成効果: フィルタリング基準を満たす例外は、ARMS コンソールに表示されません。
エラーコードフィルター: デフォルトでは、400 を超える HTTP ステータスコードはエラー呼び出しとして分類されます。 400 を超える特定のステータスコードをエラーとして分類したくない場合は、ホワイトリストを設定してこれらのエラーを無視できます。
無効なインターフェイス呼び出しのフィルタリング: 呼び出しの詳細を表示する必要のないインターフェイスの名前を入力して、それらを非表示にします。 ARMS エージェントは、それらの可観測性データを報告しません。
インターフェイス呼び出しインジケーターにアップストリームインターフェイス名が記録されるかどうか および インターフェイス呼び出しインジケーターにアップストリームアプリケーション名が記録されるかどうか: このインターフェイスを呼び出すアップストリームアプリケーションとアップストリームインターフェイスをインターフェイスメトリックに記録するかどうかを指定します。 これは主に、提供されるサービスのアップストリームトレースとダウンストリームトレースにデータが存在するかどうか に影響します。 アプリケーションに多くのアップストリームアプリケーションがある場合、この情報を記録すると、メトリックレポートの量が大幅に増加し、コストが増加する可能性があります。
インターフェイス呼び出しインジケーターが元のステータスコードを記録するかどうか: HTTP インターフェイス関連のメトリックに元の応答コードを記録するかどうかを指定します。
プールされた監視設定

スレッドプールと接続プールの監視: Apache Tomcat、Apache Dubbo、High-speed Service Framework (HSF) などのフレームワークのスレッドプールメトリックを監視するかどうかを指定します。 この機能を有効にするには、ARMS エージェントを最新バージョンに更新する必要があります。
スレッドプールのスレッド名パターン抽出ポリシー: この機能は、デフォルトでは、スレッドプール内の実行中のスレッドのスレッド名に含まれるすべての数字を
*に置き換えます。 また、スレッド名の末尾の文字のみを*に置き換えるように調整することもできます。 複数の Dubbo プロバイダーが開始され、これらのプロバイダーが異なるリスニングポートを持つアプリケーションでは、デフォルトの戦略が適用されると、抽出されたスレッド名テンプレートが同一であるため、2 つの Dubbo プロバイダーからの 2 つのスレッドプールが 1 つに集約される可能性があります。 この時点で、この戦略を調整すると、2 つのスレッドプールを区別できます。スレッドプール使用シナリオフィルタリング および スレッドプールのスレッド名パターンフィルタリング: 特定のスレッドプールのメトリックは、使用シナリオとスレッド名パターンに基づいて除外できます。
説明これらの設定は、Java v4.2.0 以降の ARMS エージェントに対してのみ有効です。
スレッドプールの使用シナリオとは、スレッドが使用されるコンテキストを指し、現在、Tomcat、Vert.x、Undertow、Dubbo、Jetty、AliyunJavaAgent、デフォルトなど、いくつかのタイプをサポートしています。 これらのうち、AliyunJavaAgent はエージェントによって使用されるスレッドプールを表し、「デフォルト」はその他の分類されていないスレッドプールを表します。
スレッドプールのスレッド名パターンは、スレッドプール内のスレッド名を処理した後に得られるパターンを示します。たとえば、数字を含むスレッド名の一部を * に変換して、http-nio-*-exec-* のようなパターンを取得します。
スパン属性設定

OTel Spec 規則属性を文書化する: OpenTelemetry 仕様 は、各プラグインタイプによって生成されるスパンに含める必要がある属性を規定しています。 ただし、報告されるデータ量を考慮して、ARMS エージェントはデフォルトではこれらの属性をスパンに記録しません。 必要に応じてこれを有効にすることができます。 有効にした後、さまざまなフレームワークによって追加される追加属性については、OpenTelemetry 仕様ドキュメント を参照してください。
OTel Spec 規則属性を文書化する: OpenTelemetry 仕様 は、各プラグインタイプによって生成されるスパンに含める必要がある属性を規定しています。 ただし、報告されるデータ量を考慮して、ARMS エージェントはデフォルトではこれらの属性をスパンに記録しません。 必要に応じてこれを有効にすることができます。 有効にした後、さまざまなフレームワークによって追加される追加属性については、OpenTelemetry 仕様ドキュメント を参照してください。
詳細設定

メソッドスタックの最大長: メソッドスタックの最大長を指定します。 デフォルト値: 128。 最大値: 400。 値はエントリ数を示します。
同じ例外を区別するためのスタックの深さ: 同じタイプの例外を区別するために使用されるスタックの深さを指定します。 一般に、このパラメーターは最初の相違点の呼び出しの深さに設定されます。
SQL の最大長を収集: SQL 文の最大長を指定します。 デフォルト値: 1024。 有効な値: 256 ~ 4096。 値は文字数を示します。
SQL バインディングを収集: PrepareStatement パラメーターにバインドされた変数値をキャプチャするかどうかを指定します。 変更は、アプリケーションを再起動しなくてもすぐに有効になります。 現在、このパラメーターは、PrepareStatement パラメーターに変数値が設定されている場合にのみ設定できます。
生の SQL: SQL 文に対して切り捨て以外の操作を実行するかどうかを指定します。
Mysql クエリの戻り値のサイズを記録するかどうか: ARMS が MySQL クエリの戻り値のサイズを記録することを許可するかどうかを指定します。
トレースストレージ: トレースを時間順にソートする新しいストレージ形式を使用するかどうかを指定します。 デフォルトでは、このスイッチはオンになっています。
内部呼び出しスタックの削減: for ループなどの重複した呼び出しを簡素化するかどうかを指定します。 変更は、アプリケーションを再起動しなくてもすぐに有効になります。
入力パラメーターの最大長: 入力パラメーター値の最大長を指定します。 デフォルト値: 512。 最大値: 2048。 値は文字数を示します。
分位数統計: 分位数統計を有効にするかどうかを指定します。
説明分位数とは、確率変数の確率分布を複数の等しい部分に分割する値です。 一般的な分位数には、中央値、四分位数、パーセンタイルなどがあります。
自動パススルー非同期: スレッドプールを使用して非同期タスクが送信されると、非同期コンテキストは自動的にパススルーされます。
非同期透過型伝送スキャンパッケージ名: 非同期タスクを監視するために、アプリケーションの構成に非同期パススルーのスキャンパッケージを追加できます。 Runnable オブジェクト、Callable オブジェクト、または Supplier オブジェクトが作成された後、非同期パススルーのスキャンパッケージの対応するメソッドは、現在のスレッドのトレースコンテキストを自動的にキャプチャします。 次に、スレッドが非同期モードで使用されると、メソッドはキャプチャされたトレースコンテキストをスレッドに渡します。 ARMS エージェントのバージョンは v2.7.1.3 以降である必要があります。
リクエストで Traceid が返される: HTTP リクエストの応答ヘッダーで
eagleeye-traceidフィールドを返すかどうかを指定します。
スレッド設定
[スレッド設定] セクションでは、[スレッド分析マスタスイッチ] をオンまたはオフにできます。
この機能は、Application Monitoring Pro Edition のみでサポートされています。

アプリケーションログの関連付け
[ログ収集構成] セクションで、アプリケーションに関連付けるログソースを構成します。 詳細については、「ログ分析」をご参照ください。
この機能は、Application Monitoring Pro Edition のみでサポートされています。

URL 収束ルール
[URL 集約] セクションでは、収束機能を有効または無効にできます。 また、収束しきい値と収束ルールを設定することもできます。 URL 収束とは、類似の URL が単一のオブジェクトとして一緒に表示されることを意味します。 たとえば、/service/demo/ で始まる URL はオブジェクトとして表示されます。 収束しきい値は、URL 収束をトリガーするために必要な URL の最小数です。 たとえば、しきい値が 100 に設定されている場合、100 個の URL がルールの正規表現に一致する場合にのみ URL が収束されます。

Arthas 監視の構成
[arthas 監視] セクションでは、Arthas 診断機能を有効または無効にできます。 また、Arthas 診断を実行する IP アドレスを指定することもできます。 詳細については、「Arthas 診断を使用する」をご参照ください。
この機能は、Application Monitoring Pro Edition のみでサポートされています。

継続的プロファイリング
[継続的プロファイリング] セクションでは、メインスイッチと CPU ホットスポット、メモリホットスポット、コードホットスポットのスイッチをオンまたはオフにできます。 また、継続的プロファイリングを有効にする IP アドレスまたは CIDR ブロックを指定することもできます。 詳細については、「継続的プロファイリング機能を使用する」をご参照ください。 
トレースプロトコル設定
[トレースプロトコル設定] セクションでは、ビジネス要件に基づいてトレースプロトコルを選択できます。 ARMS でサポートされているトレースプロトコルについては、「サポートされているトレース伝播プロトコル」をご参照ください。

デフォルトでは、呼び出しが到着すると、ARMS エージェントは EagleEye、OpenTelemetry、SkyWalking、Jaeger、Zipkin の順序で特定のプロトコルのヘッダーを確認します。 プロトコルヘッダーが検出されると、エージェントはプロトコルに基づいてトレースコンテキストを復元し、後続のダウンストリーム呼び出しには検出されたプロトコルヘッダーが含まれます。 プロトコルヘッダーが検出されない場合は、デフォルトで EagleEye プロトコルが使用されます。
このセクションでは、優先順位を付けるプロトコルを指定できます。 設定を保存した後、ARMS は指定されたプロトコルのヘッダーを優先的に確認します。 たとえば、次の構成では、ARMS エージェントは Jaeger、EagleEye、OpenTelemetry、SkyWalking、Zipkin の順序でプロトコルヘッダーを確認します。

1 つのプロトコルのみを使用するように選択することもできます。 たとえば、次の構成では、呼び出しが到着すると、ARMS エージェントは Jaeger ヘッダーのみを確認します。 Jaeger ヘッダーが見つからない場合、エージェントは他のプロトコルヘッダーを確認せずに、新しいトレースコンテキストを生成します。

情報秘匿化
[情報秘匿化] セクションで、データ収集中に JVM システムパラメーター、Kubernetes YAML 構成、メソッド入力パラメーター、Arthas 環境変数、およびシステム変数を秘匿化するルールを構成します。 ルールの各要素は大文字と小文字を区別しない正規表現を表します。 たとえば、password は正規表現 .*password.* を示します。 要素はコンマ (,) で区切ります。
ARMS エージェントは、データを収集するときに、キーに基づいてデータを秘匿化します。 キーが正規表現に一致する場合、対応する値は秘匿化されます。 次の図に示すように、ルールで licenseKey を指定すると、-Darms.licenseKey キーの値は秘匿化されます。
アプリケーション設定を他のアプリケーションに同期する
アプリケーションの設定を他のアプリケーションに同期できます。
単一の構成項目を他のアプリケーションに同期する
構成項目のセクションで、[保存して他のアプリケーションに一括コピー] をクリックします。
表示されるダイアログボックスで、特定のアプリケーションまたは他のすべてのアプリケーションを選択し、[OK] をクリックします。

すべての構成項目を他のアプリケーションに同期する
ページの下部にある [保存して他のアプリケーションに一括コピー] をクリックします。
表示されるダイアログボックスで、特定のアプリケーションまたは他のすべてのアプリケーションを選択し、[OK] をクリックします。

アプリケーション設定をグローバルに適用する
指定されたアプリケーション設定をグローバルに適用できます。 新しいアプリケーションを作成すると、これらの設定がデフォルトで使用されます。
ページの下部にある [現在のアプリケーション設定をグローバルデフォルト設定に保存] をクリックします。
表示されるメッセージで、[OK] をクリックします。