Todos os produtos
Search
Central de documentação

Application Real-Time Monitoring Service:Monitorar aplicações Java em um cluster ACK

Última atualização: Sep 21, 2026

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.

Nota

Para conectar aplicações Java em outros ambientes ou aplicações Go ao Application Monitoring, consulte Connect applications.

Fluxo de trabalho

  1. Instale um agente para a aplicação.

    1. 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.

    2. Atualize o arquivo YAML: adicione labels ao arquivo YAML da aplicação para ative o monitoramento e defina o nome de exibição no ARMS.

  2. Visualize os dados de monitoramento.

  3. Configure alertas.

Pré-requisitos

  • ACK:

    • Um cluster Kubernetes foi criado. Para mais informações, consulte Create an ACK managed cluster.

    • Uma aplicação Java:

      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).

      Nota

      O 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.

      Expand to view the complete sample YAML file (Java)

      apiVersion: v1
      kind: Namespace
      metadata:
        name: arms-demo
      ---
      apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
      kind: Deployment
      metadata:
        name: arms-springboot-demo
        namespace: arms-demo
        labels:
          app: arms-springboot-demo
      spec:
        replicas: 2
        selector:
          matchLabels:
            app: arms-springboot-demo
        template:
          metadata:
            labels:
              app: arms-springboot-demo
          spec:
            containers:
              - resources:
                  limits:
                    cpu: 0.5
                image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
                imagePullPolicy: Always
                name: arms-springboot-demo
                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"
      ---
      apiVersion: apps/v1 
      kind: Deployment
      metadata:
        name: arms-springboot-demo-subcomponent
        namespace: arms-demo
        labels:
          app: arms-springboot-demo-subcomponent
      spec:
        replicas: 2
        selector:
          matchLabels:
            app: arms-springboot-demo-subcomponent
        template:
          metadata:
            labels:
              app: arms-springboot-demo-subcomponent
          spec:
            containers:
              - resources:
                  limits:
                    cpu: 0.5
                image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
                imagePullPolicy: Always
                name: arms-springboot-demo-subcomponent
                env:
                  - name: SELF_INVOKE_SWITCH
                    value: "false"
                  - name: MYSQL_SERVICE_HOST
                    value: "arms-demo-mysql"
                  - name: MYSQL_SERVICE_PORT
                    value: "3306"
      ---
      apiVersion: v1
      kind: Service
      metadata:
        labels:
          name: arms-demo-component
        name: arms-demo-component
        namespace: arms-demo
      spec:
        ports:
          # the port that this service should serve on
          - name: arms-demo-component-svc
            port: 6666
            targetPort: 8888
        # label keys and values that must match in order to receive traffic for this service
        selector:
          app: arms-springboot-demo-subcomponent
      ---
      apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
      kind: Deployment
      metadata:
        name: arms-demo-mysql
        namespace: arms-demo
        labels:
          app: mysql
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: mysql
        template:
          metadata:
            labels:
              app: mysql
          spec:
            containers:
              - resources:
                  limits:
                    cpu: 0.5
                image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-demo-mysql:v0.1
                name: mysql
                ports:
                  - containerPort: 3306
                    name: mysql
      ---
      apiVersion: v1
      kind: Service
      metadata:
        labels:
          name: mysql
        name: arms-demo-mysql
        namespace: arms-demo
      spec:
        ports:
          # the port that this service should serve on
          - name: arms-mysql-svc
            port: 3306
            targetPort: 3306
        # label keys and values that must match in order to receive traffic for this service
        selector:
          app: 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****

  1. Acesse o ACK console. Na página Clusters, clique em no nome do cluster.

  2. No painel de navegação à esquerda, clique em Components and Add-ons e pesquise ack-onepilot por palavra-chave.

  3. 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

  1. Na página Stateless > Workloads, selecione o namespace da sua aplicação. Na linha da aplicação de destino, escolha image > Edit YAML.

  2. No painel Edit YAML, adicione os seguintes labels em spec.template.metadata e 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: 500m

    arms-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
  3. Após a reimplantação automática dos containers, aguarde de 1 a 2 minutos. No ARMS console, acesse a página Application List > Application Monitoring 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

    image

    arms-k8s-demo-subcomponent

    image

  • 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.