Todos os produtos
Search
Central de documentação

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

Última atualização: Jun 27, 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ê pode 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 Conectar aplicações.

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 já deve estar criado. Para mais informações, consulte Criar um cluster gerenciado do ACK.

    • Uma aplicação Java:

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

      Nota

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

      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 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****

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

  2. No painel de navegação à esquerda, clique em Add-ons. Na página Add-ons, pesquise por ack-onepilot.

  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 as 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 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

    image

    arms-k8s-demo-subcomponent

    image

  • 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