Após instalar um probe na sua aplicação, o ARMS inicia o monitoramento. Na página Provided Services, você visualiza informações detalhadas sobre os serviços que sua aplicação fornece, incluindo chamadas de API, assinaturas de mensagens e tarefas agendadas.
Pré-requisitos
O ARMS Application Monitoring oferece uma nova página de detalhes de monitoramento para usuários que ativaram o novo modelo de faturamento. Para obter detalhes sobre o novo modelo de faturamento, consulte Product Billing (New).
Caso ainda não tenha ativado o novo modelo de faturamento, mas deseje acessar a nova página de detalhes de monitoramento, clique em Switch to New Version na página Application List.
Um probe já deve estar instalado na sua aplicação. Para instruções, consulte Overview of Application Monitoring Integration.
Visualizar serviços fornecidos por uma aplicação
Faça login no console do ARMS. No painel de navegação à esquerda, escolha .
-
Na página Application List, selecione a região na barra de navegação superior e clique em nome da aplicação.
NotaOs ícones na coluna Language têm os seguintes significados:
: uma aplicação Java conectada ao Application Monitoring.
: uma aplicação Golang conectada ao Application Monitoring.
: uma aplicação Python conectada ao Application Monitoring.-: uma aplicação conectada ao Managed Service for OpenTelemetry.
-
Na barra de navegação superior, clique em Provided Services.
Na área de filtro rápido, filtre gráficos e a lista de serviços por Request Type, Interface Name ou Host.
-
Na área de gráficos de tendência, visualize as curvas de série temporal para contagem de requisições, contagem de erros e tempo médio de resposta dos serviços.
Clique em ícone
para abrir uma caixa de diálogo onde é possível visualizar estatísticas de um período específico ou comparar estatísticas entre datas diferentes para o mesmo período. Clique em ícone
para alternar entre gráficos de colunas e gráficos de tendência. -
Na área da lista de serviços, visualize informações como nome da interface, tipo de requisição e métricas RED (contagem de requisições, contagem de erros e tempo médio de resposta).
Na lista de serviços, você pode executar as seguintes operações:
Clique em nome de uma interface ou em Details, SQL Analysis ou NoSQL Analysis na coluna Actions para visualizar informações detalhadas sobre o serviço correspondente. Para mais informações, consulte Interface Details.
Clique em Trace na coluna Actions para visualizar os detalhes do trace da chamada. Para mais informações, consulte Trace Analysis.
Frameworks suportados
Detalhes da interface
Chamadas de API
Visão geral
Na aba Overview, visualize a contagem de requisições, contagem de erros, tempo médio de resposta, estatísticas de códigos de status HTTP e curvas de série temporal para chamadas lentas da interface alvo.

Análise de SQL e NoSQL
Nas abas SQL Analysis e NoSQL Analysis, visualize listas de requisições SQL e NoSQL iniciadas pela interface selecionada à esquerda. Também é possível filtrar por host usando a lista de hosts. Utilize essas abas para identificar qual consulta SQL ou NoSQL está causando lentidão em um service.
Clique em um Database Name para visualizar os detalhes do banco de dados. Clique em Trace ao lado de uma entrada SQL ou NoSQL para visualizar o trace de código completo contendo a lógica de execução. Para mais informações, consulte Trace Analysis.
A aba SQL Analysis exibe um gráfico Request Trend mostrando a contagem de requisições, contagem de SQL lento e tempo médio de resposta. Abaixo do gráfico, há uma tabela de análise SQL listando campos como Database Name, Database Type, Operation Type, SQL Statement, Request Count, Average Response Time, Slow SQL Count e Response Size. Clique em Actions para iniciar uma consulta de trace.
Chamadas de interface upstream e downstream em traces
As abas Trace Upstream e Trace Downstream listam interfaces e suas métricas de desempenho — como contagem de requisições, contagem de erros e tempo de resposta — para chamadores upstream (aqueles que chamam sua aplicação) e chamados downstream (aqueles chamados pela sua aplicação), respectivamente.
Análise de trace
O recurso de análise de trace executa análises em tempo real com base em dados completos de trace armazenados, combinando livremente filtros e dimensões de agregação, o que suporta diagnósticos personalizados para vários cenários. Para mais informações, consulte Trace Analysis. Na página Trace Analysis no console do Tracing Analysis, insira serviceName : "mall-gateway" na barra de pesquisa para filtrar resultados. O painel de filtro rápido à esquerda suporta filtragem por status, tempo de resposta (0 ns–5 s), nome da interface (como GET, MallController.userCart, LLEN, SET) e endereço do host. No topo da página, visualize gráficos de colunas para contagem de chamadas e contagem de erros, além de um gráfico de linhas para tempo médio de resposta. A tabela de dados central inclui colunas como TraceId, Interface Name, Application Name, Response Time, Status, Start Time e Host Address, com abas para List, Scatter Chart, Full Trace Aggregation, Full Trace Topology e Error/Slow Trace Analysis. O painel Slow Trace Analysis à direita mostra uma classificação das principais contribuições de spanName.
Assinaturas de mensagens
Atualmente, aplicações Python não suportam a visualização de assinaturas de mensagens.
Visão geral
Na aba Overview, visualize a contagem de requisições, contagem de erros, tempo médio de resposta e latência de consumo (suportado atualmente apenas para RocketMQ 4.8.0+) da interface alvo.
Análise de SQL e NoSQL
Nas abas SQL Analysis e NoSQL Analysis, visualize listas de requisições SQL e NoSQL iniciadas pela interface selecionada à esquerda. Também é possível filtrar por host usando a lista de hosts. Utilize essas abas para identificar qual consulta SQL ou NoSQL está causando lentidão em um service.
Clique em um Database Name para visualizar os detalhes do banco de dados. Clique em Trace ao lado de uma entrada SQL ou NoSQL para visualizar o trace de código completo contendo a lógica de execução. Para mais informações, consulte Trace Analysis.
O lado direito da página SQL Analysis exibe um gráfico de série temporal Request Trend (mostrando contagem de requisições, contagem de SQL lento e tempo médio de resposta) e uma tabela SQL Details. A tabela inclui colunas como Database Name, Database Type, Operation Type, SQL Statement, Request Count, Average Response Time, Slow SQL Count, Response Size e Actions.
Estatísticas de consumo
A aba Consumption Statistics mostra o consumo de tópicos sob a perspectiva do consumidor, incluindo contagem de requisições, contagem de erros e tempo de resposta.
O lado esquerdo da página contém duas áreas de filtro: Interface List e Application Instance List. No topo da área de conteúdo principal, visualize três gráficos de linhas de série temporal: Received Count/1m, Error Count/1m e Response Time/1m. Abaixo deles, há uma tabela de dados resumidos por instância, com colunas para IP, Received Count, Error Count e Average Response Time.
Análise de trace
O recurso de análise de trace executa análises em tempo real com base em dados completos de trace armazenados, combinando livremente filtros e dimensões de agregação, o que suporta diagnósticos personalizados para vários cenários. Para mais informações, consulte Trace Analysis.
Tarefas agendadas
Atualmente, apenas aplicações Java suportam a visualização de tarefas agendadas.
Visão geral
Na aba Overview, visualize a contagem de requisições, contagem de erros, tempo médio de resposta e uma curva de série temporal para atraso de agendamento da interface alvo.

Análise de SQL e NoSQL
Nas abas SQL Analysis e NoSQL Analysis, visualize listas de requisições SQL e NoSQL iniciadas pela interface selecionada à esquerda. Também é possível filtrar por host usando a lista de hosts. Utilize essas abas para identificar qual consulta SQL ou NoSQL está causando lentidão em um service.
Clique em um Database Name para visualizar os detalhes do banco de dados. Clique em Trace ao lado de uma entrada SQL ou NoSQL para visualizar o trace de código completo contendo a lógica de execução. Para mais informações, consulte Trace Analysis.
A aba SQL Analysis exibe um gráfico de tendência de requisições (chamadas por minuto, contagem de SQL lento e tempo médio de resposta) na parte superior e uma lista SQL abaixo, mostrando campos como SQL Statement, Call Count, Average Response Time, Slow SQL Count e Response Size. Cada linha fornece pontos de acesso para Details e Trace.
Chamadas de interface downstream em traces
A aba Trace Downstream lista interfaces e suas métricas de desempenho — como contagem de requisições, contagem de erros e tempo de resposta — para chamados downstream (aqueles chamados pela sua aplicação).
O lado esquerdo da página mostra uma lista de interfaces com contagem de requisições, contagem de erros e tempo médio de resposta para cada interface. O canto inferior esquerdo exibe uma lista de hosts. Na área de conteúdo principal, use os menus suspensos Downstream Application e Interface para filtrar resultados. Abaixo deles, encontram-se painéis de tendência para contagem de requisições, contagem de erros e tempo de resposta.
Análise de trace
O recurso de análise de trace executa análises em tempo real com base em dados completos de trace armazenados, combinando livremente filtros e dimensões de agregação, o que suporta diagnósticos personalizados para vários cenários. Para mais informações, consulte Trace Analysis.
FAQ
Relacionado a chamadas de API
O que é trace upstream para uma chamada de API?
Refere-se à quantidade de vezes que aplicações upstream chamam esta aplicação. Os registros aparecem apenas se a aplicação upstream tiver um probe do ARMS instalado. Caso a aplicação upstream não possua um probe, nenhum registro será exibido. Autochamadas da aplicação também aparecem como upstream.
Algumas APIs sem endpoint de ingestão upstream
Se uma interface realmente possui chamadas upstream, mas essas aplicações upstream não possuem probes do ARMS, as chamadas upstream não aparecerão.
Upstream e downstream do link confundidos
Se o seu trace utiliza componentes SkyWalking, todo o trace usa o protocolo SkyWalking por padrão. O ARMS apresentou problemas no suporte ao protocolo SkyWalking antes da versão 4.2.x, causando falhas na identificação de upstream/downstream. Atualize para a versão 4.2.x ou posterior ou, na página Custom Configuration, em Trace Context Propagation Protocol Settings, force o uso de um protocolo não-SkyWalking para propagação de contexto de trace. Para instruções, consulte Trace Context Propagation Protocol Settings.
A contagem de erros da interface Dubbo não é zero, mas nenhum trace é encontrado
Em versões de probe anteriores a 3.2.x, os traces do Dubbo não registravam corretamente os códigos de status, impedindo a aparição de traces de erro. Esse problema foi corrigido na versão 3.2.x e posteriores.
A contagem de exceções não é zero nas chamadas de API, mas nenhum trace de exceção aparece na busca de traces
Antes da versão 4.1.x, os probes registravam apenas traces de erro e lentos, portanto exceções sem erros ou lentidão podiam não ser amostradas. A partir da versão 4.1.x, os probes amostram traces de erro, lentos e de exceção, de modo que as exceções agora acionam a amostragem.
Por que o tráfego da interface caiu?
Primeiro, confirme se o tráfego realmente caiu verificando o uso de CPU, I/O de rede e outras métricas no momento da queda:
Em caso afirmativo, geralmente trata-se de uma queda no tráfego real.
Caso contrário, podem existir problemas no lado do servidor do ARMS. Nesse cenário, abra um ticket para obter assistência.
O tráfego de monitoramento do Spring Cloud Gateway está impreciso
Versões de probe anteriores a 4.x apresentavam bugs na instrumentação do Spring Cloud Gateway, causando perda de tráfego em alguns cenários. Atualize para a versão de probe 4.x ou posterior.
É possível visualizar instruções SQL lentas para uma interface?
Novo console
Na página de detalhes de monitoramento, clique em nome da interface alvo e acesse a página SQL Analysis.
Esta página mostra um gráfico de tendência de requisições e uma tabela de análise SQL. A tabela inclui colunas como Database Name, Database Type, Operation Type, SQL Statement, Request Count, Average Response Time, Slow SQL Count e Response Size. Use isso para localizar SQL lento e clique em Trace para solucionar problemas adicionais.
Legacy Console
Acesse para a aplicação alvo. Esta página mostra estatísticas de chamadas SQL relacionadas à interface.
O que significam os pontos amarelos antes das interfaces no Legacy Console?
Passe o mouse sobre um ponto para ver seu significado.
Um ponto amarelo indica uma chamada lenta. Por padrão, requisições que levam mais de 500 ms são marcadas como lentas. Ajuste esse limiar na seção Interface Call Configuration da página Custom Configuration.
Um ponto vermelho indica um erro.
Por que alguns códigos de status 5xx não são coletados?
Conforme a RFC7231, códigos de status como 502 e 504 são gerados por gateways e não refletem necessariamente a resposta real do service chamado. Se o gateway não tiver monitoramento ARMS, mas o service de backend possuir, essas respostas 5xx não serão contabilizadas.
O que é NetWork And Dubbo Response Decode?
É um span que mede o tempo gasto na desserialização de dados da camada de transporte do Dubbo.
Por que os nomes das interfaces contêm * ou palavras-chave do ARMS?
Isso ocorre quando os nomes das interfaces são altamente variáveis. O ARMS converge interfaces semelhantes substituindo as partes diferentes. Para detalhes, consulte ARMS Convergence Mechanism.
Por que a duração da chamada externa difere da duração real do service downstream?
A duração no lado do servidor mede apenas o tempo em que a interface processa a requisição. A duração no lado do cliente inclui o estabelecimento de conexão e o tempo de rede. O console do ARMS mostra ambas as durações separadamente, mas o tempo relacionado à rede não pode ser determinado com precisão.
A interface retorna normalmente, mas a contagem de exceções de chamada única não é zero
Esse comportamento é esperado. Alguns frameworks (como OkHttp3) lançam internamente exceções que são capturadas externamente, mantendo a lógica de negócios normal. Como o ARMS instrumenta esses frameworks, ele registra essas exceções — mas elas não indicam problemas reais de negócios. Você decide se deve tratá-las. Essas estatísticas ignoram detalhes da mensagem de exceção. Para ver a mensagem real da exceção, clique em um trace da exceção e depois clique em ícone
ao lado da interface para visualizar a exceção na pilha de métodos.
Nomes de interface HTTP como /error, /404, /*, /**
Geralmente resultam de requisições inesperadas que o ARMS não consegue associar a uma rota. As causas comuns incluem:
Requisição de uma URL inexistente.
Cabeçalhos de requisição inválidos causando falhas de validação, como cabeçalhos contendo caracteres inválidos.
Uso de servidores HTTP sem mecanismos de roteamento, como Netty puro.
Por que as contagens de requisições nas chamadas de interface diferem das da análise de trace?
A análise de trace baseia-se em dados de trace e é afetada pela taxa de amostragem.
Por que os tempos de resposta quantílicos diferem entre os detalhes da interface e a análise de trace?
Os detalhes da interface calculam quantis por instância usando algoritmos de bucketing. A análise de trace calcula quantis a partir de spans amostrados para a interface. Portanto, os valores diferem. Para detalhes, consulte ARMS Quantile Metric Calculation Principles.
Volume de chamadas de API aproximadamente dobrou
Isso geralmente acontece se os probes 3.x e 4.x forem anexados acidentalmente durante uma atualização. Acesse , selecione qualquer probe e clique em View Details para verificar os parâmetros da JVM.
Dois parâmetros -javaagent indicam que ambos os probes 3.x e 4.x estão anexados.
Por exemplo, o probe 3.x usa -javaagent:/home/admin/.opt/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar, enquanto o probe 4.x usa -javaagent:/srv/ArmsAgent/aliyun-java-agent.jar.
Por que o volume de chamadas no console do ARMS difere de outras fontes?
Discrepâncias podem surgir de várias maneiras. Dois cenários comuns:
O ARMS mostra 500 chamadas/minuto para uma interface de aplicação, enquanto o Nginx mostra 200/minuto. Isso frequentemente significa que parte do tráfego ignora o Nginx e acessa a aplicação diretamente.
O ARMS mostra 400 acessos ao DB/minuto a partir de uma aplicação, enquanto o monitoramento do servidor de DB mostra 1.000 execuções/minuto. Isso geralmente significa que múltiplas aplicações acessam o mesmo DB; o ARMS mostra apenas o tráfego da aplicação especificada.
Qual é o suporte do ARMS para cenários WebFlux?
Probes anteriores à versão 4.x suportam apenas Spring WebFlux nativo e spring-cloud-gateway. Modificações personalizadas de WebHandler (como Apache Shenyu) não são suportadas.
Por que vejo aplicações upstream que não são minhas e por que não consigo visualizar seus detalhes?
Se essas aplicações fornecem serviços públicos, isso é normal. A aplicação upstream pertence a outro usuário, criando uma relação de chamada entre usuários. O ARMS registra o nome da aplicação upstream e a contagem de chamadas, mas devido ao isolamento de usuários, você não consegue visualizar os detalhes da aplicação do outro usuário.
Por que não vejo dados upstream/downstream esperados apesar de existirem relações claras de chamada?
O ARMS inspeciona aleatoriamente traces de usuários e verifica o campo trace.protocol.type no LocalRootSpan. Se o valor for Jager, problemas de conversão de maiúsculas/minúsculas causam falhas na identificação de upstream/downstream. Para corrigir isso, switch to another protocol ou abra um ticket.
Na página Trace Details, selecione LocalRootSpan e verifique o campo trace.protocol.type em Additional Information à direita. Um exemplo de valor normal é EagleEye.
Relacionado a assinatura de mensagens
Diferença de dados entre visualizações de cliente e servidor
As páginas Message Subscription e Message Publishing exibem métricas de desempenho do lado do cliente para a aplicação selecionada atuando como consumidor ou produtor, enquanto o painel de monitoramento de uma instância MQ mostra métricas de desempenho relacionadas a tópicos no lado do servidor.
Formatos de nome de span para mensagens
|
Tipo de mensagem |
Versões de agent anteriores a 4.x |
Agent 4.x e posteriores |
|
Envio de mensagem RocketMQ/Ons |
Nenhum span é criado. Apenas pilhas de métodos são registradas. |
|
|
Recebimento de mensagem RocketMQ/Ons |
|
|
|
Envio de mensagem Kafka |
Nenhum span é criado. Apenas pilhas de métodos são registradas. |
|
|
Recebimento de mensagem Kafka |
|
|
|
Envio de mensagem RabbitMQ |
Nenhum span é criado. Apenas pilhas de métodos são registradas. |
|
|
Recebimento de mensagem RabbitMQ |
|
|
Suporte para Spring Cloud Alibaba RocketMQ
Este framework é suportado nas versões de agent 4.x e posteriores. Se a versão do seu agent for anterior a 4.x, upgrade the ARMS agent.
Métrica Message Delay
O atraso de mensagem refere-se ao tempo total desde a produção até o consumo da mensagem. A unidade desta métrica é milissegundos (ms). Atualmente, esta métrica é coletada apenas para RocketMQ Client e Ons Client.
Traces ou métricas de consumidor ausentes
Isso pode acontecer se a versão do agent for anterior a 4.x e você usar expressões lambda para definir a lógica de consumo no listener de mensagens.
Como o aprimoramento de classe para expressões lambda falha nas versões de agent 2.x e 3.x, você pode upgrade the agent para a versão 4.x para resolver este problema.
Erro de cabeçalho 'Magic v1' do Kafka
O agent Java usa o campo Header das mensagens Kafka para propagar o contexto de trace. Em versões do Kafka anteriores a 0.11.0.0 (tanto para clientes quanto para brokers), o formato da mensagem não suporta cabeçalhos. Se você estiver usando uma versão mais antiga do Kafka para seu broker ou cliente, migre para a versão 0.11.0.0 ou posterior. Se não puder migrar imediatamente, para versões de agent Java anteriores a 4.x, desative o aprimoramento do componente Kafka (a chave kafka-plugin) na seção Agent Switch Settings da página Custom Configurations da aplicação. Para versões de agent Java 4.x e posteriores, adicione o parâmetro JVM -Dotel.instrumentation.kafka.producer-propagation.enabled=false ao iniciar o service como solução alternativa.
Spans de mensagem ausentes em traces
Verifique se os SDKs de cliente de fila de mensagens usados pelas suas aplicações produtora e consumidora são suportados pelo ARMS. Para componentes suportados, consulte Supported Java components and frameworks for ARMS Application Monitoring.
Verifique se tanto suas aplicações produtora quanto consumidora estão conectadas ao Application Monitoring ou ao Managed Service for OpenTelemetry, têm suas chaves de agent e plugin ativadas e estão reportando para a mesma região. Spans para envio de mensagens são gerados no produtor, e spans para recebimento de mensagens são gerados no consumidor. Se qualquer uma das aplicações não estiver configurada corretamente, seus spans estarão ausentes.
Se não conseguir ver spans para envio de mensagens, verifique se a versão do agent da aplicação produtora é 4.x ou posterior. Em versões de agent anteriores a 4.x, o envio de uma mensagem não é registrado como um span separado, mas sim incluído na pilha de métodos do span pai. Clique em ícone
ao lado do span pai para visualizar a pilha de chamadas de método.Se não conseguir ver spans para recebimento de mensagens, verifique se configurou um Invalid API Filter na seção Interface Call Configuration na página Custom Configurations da aplicação consumidora. Este filtro serve para excluir spans indesejados da coleta.
Diferença no tempo de resposta do Kafka entre versões de agent
Sintoma: O tempo de resposta cai de vários segundos para 0,x milissegundos.
Causa:
Nas versões de agent 3.x e anteriores, ao processar um BatchMessageListener, um lote de mensagens é tratado como uma única chamada, e suas durações são agregadas em um único valor.
As versões de agent 4.x e posteriores separam essa lógica, contando cada mensagem como uma chamada individual. Portanto, após atualizar de um agent 3.x para 4.x, o tempo de resposta por chamada diminuirá significativamente, enquanto o número de chamadas aumentará significativamente.
O método estatístico usado na versão 3.x era menos preciso e foi aprimorado na versão 4.x.
Em assinaturas de mensagens, por que o consumo do Kafka aparece duplicado nos traces?
Se você usar o batchMessageListener do spring-kafka, cada mensagem no lote é registrada dentro da mesma lógica de consumo do Kafka. O spring-kafka implementa o batchMessageListener destas formas:
Adicione a anotação
@KafkaListener(topics = "my-topic", batch = true)ao seu método de consumo.Implemente a interface
BatchMessageListenerna classe do seu método de consumo.Ative o modo de consumo em lote nas propriedades do Kafka Message Listener Container:
containerProperties.setBatchListener(true).
Relacionado a tarefas agendadas
Por que a filtragem de interface inválida não funciona para interfaces de tarefas agendadas?
Verifique a versão do seu probe. Para probes abaixo de 3.2.0 ou entre 4.0.0 e 4.2.0, a filtragem de interface inválida pode não ter efeito. Recomendamos upgrading to probe version 3.2.10 or higher than 4.2.0.
Por que chamadas externas estão ausentes nos traces apesar de existirem em tarefas agendadas?
Etapas de solução de problemas:
Se os próprios traces de tarefas agendadas estiverem ausentes, primeiro verifique Supported Java Components and Frameworks for ARMS Application Monitoring e valide Probe Switch Settings.
Se apenas as chamadas externas estiverem ausentes e a versão do seu probe for inferior a 4.0.0, a propagação de contexto de trace pode falhar em cenários assíncronos. Upgrade to probe version 4.0.0 or later, ou use o recurso Advanced Settings para configurar a propagação automática de contexto.
Por que os dados do framework xxl-job estão ausentes?
Probes abaixo da versão 3.1.0 não suportam xxl-job. Upgrade to a newer probe version.
Se você personalizou o código do xxl-job — por exemplo, renomeando classes-chave (incluindo nomes de classe e pacote) — a instrumentação do probe não funcionará. Nesse caso, add custom instrumentation to traces using the OpenTelemetry Java SDK.