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ê poderá 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 Connect applications.
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 foi criado. Para mais informações, consulte Create an ACK managed cluster.
-
Uma aplicação Java:
Para os requisitos de versão do JDK, consulte Java components and frameworks supported by 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 YAML de exemplo a seguir para crie uma. Para mais informações, consulte Create a stateless workload (Deployment).
NotaO YAML de exemplo cria os seguintes recursos:
Um namespace chamado arms-demo. Todos os recursos subsequentes são criados nesse namespace.
Dois workloads stateless: 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 está ativada.
A cota não utilizada não é transferida para o mês seguinte. Caso ultrapasse a cota gratuita do mês corrente, você será cobrado com base no volume de dados gravados. Para mais informações, consulte Billing.
Instalar o agente
1. Instale o componente ack-onepilot****
Acesse o ACK console. Na página Clusters, clique em no nome do cluster.
No painel de navegação à esquerda, clique em Components and Add-ons e pesquise ack-onepilot por palavra-chave.
-
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 os 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 em no nome de uma aplicação para visualize suas métricas de monitoramento. Para mais informações, consulte View monitoring details (New).
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 do 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. Também oferece análise de erros e de 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 os 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 em 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, nome da API MySQL e 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 disponibiliza filtros rápidos para Status (Normal/Error), Response Time, API Name e Host Address. Abaixo, a lista de traces inclui 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 do trace apresenta 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 exibem 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 em na aba Topology para visualize 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 de topologia de chamadas de service da aplicação arms-k8s-demo-subcomponent inclui os seguintes nós e suas 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 do DingTalk especificados, permitindo que você tome as medidas necessárias. Para mais informações, consulte Application Monitoring alert rules.
Exemplo de configure de regra de alerta: em 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 de 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 sua conta possui saldo suficiente.
Se não precisar mais monitorar a aplicação, desinstale o agente. Para mais informações, consulte Uninstall the agent in a Kubernetes environment.
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 Select a trace sampling mode (agent version 3.2.8 or later).
O Application Monitoring permite correlacionar TraceIDs nos logs de negócio. Quando ocorre um problema na aplicação, use o TraceID para localizar rapidamente os logs de negócio relevantes e resolver o incidente. Para mais informações, consulte Correlate TraceIDs with business logs for Java applications.
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 for Java applications.
O Managed Service for Prometheus do Alibaba Cloud é integrado por padrão à fonte de dados do ARMS Application Monitoring. Obtenha dados do Application Monitoring diretamente, visualize painéis pré-configurados e realize desenvolvimento personalizado no Managed Service for Prometheus. Para mais informações, consulte Obtain ARMS Application Monitoring data by using Managed Service for Prometheus.
> Edit YAML