このトピックでは、ARMS アプリケーションモニタリングの一般的なメトリックについて説明します。これらのメトリックを使用して、カスタム Grafana ダッシュボードを作成できます。
Managed Service for OpenTelemetry を介して接続されたアプリケーションは、ビジネスメトリックのみをサポートします。JVM メトリックやシステムメトリックなどの他のメトリックはサポートされていません。
ビジネス メトリック
共通ディメンション
ディメンション名 | ディメンションキー |
サービス名 | service |
サービス PID | pid |
マシン IP | serverIp |
インターフェイス | rpc |
メトリックリスト
すべてのアクセスタイプには、以下のメトリックが含まれます。クエリを実行する際、$callType を特定のアクセスタイプに置き換えてください。アクセスタイプの詳細については、「サービスアクセスタイプと利用可能なディメンション」をご参照ください。
たとえば、HTTP サービスのリクエスト数をクエリするには、arms_$callType_requests_count を arms_http_requests_count に変更します。
メトリック名 | メトリック | メトリックタイプ | 収集間隔 | 単位 | ディメンション |
リクエスト数 | arms_$callType_requests_count | Gauge | 15 秒 | なし | ディメンションは、サービスのアクセスタイプによって異なります。詳細については、「サービスアクセスタイプと利用可能なディメンション」をご参照ください。 |
エラーリクエスト数 | arms_$callType_requests_error_count | Gauge | 15 秒 | なし | |
リクエスト期間 | arms_$callType_requests_seconds | Gauge | 15 秒 | 秒 | |
低速リクエスト数 | arms_$callType_requests_slow_count | Gauge | 15 秒 | なし | |
リクエスト期間の分位数 | arms_$callType_requests_latency_seconds | Summary | 15 秒 | 秒 | このディメンションは、サービスアクセスタイプが HTTP で、分位数統計が有効になっている場合にのみ利用可能です。分位数統計を有効にする方法については、「詳細設定」をご参照ください。 分位数ディメンション:
|
分位数メトリックを除き、前述のメトリックはすべて Gauge タイプです。これは、各データポイントの値が収集間隔内の累積合計値を表すことを意味します。これは、オープンソースフレームワークによって生成されるメトリックとは異なります。たとえば、1 分間の平均クエリ/秒 (QPS) を計算する場合、ARMS メトリックの Prometheus Query Language (PromQL) 式は sum_over_time(arms_$callType_requests_count[1m])/60 です。オープンソースフレームワークの場合、式は通常 rate(http_server_requests_count[1m]) です。
メトリックストレージインスタンスの説明
ビジネスメトリックは、詳細メトリックライブラリ (metricstore-apm-metrics-detail) に保存されます。
集計ビジネスメトリック
ビジネスメトリックは、呼び出しタイプごとに個別のメトリックを作成します。これにより、単一のアプリケーションに HTTP や Dubbo などの複数の呼び出しタイプがある場合、PromQL 式が長くなり、複雑になります。
ビジネスメトリックは、すべての観測ディメンションを記録します。ただし、一部の統計シナリオではすべてのディメンションが必要なわけではありません。これにより、一部のシナリオでビジネスメトリックを直接クエリするとパフォーマンスが低下します。
これらの問題を解決するために、ARMS は集計ビジネスメトリックを提供します。
メトリックの説明
集計ビジネスメトリックは、以下のカテゴリに分類されます:
一般
すべてのアクセスタイプのリクエスト数、エラー数、低速リクエスト数、および平均リクエスト期間を記録します。
データベース
データベースアクセスタイプのリクエスト数、エラー数、低速リクエスト数、および平均リクエスト期間を記録します。
SQL クラス
データベースアクセスタイプのリクエスト数、エラー数、低速リクエスト数、および平均リクエスト期間を記録します。データベースカテゴリと比較して、このカテゴリには SQL ディメンションが追加されます。
例外
例外が発生した場合のすべてのアクセスタイプのリクエスト数と平均リクエスト期間を記録します。
ステータスコード
HTTP シナリオにおける異なるステータスコードのリクエスト数を記録します。
分位数
すべてのアクセスタイプのリクエスト期間の分位数を記録します。
分位数カテゴリを除き、各主要カテゴリには 2 種類のメトリックがあります。1 つは通常の集計メトリックで、xxx_raw 形式で命名されます。もう 1 つは次元削減メトリックで、xxx_ign_x_y 形式で命名されます。ここで x と y はメトリックから除外された集計ディメンションです。
メトリックタイプと収集間隔
特に指定がない限り、すべての集計ビジネスメトリックは Gauge タイプで、収集間隔は 15 秒です。
共通ディメンション
以下のディメンションは、すべての集計メトリックに存在します:
ディメンション | 説明 |
pid | アプリケーション PID |
service | アプリケーション名 |
serverIp | インスタンス IP |
source | メトリックソース:
|
メトリックリスト
メトリックカテゴリ | メトリック名 | メトリック | 単位 | その他のディメンション |
一般 | リクエスト数 | arms_app_requests_count_raw | 単位 |
|
arms_app_requests_count_ign_destid_endpoint_parent_ppid_prpc_rpc | 個 | destId、endpoint、parent、ppid、prpc、および rpc ディメンションを除外します。 | ||
arms_app_requests_count_ign_destid_endpoint_rpc_prpc | 個 | destId、endpoint、rpc、および prpc ディメンションを除外します。 | ||
arms_app_requests_count_ign_destid_endpoint_parent_ppid_prpc | 個 | destId、endpoint、parent、ppid、および prpc ディメンションを除外します。 | ||
arms_app_requests_count_ign_parent_ppid_prpc_rpc | 個 | parent、ppid、prpc、および rpc ディメンションを除外します。 | ||
エラーリクエスト数 | arms_app_requests_error_count_raw | 個 |
| |
arms_app_requests_error_count_ign_destid_endpoint_rpc_prpc | 個 | destId、endpoint、rpc、および prpc ディメンションを除外します。 | ||
arms_app_requests_error_count_ign_destid_endpoint_parent_ppid_prpc | 個 | destId、endpoint、parent、ppid、および prpc ディメンションを除外します。 | ||
arms_app_requests_error_count_ign_parent_ppid_prpc_rpc | 個 | parent、ppid、prpc、および rpc ディメンションを除外します。 | ||
arms_app_requests_error_count_ign_parent_ppid_prpc_rpc | 個 | parent、ppid、prpc、および rpc ディメンションを除外します。 | ||
低速リクエスト数 | arms_app_requests_slow_count_raw | 個 |
| |
arms_app_requests_slow_count_ign_destid_endpoint_parent_ppid_prpc_rpc | 個 | destId、endpoint、parent、ppid、prpc、および rpc ディメンションを除外します。 | ||
arms_app_requests_slow_count_ign_destid_endpoint_rpc_prpc | 個 | destId、endpoint、rpc、および prpc ディメンションを除外します。 | ||
arms_app_requests_slow_count_ign_destid_endpoint_parent_ppid_prpc | 個 | destId、endpoint、parent、ppid、および prpc ディメンションを除外します。 | ||
arms_app_requests_slow_count_ign_parent_ppid_prpc_rpc | 個 | parent、ppid、prpc、および rpc ディメンションを除外します。 | ||
リクエスト期間 | arms_app_requests_seconds_raw | 秒 |
| |
arms_app_requests_seconds_ign_destid_endpoint_parent_ppid_prpc_rpc | 秒 | destId、endpoint、parent、ppid、prpc、および rpc ディメンションを除外します。 | ||
arms_app_requests_seconds_ign_destid_endpoint_rpc_prpc | 秒 | destId、endpoint、rpc、および prpc ディメンションを除外します。 | ||
arms_app_requests_seconds_ign_destid_endpoint_parent_ppid_prpc | 秒 | destId、endpoint、parent、ppid、および prpc ディメンションを除外します。 | ||
arms_app_requests_seconds_ign_parent_ppid_prpc_rpc | 秒 | parent、ppid、prpc、および rpc ディメンションを除外します。 | ||
データベース | データベースリクエスト数 | arms_db_requests_count_raw | 単位 |
|
arms_db_requests_count_ign_rpc | 個 | インターフェイスディメンションを除外します。 | ||
データベースリクエストエラー数 | arms_db_requests_error_count_raw | 個 |
| |
arms_db_requests_error_count_ign_rpc | 単位 | インターフェイスディメンションを除外します。 | ||
データベース低速リクエスト数 | arms_db_requests_slow_count_raw | 個 |
| |
arms_db_requests_slow_count_ign_rpc | 個 | インターフェイスディメンションを除外します。 | ||
データベース リクエスト期間 | arms_db_requests_seconds_raw | 秒 |
| |
arms_db_requests_seconds_ign_rpc | 秒 | インターフェイスディメンションを除外します。 | ||
SQL クラス | SQL リクエスト数 | arms_sql_requests_count_raw |
| |
arms_sql_requests_count_ign_rpc | インターフェイスディメンションを除外します。 | |||
SQL リクエストエラー数 | arms_sql_requests_error_count_raw | 個 |
| |
arms_sql_requests_error_count_ign_rpc | 個 | インターフェイスディメンションを除外します。 | ||
SQL 低速リクエスト数 | arms_sql_requests_slow_count_raw | 個 |
| |
arms_sql_requests_slow_count_ign_rpc | 個 | インターフェイスディメンションを除外します。 | ||
SQL リクエスト期間 | arms_sql_requests_seconds_raw | 秒 |
| |
arms_sql_requests_seconds_ign_rpc | 秒 | インターフェイスディメンションを除外します。 | ||
例外 | 例外リクエスト数 | arms_exception_requests_count_raw | 個 |
|
arms_exception_requests_count_ign_destid_endpoint_rpc | 個 | destid、endpoint、および rpc ディメンションを除外します。 | ||
arms_exception_requests_count_ign_destid_endpoint | 個 | destid および endpoint ディメンションを除外します。 | ||
例外リクエスト期間 | arms_exception_requests_seconds_raw | 秒 |
| |
arms_exception_requests_seconds_ign_destid_endpoint_rpc | 秒 | destid、endpoint、および rpc ディメンションを除外します。 | ||
arms_exception_requests_seconds_ign_destid_endpoint | 秒 | destid および endpoint ディメンションを除外します。 | ||
ステータスコード | ステータスコード別のリクエスト数 | arms_requests_by_status_count_raw | 回 |
|
arms_requests_by_status_count_ign_rpc | 個 | インターフェイスディメンションを除外します。 | ||
分位数 | リクエスト期間の分位数 説明 エージェント V4.x 以降でサポートされています。 | arms_uni_requests_latency_seconds |
|
使用例
PromQL を使用してすべてのアプリケーションインターフェイスのリクエストをカウントするメトリックの選択方法
インターフェイスのリクエスト数を提供するメトリックを見つけます。一般カテゴリのメトリックがこの要件を満たします。
統計結果にはインターフェイスディメンションのみが必要です。アップストリームインターフェイス、アップストリームアプリケーション、リモートアドレスなどの他のディメンションは不要です。特定のメトリックを選択する際は、そのメトリックにインターフェイスディメンションが含まれ、他のディメンションが可能な限り少ないことを確認してください。
上記分析に基づくと、最適なメトリックは arms_app_requests_count_ign_destid_endpoint_parent_ppid_prpc です。
メトリックストレージインスタンスの説明
以下のメトリックは、コアメトリックライブラリ (metricstore-apm-metrics) に保存されます:
arms_app_requests_{metric}_ign_destid_endpoint_parent_ppid_prpc_rpc
arms_app_requests_{metric}_ign_destid_endpoint_rpc_prpc
arms_app_requests_{metric}_ign_destid_endpoint_parent_ppid_prpc
その他の集計ビジネスメトリックは、詳細メトリックライブラリ (metricstore-apm-metrics-detail) に保存されます。
JVM メトリック
共通ディメンション
ディメンション名 | ディメンションキー |
サービス名 | service |
サービス PID | pid |
マシン IP | serverIp |
メトリックリスト
メトリック名 | メトリック | メトリックタイプ | 収集間隔 | 単位 | ディメンション |
合計 GC 回数 | arms_jvm_gc_total | Counter | 15 秒 | なし | 世代別 GC 領域:
Cause (GC 原因) (エージェント V4.4.0 以降でサポート):System.gc()、Heap Dump Initiated GC、Allocation Failure など。 |
合計 GC 期間 | arms_jvm_gc_seconds_total | Counter | 15 秒 | 秒 | |
間隔ごとの GC 回数 | arms_jvm_gc_delta | Gauge | 15 秒 | なし | |
間隔ごとの GC 期間 | arms_jvm_gc_seconds_delta | Gauge | 15 秒 | 秒 | |
JVM スレッド数 | arms_jvm_threads_count | Gauge | 15 秒 | なし | State (スレッド状態):
|
JVM メモリ領域の初期サイズ | arms_jvm_mem_init_bytes | Gauge | 15 秒 | バイト | Area:
ID (領域の内訳):
|
JVM メモリ領域の最大サイズ | arms_jvm_mem_max_bytes | Gauge | 15 秒 | バイト | |
JVM メモリ領域の使用サイズ | arms_jvm_mem_used_bytes | Gauge | 15 秒 | バイト | |
JVM メモリ領域のコミット済みサイズ | arms_jvm_mem_committed_bytes | Gauge | 15 秒 | バイト | |
JVM メモリ領域の使用率 | arms_jvm_mem_usage_ratio | Gauge | 15 秒 | 比率 (0 から 1) | |
JVM ロード済みクラス | arms_class_load_loaded | Counter | 15 秒 | なし | なし |
JVM アンロード済みクラス | arms_class_load_un_loaded | Counter | 15 秒 | なし | なし |
JVM バッファープールサイズ | arms_jvm_buffer_pool_total_bytes | Gauge | 15 秒 | バイト | ID (領域):
|
JVM バッファープールの使用サイズ | arms_jvm_buffer_pool_used_bytes | Gauge | 15 秒 | バイト | |
JVM バッファープール数 | arms_jvm_buffer_pool_count | Gauge | 15 秒 | なし | |
オープンファイル記述子の数 | arms_file_desc_open_count | Gauge | 15 秒 | なし | なし |
オープンファイル記述子の比率 (オープン/最大許容数) | arms_file_desc_open_ratio | Gauge | 15 秒 | 比率 (0 から 1) | なし |
メトリックストレージインスタンスの説明
JVM メトリックは、コアメトリックライブラリ (metricstore-apm-metrics) に保存されます。
システム メトリック
共通ディメンション
ディメンション名 | ディメンションキー |
サービス名 | service |
サービス PID | pid |
マシン IP | serverIp |
メトリックリスト
メトリック名 | メトリック | メトリックタイプ | 収集間隔 | 単位 |
CPU アイドル率 | arms_system_cpu_idle | Gauge | 15 秒 | パーセント |
CPU I/O 待機率 | arms_system_cpu_io_wait | Gauge | 15 秒 | パーセント |
CPU システム使用率 | arms_system_cpu_system | Gauge | 15 秒 | パーセント |
CPU ユーザー使用率 | arms_system_cpu_user | Gauge | 15 秒 | パーセント |
システム負荷(1分) | arms_system_load | Gauge | 15 秒 | なし |
空きディスク領域 | arms_system_disk_free_bytes | Gauge | 15 秒 | バイト |
合計ディスク領域 | arms_system_disk_total_bytes | Gauge | 15 秒 | バイト |
ディスク使用量 | arms_system_disk_used_ratio | Gauge | 15 秒 | 比率 (0 から 1) |
メモリ バッファサイズ | arms_system_mem_buffers_bytes | Gauge | 15 秒 | バイト |
メモリ キャッシュサイズ | arms_system_mem_cached_bytes | Gauge | 15 秒 | バイト |
空きメモリサイズ | arms_system_mem_free_bytes | Gauge | 15 秒 | バイト |
空きスワップメモリサイズ | arms_system_mem_swap_free_bytes | Gauge | 15 秒 | バイト |
スワップメモリサイズ | arms_system_mem_swap_total_bytes | Gauge | 15 秒 | バイト |
メモリサイズ | arms_system_mem_total_bytes | Gauge | 15 秒 | バイト |
使用済みメモリサイズ | arms_system_mem_used_bytes | Gauge | 15 秒 | バイト |
インバウンドネットワークトラフィックサイズ | arms_system_net_in_bytes | Gauge | 15 秒 | バイト |
アウトバウンドネットワークトラフィックサイズ | arms_system_net_out_bytes | Gauge | 15 秒 | バイト |
インバウンドネットワークエラー | arms_system_net_in_err | Gauge | 15 秒 | なし |
アウトバウンドネットワークエラー | arms_system_net_out_err | Gauge | 15 秒 | なし |
メトリックストレージインスタンスの説明
システムメトリックは、コアメトリックライブラリ (metricstore-apm-metrics) に保存されます。
スレッドプール/接続プールのメトリック
共通ディメンション
ディメンション名 | ディメンションキー |
サービス名 | service |
サービス PID | pid |
マシン IP | serverIp |
スレッドプール名 (4.1.x より前のエージェントバージョンでサポート) | name |
スレッドプールタイプ (4.1.x より前のエージェントバージョンでサポート) | type |
メトリックリスト
エージェントバージョン 4.1.x 以降
スレッド プール メトリック
メトリック名 | メトリック | メトリックタイプ | 収集間隔 | ディメンション |
コアスレッド数 | arms_thread_pool_core_pool_size | Gauge | 15 秒 |
|
最大スレッド数 | arms_thread_pool_max_pool_size | Gauge | 15 秒 |
|
アクティブスレッド数 | arms_thread_pool_active_thread_count | Gauge | 15 秒 |
|
現在のスレッド数 | arms_thread_pool_current_thread_count | Gauge | 15 秒 |
|
スレッドプールのピークスレッド数 (プール作成以来の最高スレッド数) | arms_thread_pool_max_thread_count | Gauge | 15 秒 |
|
スケジュールされたタスク数 | arms_thread_pool_scheduled_task_count | Counter | 15 秒 |
|
完了したタスク数 | arms_thread_pool_completed_task_count | Counter | 15 秒 |
|
拒否されたタスク数 | arms_thread_pool_rejected_task_count | Counter | 15 秒 |
|
タスクキューサイズ | arms_thread_pool_queue_size | Gauge | 15 秒 |
|
接続プール メトリック
メトリックの説明 | メトリック名 | メトリックタイプ | 収集間隔 | ディメンション |
接続数 | arms_connection_pool_connection_count | Gauge | 15 秒 |
|
最小アイドル接続数 | arms_connection_pool_connection_min_idle_count | Gauge | 15 秒 |
|
最大アイドル接続数 | arms_connection_pool_connection_max_idle_count | Gauge | 15 秒 |
|
最大接続数 | arms_connection_pool_connection_max_count | Gauge | 15 秒 |
|
保留中の接続リクエスト | arms_connection_pool_pending_request_count | Counter | 15 秒 |
|
4.1.x より前のエージェントバージョン
メトリック名 | メトリック | メトリックタイプ | 収集間隔 | ディメンション |
スレッドプールのコアサイズ | arms_threadpool_core_size | Gauge | 15 秒 | なし |
スレッドプールの最大サイズ | arms_threadpool_max_size | Gauge | 15 秒 | なし |
スレッドプールのアクティブサイズ | arms_threadpool_active_size | Gauge | 15 秒 | なし |
スレッド プール キューサイズ | arms_threadpool_queue_size | Gauge | 15 秒 | なし |
スレッドプールの現在のサイズ | arms_threadpool_current_size | Gauge | 15 秒 | なし |
スレッドプール内の異なる状態のタスク数 | arms_threadpool_task_total | Gauge | 15 秒 | Status (タスク状態):
|
メトリックストレージインスタンスの説明
スレッドプールと接続プールのメトリックは、コアメトリックライブラリ (metricstore-apm-metrics) に保存されます。
スケジュールされた タスク メトリック
以下のメトリックは、スケジュールされたタスクでのみ利用可能です。
共通ディメンション
ディメンション名 | ディメンションキー |
サービス名 | service |
サービス PID | pid |
マシン IP | serverIp |
タスク ID | rpc |
メトリックリスト
メトリック名 | メトリック | メトリックタイプ | 収集間隔 | 単位 |
スケジューリング遅延 | arms_$callType_delay_milliseconds | Gauge | 15 秒 | ms |
メトリックストレージインスタンスの説明
スケジュールされたタスクのメトリックは、詳細メトリックライブラリ (metricstore-apm-metrics-detail) に保存されます。
Go ランタイムメトリック
メトリックリスト
メトリック名 | メトリック | メトリックタイプ | 収集間隔 |
アプリケーションのアップタイム (ms) | arms_golang_runtime_uptime | Int64Counter | 15 秒 |
現在のアプリケーションのゴルーチン数 | arms_golang_process_runtime_go_goroutines | Gauge | 15 秒 |
ヒープオブジェクトメモリ (バイト) | arms_golang_process_runtime_go_mem_heap_alloc | Gauge | 15 秒 |
未割り当てまたは再利用されたヒープメモリ | arms_golang_process_runtime_go_mem_heap_idle | Gauge | 15 秒 |
使用済みヒープメモリ | arms_golang_process_runtime_go_mem_heap_inuse | Gauge | 15 秒 |
割り当て済みで生存しているヒープオブジェクト | arms_golang_process_runtime_go_mem_heap_objects | Gauge | 15 秒 |
オペレーティングシステムに解放された HeapIdle 内のメモリ | arms_golang_process_runtime_go_mem_heap_released | Gauge | 15 秒 |
システムから要求された仮想メモリのサイズ | arms_golang_process_runtime_go_mem_heap_sys | Gauge | 15 秒 |
現在の生存オブジェクト数 | arms_golang_process_runtime_go_mem_live_objects | Gauge | 15 秒 |
プログラム開始からの GC サイクル数 | arms_golang_process_runtime_go_gc_count | Gauge | 15 秒 |
累積的な stop-the-world ガベージコレクションの一時停止時間 (利用不可時間) | arms_golang_process_runtime_go_gc_pause_total_ns | Int64Counter | 15 秒 |
GC 一時停止時間の分布 | arms_golang_process_runtime_go_gc_pause_ns | Int64Histogram | 15 秒 |
メトリックストレージインスタンスの説明
Go ランタイムメトリックは、コアメトリックライブラリ (metricstore-apm-metrics) に保存されます。
サービス アクセスタイプと使用可能なディメンション
クライアント側タイプ
アクセスタイプ
http_client
dubbo_client
hsf_client
dsf_client
notify_client
grpc_client
thrift_client
sofa_client
mq_client
kafka_client
ディメンション
parent: アップストリームサービス名
ppid: アップストリームサービス PID
destId:リクエストピアに関する拡張情報
endpoint: リクエストピアアドレス
excepType: 例外 ID
excepInfo: 例外 ID エンコーディングルール
excepName: 例外名
stackTraceId:スタックトレース ID
DB タイプ
アクセスタイプ
mysql
oracle
mariadb
postgresql
ppas
sqlserver
mongodb
dmdb
ディメンション
parent: アップストリームサービス名
ppid: アップストリームサービス PID
destId: データベース名
endpoint: データベースアドレス
excepType: 例外 ID
excepInfo: 例外 ID エンコーディングルール
excepName: 例外名
stackTraceId:スタックトレース ID
sqlId: SQL 文 ID
サーバー側タイプ
アクセスタイプ
http
dubbo
hsf
dsf
user_method
mq
kafka
grpc
thrift
sofa
ディメンション
prpc: アップストリームインターフェイス
parent: アップストリームサービス名
ppid: アップストリームサービス PID
Endpoint:サービスのアドレス。
excepType: 例外 ID
excepInfo: 例外 ID エンコーディングルール
excepName: 例外名
stackTraceId:スタックトレース ID
スケジュールされたタスクタイプ
アクセスタイプ
xxl_job
spring_scheduled
quartz
elasticjob
jdk_timer
schedulerx
ディメンション
prpc: アップストリームインターフェイス
parent: アップストリームサービス名
ppid: アップストリームサービス PID
excepType: 例外 ID
excepInfo: 例外 ID エンコーディングルール
excepName: 例外名
stackTraceId:スタックトレース ID