本文介紹了ARMS應用監控中常見的指標說明,您可以使用這些指標自定義Grafana大盤。
通過可觀測鏈路 Opentelemetry 版接入的應用僅支持展示/使用業務類指標,其他指標(例如JVM指標、系統指標)不支持。
業務類指標
公共維度
維度名稱 | 維度Key |
服務名稱 | service |
服務PID | pid |
機器IP | serverIp |
接口 | rpc |
指標列表
所有訪問類型都包含下列指標,執行查詢操作時,只需要將$callType
替換為具體的訪問類型即可。詳細的訪問類型,請參見服務訪問類型及可用維度。
例如:需要查詢HTTP服務的請求數時,只需將arms_$callType_requests_count
修改為arms_http_requests_count
。
指標名稱 | 指標 | 指標類型 | 采集間隔 | 單位 | 維度 |
請求數 | arms_$callType_requests_count | Gauge | 15s | 無 | 不同服務訪問類型維度不同,詳細信息,請參見服務訪問類型及可用維度。 |
錯誤請求數 | arms_$callType_requests_error_count | Gauge | 15s | 無 | |
請求耗時 | arms_$callType_requests_seconds | Gauge | 15s | 秒 | |
慢請求數 | arms_$callType_requests_slow_count | Gauge | 15s | 無 | |
請求耗時分位數 | arms_$callType_requests_latency_seconds | Summary | 15s | 秒 | 僅當服務訪問類型為HTTP且開啟分位數統計的情況下存在。開啟分位數統計的操作,請參見高級設置。 Quantile分位數維度:
|
除分位數指標外,上述指標均是Gauge類型,即每個點的值都表示采集間隔內累計的總值。這一點與開源框架產生的指標是不同的。以計算1分鐘平均QPS為例,使用ARMS指標的promQL應當寫為 sum_over_time(arms_$callType_requests_count[1m])/60
,開源框架一般會寫為 rate(http_server_requests_count[1m])
。
聚合類業務指標
業務類指標針對每種不同的調用類型都創建了單獨的指標,這導致當單個應用包含多個調用類型時(例如A應用同時包含HTTP和Dubbo兩種調用類型),編寫出的PromQL會特別冗長。
業務類指標記錄了完整的觀測維度,但在部分統計場景下并不需要所有的觀測維度,這導致直接查詢業務類指標在部分場景下性能較差。
為解決上述兩類問題,ARMS專門創建了聚合類業務指標。
指標說明
聚合類業務指標分為:
通用類
記錄了所有訪問類型的請求數、錯誤數、慢請求數、平均請求耗時。
數據庫類
記錄了數據庫訪問類型的請求數、錯誤數、慢請求數、平均請求耗時。
SQL類
記錄了數據庫訪問類型的請求數、錯誤數、慢請求數、平均請求耗時,相比數據庫類增加了SQL維度。
異常類
記錄了所有訪問類型在出現異常時的請求數及平均請求耗時。
狀態碼類
記錄了HTTP場景下不同狀態碼下的請求數。
分位數類
記錄了所有訪問類型的請求耗時分位數。
除分位數類外,每個大類中存在兩種指標,一種為普通聚合類指標,指標命名格式為xxx_raw; 一種為降維度指標,指標命名格式為xxx_ign_x_y(x、y為被聚合掉的維度,即該指標中不包含x、y維度)。
指標類型與采集間隔
如無特別說明,所有聚合類業務指標的類型均為Gauge類型,采集間隔為15秒。
公共維度
下述維度每個聚合類指標中都存在,統一說明如下:
維度 | 說明 |
pid | 應用PID |
service | 應用名稱 |
serverIp | 實例IP |
source | 指標來源:
|
指標列表
指標大類 | 指標名稱 | 指標 | 單位 | 其他維度 |
通用類 | 請求數 | arms_app_requests_count_raw | 個 |
|
arms_app_requests_count_ign_destid_endpoint_rpc | 個 | 不包含destId、endpoint、rpc三個維度。 | ||
arms_app_requests_count_ign_destid_endpoint_ppid_prpc | 個 | 不包含destId、endpoint、ppid、prpc維度。 | ||
arms_app_requests_count_ign_destid_endpoint_ppid_prpc_rpc | 個 | 不包含destId、endpoint、ppid、prpc、rpc維度。 | ||
arms_app_requests_count_ign_parent_ppid_prpc_rpc | 個 | 不包含parent、ppid、prpc、rpc維度。 | ||
arms_app_requests_count_ign_endpoint_parent_ppid_prpc_rpc | 個 | 不包含endpoint、parent、ppid、prpc、rpc維度。 | ||
錯誤請求數 | arms_app_requests_error_count_raw | 個 |
| |
arms_app_requests_error_count_ign_destid_endpoint_rpc | 個 | 不包含destId、endpoint、rpc三個維度。 | ||
arms_app_requests_error_count_ign_destid_endpoint_ppid_prpc | 個 | 不包含destId、endpoint、ppid、prpc維度。 | ||
arms_app_requests_error_count_ign_destid_endpoint_ppid_prpc_rpc | 個 | 不包含destId、endpoint、ppid、prpc、rpc維度。 | ||
arms_app_requests_error_count_ign_parent_ppid_prpc_rpc | 個 | 不包含parent、ppid、prpc、rpc維度。 | ||
arms_app_requests_error_count_ign_endpoint_parent_ppid_prpc_rpc | 個 | 不包含endpoint、parent、ppid、prpc、rpc維度。 | ||
慢請求數 | arms_app_requests_slow_count_raw | 個 |
| |
arms_app_requests_slow_count_ign_destid_endpoint_rpc | 個 | 不包含destId、endpoint、rpc三個維度。 | ||
arms_app_requests_slow_count_ign_destid_endpoint_ppid_prpc | 個 | 不包含destId、endpoint、ppid、prpc維度。 | ||
arms_app_requests_slow_count_ign_destid_endpoint_ppid_prpc_rpc | 個 | 不包含destId、endpoint、ppid、prpc、rpc維度。 | ||
arms_app_requests_slow_count_ign_parent_ppid_prpc_rpc | 個 | 不包含parent、ppid、prpc、rpc維度。 | ||
arms_app_requests_slow_count_ign_endpoint_parent_ppid_prpc_rpc | 個 | 不包含endpoint、parent、ppid、prpc、rpc維度。 | ||
請求耗時 | arms_app_requests_seconds_raw | 秒 |
| |
arms_app_requests_seconds_ign_destid_endpoint_rpc | 秒 | 不包含destId、endpoint、rpc三個維度。 | ||
arms_app_requests_seconds_ign_destid_endpoint_ppid_prpc | 秒 | 不包含destId、endpoint、ppid、prpc維度。 | ||
arms_app_requests_seconds_ign_destid_endpoint_ppid_prpc_rpc | 秒 | 不包含destId、endpoint、ppid、prpc、rpc維度。 | ||
arms_app_requests_seconds_ign_parent_ppid_prpc_rpc | 秒 | 不包含parent、ppid、prpc、rpc維度。 | ||
arms_app_requests_seconds_ign_endpoint_parent_ppid_prpc_rpc | 秒 | 不包含endpoint、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_rpc | 個 | 不包含接口維度。 | ||
異常請求耗時 | arms_exception_requests_seconds_raw | 秒 |
| |
arms_exception_requests_seconds_ign_rpc | 秒 | 不包含接口維度。 | ||
狀態碼類 | 分狀態碼請求數 | arms_requests_by_status_count_raw | 個 |
|
arms_requests_by_status_count_ign_rpc | 個 | 不包含接口維度。 | ||
分位數類 | 請求耗時分位數 說明 僅4.x及以上版本探針支持。 | arms_uni_requests_latency_seconds |
|
使用示例
使用promQL統計應用所有接口的請求數,如何選擇指標?
基于需求,我們需要找一個提供接口請求數的指標。通過查看文檔,可知通用類指標滿足需求。
接著鑒于統計結果只關心接口維度,其他維度例如上游接口、上游應用、遠端地址等都不關心,那么在選擇具體指標時,先要確認指標中包含了接口維度,然后指標中所包含的其他維度越少越好。
綜上,最優的指標應該是arms_app_requests_count_ign_destid_endpoint_ppid_prpc。
JVM指標
公共維度
維度名稱 | 維度Key |
服務名稱 | service |
服務PID | pid |
機器IP | serverIp |
指標列表
指標名稱 | 指標 | 指標類型 | 采集間隔 | 單位 | 維度 |
累計GC發生次數 | arms_jvm_gc_total | Counter | 15s | 無 | Gen GC發生區域:
|
累計GC耗時 | arms_jvm_gc_seconds_total | Counter | 15s | 秒 | |
兩次采集間隔之間的GC次數 | arms_jvm_gc_delta | Gauge | 15s | 無 | |
兩次采集間隔之間的GC耗時 | arms_jvm_gc_seconds_delta | Gauge | 15s | 秒 | |
JVM線程數 | arms_jvm_threads_count | Gauge | 15s | 無 | State線程狀態:
|
JVM內存區域初始大小 | arms_jvm_mem_init_bytes | Gauge | 15s | 字節 | Area區域:
ID區域細分:
|
JVM內存區域最大大小 | arms_jvm_mem_max_bytes | Gauge | 15s | 字節 | |
JVM內存區域使用大小 | arms_jvm_mem_used_bytes | Gauge | 15s | 字節 | |
JVM內存區域已提交大小 | arms_jvm_mem_committed_bytes | Gauge | 15s | 字節 | |
JVM內存區域使用比例 | arms_jvm_mem_usage_ratio | Gauge | 15s | 比例(0~1) | |
JVM已加載類 | arms_class_load_loaded | Counter | 15s | 無 | 無 |
JVM已卸載類 | arms_class_load_un_loaded | Counter | 15s | 無 | 無 |
JVM緩存池大小 | arms_jvm_buffer_pool_total_bytes | Gauge | 15s | 字節 | ID區域:
|
JVM緩存池已使用大小 | arms_jvm_buffer_pool_used_bytes | Gauge | 15s | 字節 | |
JVM緩存池個數 | arms_jvm_buffer_pool_count | Gauge | 15s | 無 | |
文件描述符打開個數 | arms_file_desc_open_count | Gauge | 15s | 無 | 無 |
文件描述符打開比例(已打開數/最大允許打開數) | arms_file_desc_open_ratio | Gauge | 15s | 比例(0~1) | 無 |
系統指標
公共維度
維度名稱 | 維度Key |
服務名稱 | service |
服務PID | pid |
機器IP | serverIp |
指標列表
指標名稱 | 指標 | 指標類型 | 采集間隔 | 單位 |
空閑CPU占比 | arms_system_cpu_idle | Gauge | 15s | 百分數 |
IO等待CPU占比 | arms_system_cpu_io_wait | Gauge | 15s | 百分數 |
系統CPU占比 | arms_system_cpu_system | Gauge | 15s | 百分數 |
用戶態CPU占比 | arms_system_cpu_user | Gauge | 15s | 百分數 |
系統負載(1分鐘) | arms_system_load | Gauge | 15s | 無 |
磁盤空閑大小 | arms_system_disk_free_bytes | Gauge | 15s | 字節 |
磁盤總大小 | arms_system_disk_total_bytes | Gauge | 15s | 字節 |
磁盤使用率 | arms_system_disk_used_ratio | Gauge | 15s | 比例(0~1) |
內存Buffer大小 | arms_system_mem_buffers_bytes | Gauge | 15s | 字節 |
內存緩存大小 | arms_system_mem_cached_bytes | Gauge | 15s | 字節 |
內存空閑大小 | arms_system_mem_free_bytes | Gauge | 15s | 字節 |
內存交換區空閑大小 | arms_system_mem_swap_free_bytes | Gauge | 15s | 字節 |
內存交換區大小 | arms_system_mem_swap_total_bytes | Gauge | 15s | 字節 |
內存大小 | arms_system_mem_total_bytes | Gauge | 15s | 字節 |
已用內存大小 | arms_system_mem_used_bytes | Gauge | 15s | 字節 |
網絡接收流量大小 | arms_system_net_in_bytes | Gauge | 15s | 字節 |
網口發送流量大小 | arms_system_net_out_bytes | Gauge | 15s | 字節 |
網絡入口錯誤數 | arms_system_net_in_err | Gauge | 15s | 無 |
網絡出口錯誤數 | arms_system_net_out_err | Gauge | 15s | 無 |
線程池/連接池指標
公共維度
維度名稱 | 維度Key |
服務名稱 | service |
服務PID | pid |
機器IP | serverIp |
線程池名稱(4.1.x以下探針版本支持) | name |
線程池類型(4.1.x以下探針版本支持) | type |
指標列表
4.1.x及以上探針版本
線程池指標
指標名稱 | 指標 | 指標類型 | 采集間隔 | 維度 |
核心線程數 | arms_thread_pool_core_pool_size | Gauge | 15s |
|
最大空閑連接數 | arms_thread_pool_max_pool_size | Gauge | 15s |
|
活躍線程數 | arms_thread_pool_active_thread_count | Gauge | 15s |
|
當前線程數 | arms_thread_pool_current_thread_count | Gauge | 15s |
|
線程池歷史最大線程數 | arms_thread_pool_max_thread_count | Gauge | 15s |
|
線程池調度任務數 | arms_thread_pool_scheduled_task_count | Counter | 15s |
|
線程池執行完成任務數 | arms_thread_pool_completed_task_count | Counter | 15s |
|
線程池拒絕任務數 | arms_thread_pool_rejected_task_count | Counter | 15s |
|
線程池任務隊列大小 | arms_thread_pool_queue_size | Gauge | 15s |
|
連接池指標
指標描述 | 指標名 | 指標類型 | 采集間隔 | 維度 |
連接數 | arms_connection_pool_connection_count | Gauge | 15s |
|
最小空閑連接數 | arms_connection_pool_connection_min_idle_count | Gauge | 15s |
|
最大空閑連接數 | arms_connection_pool_connection_max_idle_count | Gauge | 15s |
|
最大連接數 | arms_connection_pool_connection_max_count | Gauge | 15s |
|
阻塞的連接請求數 | arms_connection_pool_pending_request_count | Counter | 15s |
|
4.1.x以下探針版本
指標名稱 | 指標 | 指標類型 | 采集間隔 | 維度 |
線程池核心線程數 | arms_threadpool_core_size | Gauge | 15s | 無 |
線程池最大線程數 | arms_threadpool_max_size | Gauge | 15s | 無 |
線程池活躍線程數 | arms_threadpool_active_size | Gauge | 15s | 無 |
線程池隊列大小 | arms_threadpool_queue_size | Gauge | 15s | 無 |
線程池當前大小 | arms_threadpool_current_size | Gauge | 15s | 無 |
線程池不同狀態任務數 | arms_threadpool_task_total | Gauge | 15s | Status任務狀態:
|
定時任務指標
僅定時任務存在以下指標。
公共維度
維度名稱 | 維度Key |
服務名稱 | service |
服務PID | pid |
機器IP | serverIp |
任務ID | rpc |
指標列表
指標名稱 | 指標 | 指標類型 | 采集間隔 | 單位 |
調度延遲 | arms_$callType_delay_milliseconds | Gauge | 15s | 毫秒 |
服務訪問類型及可用維度
客戶端類
訪問類型
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