Este tutorial explica como conectar uma aplicação Java em execução em um cluster Container Service for Kubernetes (ACK) ao Application Real-Time Monitoring Service (ARMS). Com isso, você pode analisar o desempenho da aplicação, usar o Trace Explorer e configure alertas.
Para conectar aplicações Java em outros ambientes ou aplicações Go ao Application Monitoring, consulte Conectar aplicações.
Fluxo de trabalho
-
Instale um agente para a aplicação.
Instale o componente ack-onepilot**: o ack-onepilot é um componente de sistema do ACK que conecta aplicações Java ou Go implantadas no ACK ao ARMS.
Atualize o arquivo YAML: adicione
labelsao arquivo YAML da aplicação para ative o monitoramento e defina o nome de exibição no ARMS.
Visualize os dados de monitoramento.
Configure alertas.
Pré-requisitos
-
ACK:
Um cluster Kubernetes já deve estar criado. Para mais informações, consulte Criar um cluster gerenciado do ACK.
-
Uma aplicação Java:
Para os requisitos de versão do JDK, consulte Componentes e frameworks Java compatíveis com o Application Monitoring.
A memória heap máxima do processo deve ser superior a 256 MB.
Caso não tenha uma aplicação Java, use o seguinte YAML de exemplo para crie uma. Para mais informações, consulte Criar uma carga de trabalho sem estado (Deployment).
NotaO YAML de exemplo crie os seguintes recursos:
Um namespace chamado arms-demo. Todos os recursos subsequentes são criados neste namespace.
Duas cargas de trabalho sem estado: arms-springboot-demo e arms-springboot-demo-subcomponent.
Um Service chamado arms-demo-component.
Um banco de dados chamado arms-demo-mysql.
-
ARMS:
Uma edição paga do Application Monitoring deve estar ativa.
A cota não utilizada não é transferida para o mês seguinte. Se você ultrapassar a cota gratuita no mês corrente, será cobrado com base no volume de dados gravados. Para mais informações, consulte Faturamento.
Instalar o agente
1. Instale o componente ack-onepilot****
Acesse o ACK console. Na página Clusters, clique no nome do cluster.
No painel de navegação à esquerda, clique em . Na página Add-ons, pesquise por ack-onepilot.
-
No card ack-onepilot, clique em Install. Na caixa de diálogo exibida, clique em OK.
Após a conclusão da instalação, o rótulo Installed aparece no canto superior direito do card do componente ack-onepilot, e a versão atual é exibida na parte inferior do card.
2. Atualize o YAML
Na página , selecione o namespace da sua aplicação. Na linha da aplicação de destino, escolha .
-
No painel Edit YAML, adicione as seguintes
labelsemspec.template.metadatae clique em Update.labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>" # The display name of the application in ARMS.Por exemplo, adicione a configuração aos arquivos YAML das aplicações arms-springboot-demo e arms-springboot-demo-subcomponent para ative o monitoramento e defina os nomes de exibição no ARMS como arms-k8s-demo e arms-k8s-demo-subcomponent, respectivamente.
arms-springboot-demo
strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: labels: app: arms-springboot-demo armsPilotAutoEnable: 'on' armsPilotCreateAppName: arms-k8s-demo spec: containers: - env: - name: SELF_INVOKE_SWITCH value: 'true' - name: COMPONENT_HOST value: arms-demo-component - name: COMPONENT_PORT value: '6666' - name: MYSQL_SERVICE_HOST value: arms-demo-mysql - name: MYSQL_SERVICE_PORT value: '3306' image: >- registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1 imagePullPolicy: Always name: arms-springboot-demo resources: limits: cpu: 500marms-springboot-demo-subcomponent
strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: labels: app: arms-springboot-demo-subcomponent armsPilotAutoEnable: 'on' armsPilotCreateAppName: arms-k8s-demo-subcomponent spec: containers: - env: - name: SELF_INVOKE_SWITCH value: 'false' - name: MYSQL_SERVICE_HOST value: arms-demo-mysql - name: MYSQL_SERVICE_PORT value: '3306' image: >- registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1 imagePullPolicy: Always name: arms-springboot-demo-subcomponent resources: limits: cpu: 500m terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst restartPolicy: Always -
Após a reimplantação automática dos containers, aguarde de 1 a 2 minutos. No ARMS console, acesse a página e clique no nome de uma aplicação para ver suas métricas de monitoramento. Para mais informações, consulte Visualizar detalhes de monitoramento (novo).
Na lista de aplicações, você verá as duas aplicações Java arms-k8s-demo-subcomponent e arms-k8s-demo. A tabela exibe métricas de monitoramento e suas tendências, como requisições por segundo, taxa de erros, tempo médio de resposta, número de vulnerabilidades CVE e insights inteligentes.
Visualizar detalhes de monitoramento
Trace Explorer
O recurso Trace Explorer permite análises em tempo real combinando diversas condições de filtro e dimensões de agregação. Além disso, oferece análise de traces com erros e traces lentos para identificar a causa de chamadas com falha ou lentidão no sistema ou na aplicação.
arms-k8s-demo
No ARMS console, na página Trace Explorer, selecione a aplicação arms-k8s-demo. Filtre registros de chamadas por critérios como serviceName, intervalo de tempo, status (Normal/Error), tempo de resposta, nome da API e endereço do host. A área central exibe um gráfico de barras para Call Count, um gráfico de barras para HTTP Errors (incluindo códigos de status 500) e um gráfico de linhas para Response Time Percentiles (p50/p90/p95/p99/average). A tabela abaixo apresenta os detalhes dos traces, com colunas para TraceId, API Name, Application Name, Response Time, Status Code, Start Time e Host Address. Alterne entre as visualizações List, Scatter Plot, Aggregated Trace, Aggregated Topology e Error/Slow Trace Analysis. O painel Slow Trace Analysis à direita identifica os atributos dimensionais mais relevantes para chamadas lentas, com base nos traces de maior tempo de resposta.
Detalhes do trace:
O trace com TraceID eaac1ed0ba172137124366816284d0001 tem um tempo de resposta total de 69 ms e contém dois spans. O primeiro span corresponde à API /demo/queryNotExistDB/{id} da aplicação arms-k8s-demo, com código de status 200 e tempo de resposta de 69 ms. O segundo span é uma consulta MySQL select * from user_notExist where id = 0 no banco arms_apm_demo_db, com tempo de resposta de 2 ms. O painel de detalhes do span à direita exibe o nome da aplicação arms-k8s-demo, o nome da API MySQL e o IP 172.30.208.186, com status normal. A seção Attributes inclui propriedades como db.name: arms_apm_demo_db, db.statement: select * from user_notExist where id = 0 e net.peer.name: arms-demo-mysql:3306.
arms-k8s-demo-subcomponent
Na página Trace Explorer da aplicação arms-k8s-demo-subcomponent, a seção superior exibe gráficos de Call Count, HTTP Errors e Response Time Percentile (p50/p90/p95/p99). O lado esquerdo oferece filtros rápidos por Status (Normal/Error), Response Time, API Name e Host Address. Abaixo está a lista de traces, com colunas para TraceId, API Name, Application Name, Response Time, Status, Start Time e Host Address. O painel à direita exibe Slow Trace Analysis e as principais dimensões de atributos.
Detalhes do trace:
A página de detalhes exibe um trace com TraceID eaac1ed0e017213712146427640d0001, iniciado em 2024-07-19 14:40:14, com tempo de resposta total de 99 ms. O trace contém três spans. O span de entrada /demo/invokeComponent (de arms-k8s-demo, código de status 200, 99 ms) chama /demo/queryUser/{id} (de arms-k8s-demo-subcomponent, código de status 200, 96 ms), que executa a consulta MySQL select * from (de arms_apm_demo_db, 1 ms). Os detalhes do span indicam o nome da aplicação arms-k8s-demo-subcomponent, API /demo/queryUser/{id}, endereço IP 172.30.208.119 e status normal. Os atributos incluem http.path: /demo/queryUser/10, http.status_code: 200, namespace: arms-demo e clusterName: go-test-1.
Métricas
-
Visão geral da aplicação
arms-k8s-demo

arms-k8s-demo-subcomponent

-
Topologia
arms-k8s-demo
No ARMS console, selecione a aplicação arms-k8s-demo e clique na aba Topology para ver a topologia de chamadas da aplicação. A topologia exibe o nó arms-k8s-demo (Errors: 16, Requests: 259, Response Time: 1,2s) e suas três dependências downstream: arms-k8s-demo-subcomponent (Errors: 16, Requests: 152, Response Time: 1,1s), www.aliyun.com (Errors: 0, Requests: 75, Response Time: 72,85ms) e arms-demo-mysql (Errors: 0, Requests: 91, Response Time: 1,50ms).
arms-k8s-demo-subcomponent
Na aba Topology, o diagrama exibe a topologia de chamadas de serviço da aplicação arms-k8s-demo-subcomponent com os seguintes nós e métricas: arms-k8s-demo (Errors: 16, Requests: 259, Response Time: 1,2s), arms-k8s-demo-subcomponent (Errors: 64, Requests: 732, Response Time: 1,2s), arms-demo-mysql (Errors: 0, Requests: 227, Response Time: 0,59ms) e www.aliyun.com (Errors: 0, Requests: 195, Response Time: 106,21ms). As linhas entre os nós indicam os relacionamentos de chamada: arms-k8s-demo chama arms-k8s-demo-subcomponent, que por sua vez chama arms-demo-mysql e www.aliyun.com.
Configurar alertas
Crie regras de alerta para aplicações específicas. Quando uma regra de alerta é acionada, o sistema envia notificações para os contatos ou grupos DingTalk especificados, permitindo que você tome as medidas necessárias. Para mais informações, consulte Regras de alerta do Application Monitoring.
Exemplo de configuração de regra de alerta: nos objetos de alerta, selecione as aplicações arms-k8s-demo e arms-k8s-demo-subcomponent. Para o tipo de métrica, selecione Statistics on services provided by applications. Nas condições de filtro, defina API Name e API Call Type como All. O modo de acionamento é Single Condition. O alerta é disparado quando o tempo médio de resposta nos últimos 5 minutos for maior ou igual ao limiar correspondente. Os limiares em múltiplos níveis estão definidos como P1:critical 6000 ms, P2:error 4000 ms e P4:page 2500 ms.
Limpar recursos
Após concluir este tutorial:
Caso queira continuar monitorando a aplicação, verifique se a sua conta possui saldo suficiente.
Caso não precise mais monitorar a aplicação, desinstale o agente. Para mais informações, consulte Desinstalar o agente em um ambiente Kubernetes.
Referências
O ARMS oferece suporte a múltiplos modos de amostragem de traces. Selecione o modo mais adequado ao seu caso de uso para obter os dados de trace desejados com menor custo. Para mais informações, consulte Selecionar um modo de amostragem de trace (versão do agente 3.2.8 ou posterior).
O Application Monitoring permite correlacionar TraceIDs em logs de negócios. Quando um problema ocorre na aplicação, use o TraceID para localizar rapidamente os logs de negócios relevantes e solucionar o problema. Para mais informações, consulte Correlacionar TraceIDs com logs de negócios em aplicações Java.
Se sua aplicação em produção apresentar alto uso de CPU ou memória, ou um grande número de chamadas lentas, use os flame graphs gerados pelo recurso de continuous profiling do ARMS para identificar a causa raiz. Para mais informações, consulte Continuous profiling para aplicações Java.
O Managed Service for Prometheus da Alibaba Cloud já vem integrado por padrão com a fonte de dados do ARMS Application Monitoring. Com isso, você obtém diretamente os dados do Application Monitoring, visualiza painéis pré-criados e realiza desenvolvimento personalizado no Managed Service for Prometheus. Para mais informações, consulte Obter dados do ARMS Application Monitoring usando o Managed Service for Prometheus.
> Edit YAML