Este tópico descreve as métricas mais utilizadas no Application Monitoring, um subserviço do Application Real-Time Monitoring Service (ARMS). Use-as para crie painéis personalizados no Grafana e consultas PromQL.
Se a ingestão da sua aplicação ocorrer pelo Managed Service for OpenTelemetry, apenas as métricas de negócio estarão disponíveis. O sistema não suporta métricas de JVM, métricas de sistema e outras categorias.
Métricas de negócio
Dimensões comuns
|
Nome da dimensão |
Chave da dimensão |
|
Nome do serviço |
service |
|
PID do serviço |
pid |
|
IP do host |
serverIp |
|
Interface |
rpc |
Lista de métricas
As métricas a seguir aplicam-se a todos os tipos de acesso. Nas consultas, substitua $callType pelo tipo de acesso real. Para obter a lista de tipos de acesso, consulte Tipos de acesso ao serviço e dimensões disponíveis.
Por exemplo, para consultar a contagem de requisições HTTP, altere arms_$callType_requests_count para arms_http_requests_count.
Nome da métrica | Métrica | Tipo de métrica | Intervalo de coleta | Unidade | Dimensões |
Contagem de requisições | arms_$callType_requests_count | Gauge | 15 segundos | Nenhuma | Cada tipo de acesso ao serviço possui dimensões diferentes. Para mais detalhes, consulte Tipos de acesso ao serviço e dimensões disponíveis. |
Contagem de requisições com falha | arms_$callType_requests_error_count | Gauge | 15 segundos | Nenhuma | |
Latência de requisição | arms_$callType_requests_seconds | Gauge | 15 segundos | Segundos | |
Contagem de requisições lentas | arms_$callType_requests_slow_count | Gauge | 15 segundos | Nenhuma | |
Quantis de latência de requisição | arms_$callType_requests_latency_seconds | Summary | 15 segundos | Segundos | Disponível apenas quando o tipo de acesso é HTTP e as estatísticas de quantis estão ativadas. Para ativá-las, consulte Configurações avançadas. Dimensões de quantis:
|
Exceto pelas métricas de quantis, as métricas acima são do tipo Gauge: cada ponto representa o valor acumulado durante o intervalo de coleta, o que difere das métricas típicas de código aberto. Por exemplo, para estimar um QPS médio de 1 minuto, use uma consulta PromQL do ARMS como sum_over_time(arms_$callType_requests_count[1m])/60, enquanto frameworks de código aberto geralmente usam rate(http_server_requests_count[1m]).
Armazenamento de métricas
O repositório de métricas detalhadas (metricstore-apm-metrics-detail) armazena as métricas de negócio.
Métricas de negócio agregadas
Como cada tipo de chamada usa seu próprio nome de métrica, as consultas PromQL podem ficar muito extensas quando uma aplicação usa múltiplos tipos de chamada (por exemplo, HTTP e Dubbo simultaneamente).
As métricas de negócio mantêm todas as dimensões de observação, mas alguns cenários de análise não exigem todas elas. Nesses casos, consultar as métricas de negócio brutas pode ser lento.
Para resolver essas questões, o ARMS fornece métricas de negócio agregadas.
Descrição das métricas
As métricas de negócio agregadas dividem-se nas seguintes categorias:
-
Geral
Registra a contagem de requisições, contagem de requisições com falha, contagem de requisições lentas e a latência média de requisição em todos os tipos de acesso.
-
Tipos de banco de dados
Mesmas métricas da categoria Geral, restritas aos tipos de acesso a banco de dados.
-
SQL
Mesmas métricas da categoria de banco de dados, com uma dimensão SQL adicional.
-
Exceção
Registra a contagem de requisições e a latência média de requisição quando ocorrem exceções em todos os tipos de acesso.
-
Código de status
Registra a contagem de requisições por código de status HTTP.
-
Quantil
Registra os quantis de latência de requisição em todos os tipos de acesso.
Exceto pela categoria de quantis, cada categoria oferece dois formatos de métrica: um agregado padrão cujo nome termina com xxx_raw e uma variante com dimensões reduzidas chamada xxx_ign_x_y, onde x e y são as dimensões consolidadas (omitidas da série de métricas).
Tipo de métrica e intervalo de coleta
Salvo indicação em contrário, as métricas de negócio agregadas são do tipo Gauge com intervalo de coleta de 15 segundos.
Dimensões comuns
Todas as métricas agregadas incluem as seguintes dimensões:
Dimensões | Descrição |
pid | PID da aplicação |
service | Nome da aplicação |
serverIp | IP da instância |
source | Origem da métrica:
|
Lista de métricas
Categoria da métrica | Nome da métrica | Métrica | Unidade | Dimensões adicionais |
Geral | Contagem de requisições | arms_app_requests_count_raw | Contagem |
|
arms_app_requests_count_ign_destid_endpoint_parent_ppid_prpc_rpc | Contagem | Exclui as dimensões destId, endpoint, parent, ppid, prpc e rpc. | ||
arms_app_requests_count_ign_destid_endpoint_prpc_rpc | Contagem | Exclui as dimensões destId, endpoint, rpc e prpc. | ||
arms_app_requests_count_ign_destid_endpoint_parent_ppid_prpc | Contagem | Exclui as dimensões destId, endpoint, parent, ppid e prpc. | ||
arms_app_requests_count_ign_parent_ppid_prpc_rpc | Contagem | Exclui as dimensões parent, ppid, prpc e rpc. | ||
Contagem de requisições com falha | arms_app_requests_error_count_raw | Contagem |
| |
arms_app_requests_error_count_ign_destid_endpoint_prpc_rpc | Contagem | Exclui as dimensões destId, endpoint, rpc e prpc. | ||
arms_app_requests_error_count_ign_destid_endpoint_parent_ppid_prpc | Contagem | Exclui as dimensões destId, endpoint, parent, ppid e prpc. | ||
arms_app_requests_error_count_ign_parent_ppid_prpc_rpc | Contagem | Exclui as dimensões parent, ppid, prpc e rpc. | ||
arms_app_requests_error_count_ign_parent_ppid_prpc_rpc | Contagem | Exclui as dimensões parent, ppid, prpc e rpc. | ||
Contagem de requisições lentas | arms_app_requests_slow_count_raw | Contagem |
| |
arms_app_requests_slow_count_ign_destid_endpoint_parent_ppid_prpc_rpc | Contagem | Exclui as dimensões destId, endpoint, parent, ppid, prpc e rpc. | ||
arms_app_requests_slow_count_ign_destid_endpoint_prpc_rpc | Contagem | Exclui as dimensões destId, endpoint, rpc e prpc. | ||
arms_app_requests_slow_count_ign_destid_endpoint_parent_ppid_prpc | Contagem | Exclui as dimensões destId, endpoint, parent, ppid e prpc. | ||
arms_app_requests_slow_count_ign_parent_ppid_prpc_rpc | Contagem | Exclui as dimensões parent, ppid, prpc e rpc. | ||
Latência de requisição | arms_app_requests_seconds_raw | Segundos |
| |
arms_app_requests_seconds_ign_destid_endpoint_parent_ppid_prpc_rpc | Segundos | Exclui as dimensões destId, endpoint, parent, ppid, prpc e rpc. | ||
arms_app_requests_seconds_ign_destid_endpoint_prpc_rpc | Segundos | Exclui as dimensões destId, endpoint, rpc e prpc. | ||
arms_app_requests_seconds_ign_destid_endpoint_parent_ppid_prpc | Segundos | Exclui as dimensões destId, endpoint, parent, ppid e prpc. | ||
arms_app_requests_seconds_ign_parent_ppid_prpc_rpc | Segundos | Exclui as dimensões parent, ppid, prpc e rpc. | ||
Tipos de banco de dados | Contagem de requisições de banco de dados | arms_db_requests_count_raw | Contagem |
|
arms_db_requests_count_ign_rpc | Contagem | Exclui a dimensão de interface. | ||
Contagem de requisições de banco de dados com falha | arms_db_requests_error_count_raw | Contagem |
| |
arms_db_requests_error_count_ign_rpc | Contagem | Exclui a dimensão de interface. | ||
Contagem de requisições lentas de banco de dados | arms_db_requests_slow_count_raw | Contagem |
| |
arms_db_requests_slow_count_ign_rpc | Contagem | Exclui a dimensão de interface. | ||
Latência de requisição de banco de dados | arms_db_requests_seconds_raw | Segundos |
| |
arms_db_requests_seconds_ign_rpc | Segundos | Exclui a dimensão de interface. | ||
SQL | Contagem de requisições SQL | arms_sql_requests_count_raw |
| |
arms_sql_requests_count_ign_rpc | Exclui a dimensão de interface. | |||
Contagem de requisições SQL com falha | arms_sql_requests_error_count_raw | Contagem |
| |
arms_sql_requests_error_count_ign_rpc | Contagem | Exclui a dimensão de interface. | ||
Contagem de requisições SQL lentas | arms_sql_requests_slow_count_raw | Contagem |
| |
arms_sql_requests_slow_count_ign_rpc | Contagem | Exclui a dimensão de interface. | ||
Latência de requisição SQL | arms_sql_requests_seconds_raw | Segundos |
| |
arms_sql_requests_seconds_ign_rpc | Segundos | Exclui a dimensão de interface. | ||
Exceção | Contagem de requisições anormais | arms_exception_requests_count_raw | Contagem |
|
arms_exception_requests_count_ign_destid_endpoint_rpc | Contagem | Exclui as dimensões destid, endpoint e rpc. | ||
arms_exception_requests_count_ign_destid_endpoint | Contagem | Exclui as dimensões destid e endpoint. | ||
Latência de requisição de exceção | arms_exception_requests_seconds_raw | Segundos |
| |
arms_exception_requests_seconds_ign_destid_endpoint_rpc | Segundos | Exclui as dimensões destid, endpoint e rpc. | ||
arms_exception_requests_seconds_ign_destid_endpoint | Segundos | Exclui as dimensões destid e endpoint. | ||
Código de status | Contagem de requisições por código de status | arms_requests_by_status_count_raw | Contagem |
|
arms_requests_by_status_count_ign_rpc | Contagem | Exclui a dimensão de interface. | ||
Quantil | Quantis de latência de requisição Nota Suportado apenas pelas versões 4.x e posteriores do agente. | arms_uni_requests_latency_seconds |
|
Exemplo de uso
Escolha uma métrica ao usar PromQL para somar requisições em todas as interfaces de uma aplicação
Você precisa de uma métrica que exponha a contagem de requisições por interface. A categoria Geral neste tópico atende a esse requisito.
Se você precisar apenas da dimensão de interface — e não das interfaces upstream, aplicações upstream ou hosts remotos — escolha uma métrica que mantenha a dimensão de interface e omita o máximo possível das outras dimensões.
Na prática, arms_app_requests_count_ign_destid_endpoint_parent_ppid_prpc é uma boa opção.
Armazenamento de métricas
O repositório principal de métricas (metricstore-apm-metrics) armazena as seguintes métricas:
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
O repositório de métricas detalhadas (metricstore-apm-metrics-detail) armazena as demais métricas de negócio agregadas.
Métricas de JVM
Dimensões comuns
|
Nome da dimensão |
Chave da dimensão |
|
Nome do serviço |
service |
|
PID do serviço |
pid |
|
IP do host |
serverIp |
Lista de métricas
Nome da métrica | Métrica | Tipo de métrica | Intervalo de coleta | Unidade | Dimensões |
Contagem de GC (cumulativa) | arms_jvm_gc_total | Counter | 15 segundos | Nenhuma | Área de ocorrência do Gen GC:
Motivo do acionamento do GC (versão 4.4.0 e posterior do agente): System.gc(), Heap Dump Initiated GC, Allocation Failure, etc. |
Tempo de GC (cumulativo) | arms_jvm_gc_seconds_total | Counter | 15 segundos | Segundos | |
Contagem de GC entre intervalos de coleta | arms_jvm_gc_delta | Gauge | 15 segundos | Nenhuma | |
Duração do GC entre intervalos de coleta | arms_jvm_gc_seconds_delta | Gauge | 15 segundos | Segundos | |
Contagem de threads da JVM | arms_jvm_threads_count | Gauge | 15 segundos | Nenhuma | Status da thread State:
|
Tamanho inicial da memória da JVM | arms_jvm_mem_init_bytes | Gauge | 15 segundos | Bytes | Área:
Detalhamento da área ID:
|
Tamanho máximo da memória da JVM | arms_jvm_mem_max_bytes | Gauge | 15 segundos | Bytes | |
Tamanho da memória usada pela JVM | arms_jvm_mem_used_bytes | Gauge | 15 segundos | Bytes | |
Tamanho da memória reservada pela JVM | arms_jvm_mem_committed_bytes | Gauge | 15 segundos | Bytes | |
Taxa de uso de memória da JVM | arms_jvm_mem_usage_ratio | Gauge | 15 segundos | Proporção (0–1) | |
Contagem de classes carregadas pela JVM | arms_class_load_loaded | Counter | 15 segundos | Nenhuma | Nenhuma |
Contagem de classes descarregadas pela JVM | arms_class_load_un_loaded | Counter | 15 segundos | Nenhuma | Nenhuma |
Tamanho do pool de buffers da JVM | arms_jvm_buffer_pool_total_bytes | Gauge | 15 segundos | Bytes | Área ID:
|
Tamanho utilizado do pool de buffers da JVM | arms_jvm_buffer_pool_used_bytes | Gauge | 15 segundos | Bytes | |
Contagem de pools de buffers da JVM | arms_jvm_buffer_pool_count | Gauge | 15 segundos | Nenhuma | |
Contagem de descritores de arquivo abertos | arms_file_desc_open_count | Gauge | 15 segundos | Nenhuma | Nenhuma |
Taxa de uso de descritores de arquivo (abertos / limite) | arms_file_desc_open_ratio | Gauge | 15 segundos | Proporção (0–1) | Nenhuma |
Armazenamento de métricas
O repositório principal de métricas (metricstore-apm-metrics) armazena as métricas de JVM.
Métricas de sistema
Dimensões comuns
|
Nome da dimensão |
Chave da dimensão |
|
Nome do serviço |
service |
|
PID do serviço |
pid |
|
IP do host |
serverIp |
Lista de métricas
|
Nome da métrica |
Métrica |
Tipo de métrica |
Intervalo de coleta |
Unidade |
|
Taxa de ociosidade da CPU |
arms_system_cpu_idle |
Gauge |
15 segundos |
Porcentagem |
|
Taxa de espera de I/O da CPU |
arms_system_cpu_io_wait |
Gauge |
15 segundos |
Porcentagem |
|
Taxa de sistema da CPU |
arms_system_cpu_system |
Gauge |
15 segundos |
Porcentagem |
|
Taxa de usuário da CPU |
arms_system_cpu_user |
Gauge |
15 segundos |
Porcentagem |
|
Carga do sistema (1 minuto) |
arms_system_load |
Gauge |
15 segundos |
Nenhuma |
|
Espaço livre em disco |
arms_system_disk_free_bytes |
Gauge |
15 segundos |
Bytes |
|
Espaço total em disco |
arms_system_disk_total_bytes |
Gauge |
15 segundos |
Bytes |
|
Taxa de uso de disco |
arms_system_disk_used_ratio |
Gauge |
15 segundos |
Proporção (0–1) |
|
Tamanho do buffer de memória do sistema |
arms_system_mem_buffers_bytes |
Gauge |
15 segundos |
Bytes |
|
Tamanho do cache de memória do sistema |
arms_system_mem_cached_bytes |
Gauge |
15 segundos |
Bytes |
|
Memória livre do sistema |
arms_system_mem_free_bytes |
Gauge |
15 segundos |
Bytes |
|
Espaço livre de swap |
arms_system_mem_swap_free_bytes |
Gauge |
15 segundos |
Bytes |
|
Espaço total de swap |
arms_system_mem_swap_total_bytes |
Gauge |
15 segundos |
Bytes |
|
Memória total do sistema |
arms_system_mem_total_bytes |
Gauge |
15 segundos |
Bytes |
|
Memória usada do sistema |
arms_system_mem_used_bytes |
Gauge |
15 segundos |
Bytes |
|
Tráfego de entrada de rede |
arms_system_net_in_bytes |
Gauge |
15 segundos |
Bytes |
|
Tráfego de saída de rede |
arms_system_net_out_bytes |
Gauge |
15 segundos |
Bytes |
|
Contagem de erros de entrada de rede |
arms_system_net_in_err |
Gauge |
15 segundos |
Nenhuma |
|
Contagem de erros de saída de rede |
arms_system_net_out_err |
Gauge |
15 segundos |
Nenhuma |
Armazenamento de métricas
O repositório principal de métricas (metricstore-apm-metrics) armazena as métricas de sistema.
Métricas de pool de threads/pool de conexões
Dimensões comuns
|
Nome da dimensão |
Chave da dimensão |
|
Nome do serviço |
service |
|
PID do serviço |
pid |
|
IP do host |
serverIp |
|
Nome do pool de threads (suportado por versões do agente anteriores a 4.1.x) |
name |
|
Tipo de pool de threads (suportado por versões do agente anteriores a 4.1.x) |
type |
Lista de métricas
Versão 4.1.x e posterior do agente
Métricas de pool de threads
Nome da métrica | Métrica | Tipo de métrica | Intervalo de coleta | Dimensões |
Contagem de threads principais do pool de threads | arms_thread_pool_core_pool_size | Gauge | 15 segundos |
|
Contagem máxima de threads do pool de threads | arms_thread_pool_max_pool_size | Gauge | 15 segundos |
|
Contagem de threads ativas do pool de threads | arms_thread_pool_active_thread_count | Gauge | 15 segundos |
|
Contagem atual de threads do pool de threads | arms_thread_pool_current_thread_count | Gauge | 15 segundos |
|
Pico de contagem de threads do pool (desde a criação do pool) | arms_thread_pool_max_thread_count | Gauge | 15 segundos |
|
Contagem de tarefas agendadas do pool de threads | arms_thread_pool_scheduled_task_count | Counter | 15 segundos |
|
Contagem de tarefas concluídas do pool de threads | arms_thread_pool_completed_task_count | Counter | 15 segundos |
|
Contagem de tarefas rejeitadas do pool de threads | arms_thread_pool_rejected_task_count | Counter | 15 segundos |
|
Tamanho da fila de tarefas do pool de threads | arms_thread_pool_queue_size | Gauge | 15 segundos |
|
Métricas de pool de conexões
Descrição da métrica | Nome da métrica | Tipo de métrica | Intervalo de coleta | Dimensões |
Contagem de conexões | arms_connection_pool_connection_count | Gauge | 15 segundos |
|
Contagem mínima de conexões ociosas | arms_connection_pool_connection_min_idle_count | Gauge | 15 segundos |
|
Contagem máxima de conexões ociosas | arms_connection_pool_connection_max_idle_count | Gauge | 15 segundos |
|
Contagem máxima de conexões | arms_connection_pool_connection_max_count | Gauge | 15 segundos |
|
Contagem de solicitações de conexão bloqueadas | arms_connection_pool_pending_request_count | Counter | 15 segundos |
|
Versões do agente anteriores a 4.1.x
Nome da métrica | Métrica | Tipo de métrica | Intervalo de coleta | Dimensões |
Contagem de threads principais do pool de threads | arms_threadpool_core_size | Gauge | 15 segundos | Nenhuma |
Contagem máxima de threads do pool de threads | arms_threadpool_max_size | Gauge | 15 segundos | Nenhuma |
Contagem de threads ativas do pool de threads | arms_threadpool_active_size | Gauge | 15 segundos | Nenhuma |
Tamanho da fila do pool de threads | arms_threadpool_queue_size | Gauge | 15 segundos | Nenhuma |
Tamanho do pool de threads | arms_threadpool_current_size | Gauge | 15 segundos | Nenhuma |
Contagem de tarefas do pool de threads por estado | arms_threadpool_task_total | Gauge | 15 segundos | Status da tarefa StatusTask:
|
Armazenamento de métricas
O repositório principal de métricas (metricstore-apm-metrics) armazena as métricas de pool de threads/pool de conexões.
Métricas de tarefas agendadas
As métricas a seguir existem apenas para tarefas agendadas.
Dimensões comuns
|
Nome da dimensão |
Chave da dimensão |
|
Nome do serviço |
service |
|
PID do serviço |
pid |
|
IP do host |
serverIp |
|
ID da tarefa |
rpc |
Lista de métricas
|
Nome da métrica |
Métrica |
Tipo de métrica |
Intervalo de coleta |
Unidade |
|
Atraso de agendamento |
arms_$callType_delay_milliseconds |
Gauge |
15 segundos |
Milissegundos |
Armazenamento de métricas
O repositório de métricas detalhadas (metricstore-apm-metrics-detail) armazena as métricas de tarefas agendadas.
Métricas de runtime Go
Lista de métricas
|
Nome da métrica |
Métrica |
Tipo de métrica |
Intervalo de coleta |
|
Tempo de inicialização da aplicação (ms) |
arms_golang_runtime_uptime |
Int64Counter |
15 segundos |
|
Contagem atual de Goroutines |
arms_golang_process_runtime_go_goroutines |
Gauge |
15 segundos |
|
Memória de objetos no heap (bytes) |
arms_golang_process_runtime_go_mem_heap_alloc |
Gauge |
15 segundos |
|
Memória de heap não alocada ou recuperada |
arms_golang_process_runtime_go_mem_heap_idle |
Gauge |
15 segundos |
|
Memória de heap utilizada |
arms_golang_process_runtime_go_mem_heap_inuse |
Gauge |
15 segundos |
|
Objetos ativos alocados no heap |
arms_golang_process_runtime_go_mem_heap_objects |
Gauge |
15 segundos |
|
Memória de heap liberada para o sistema operacional |
arms_golang_process_runtime_go_mem_heap_released |
Gauge |
15 segundos |
|
Tamanho da memória virtual solicitada |
arms_golang_process_runtime_go_mem_heap_sys |
Gauge |
15 segundos |
|
Contagem de objetos ativos |
arms_golang_process_runtime_go_mem_live_objects |
Gauge |
15 segundos |
|
Contagem de GC desde o início do programa |
arms_golang_process_runtime_go_gc_count |
Gauge |
15 segundos |
|
Tempo cumulativo de pausa do GC (stop-the-world) |
arms_golang_process_runtime_go_gc_pause_total_ns |
Int64Counter |
15 segundos |
|
Distribuição de tempo do GC |
arms_golang_process_runtime_go_gc_pause_ns |
Int64Histogram |
15 segundos |
Armazenamento de métricas
O repositório principal de métricas (metricstore-apm-metrics) armazena as métricas de runtime Go.
Tipos de acesso ao serviço e dimensões disponíveis
Tipos do lado do cliente
-
Tipo de acesso
http_client
dubbo_client
hsf_client
dsf_client
notify_client
grpc_client
thrift_client
sofa_client
mq_client
kafka_client
-
Dimensões
parent: nome do serviço upstream
ppid: PID do serviço upstream
destId: Informações de extensão do par da requisição
endpoint: endereço do par da requisição
excepType: ID da exceção
excepInfo: Regras de codificação do ID da exceção
excepName: nome da exceção
stackTraceId: ID da pilha de exceção
Tipos de banco de dados
-
Tipo de acesso
mysql
oracle
mariadb
postgresql
ppas
sqlserver
mongodb
dmdb
-
Dimensões
parent: nome do serviço upstream
ppid: PID do serviço upstream
destId: nome do banco de dados
endpoint: endereço do banco de dados
excepType: ID da exceção
excepInfo: Regras de codificação do ID da exceção
excepName: nome da exceção
stackTraceId: ID da pilha de exceção
sqlId: ID da instrução SQL
Tipos do lado do servidor
-
Tipo de acesso
http
dubbo
hsf
dsf
user_method
mq
kafka
grpc
thrift
sofa
-
Dimensões
prpc: interface upstream
parent: nome do serviço upstream
ppid: PID do serviço upstream
endpoint: endereço do serviço
excepType: ID da exceção
excepInfo: Regras de codificação do ID da exceção
excepName: nome da exceção
stackTraceId: ID da pilha de exceção
Tipos de tarefas agendadas
-
Tipo de acesso
xxl_job
spring_scheduled
quartz
elasticjob
jdk_timer
schedulerx
-
Dimensões
prpc: interface upstream
parent: nome do serviço upstream
ppid: PID do serviço upstream
excepType: ID da exceção
excepInfo: Regras de codificação do ID da exceção
excepName: nome da exceção
stackTraceId: ID da pilha de exceção