Todos os produtos
Search
Central de documentação

Application Real-Time Monitoring Service:Instalação automática do probe Go no Kubernetes

Última atualização: Oct 09, 2026

O ARMS Application Monitoring permite monitorar aplicações Go em um ambiente Kubernetes genérico, incluindo a topologia da aplicação, chamadas de api, erros, transações lentas e análise de SQL. Este tópico descreve como conectar essas aplicações ao ARMS Application Monitoring.

Nota

Este tópico se aplica apenas a clusters Kubernetes não ACK. Para clusters do Container Service for Kubernetes (ACK), consulte Install the Go probe for ACK and Container Compute Service (ACS) clusters by using the ack-onepilot component.

Pré-requisitos

  • O componente kube-apiserver no seu cluster Kubernetes deve ser a versão 1.10 ou posterior.

  • Se o seu cluster Kubernetes não estiver implantado na Alibaba Cloud, ele deverá ter acesso à internet ou estar conectado a uma VPC da Alibaba Cloud, por exemplo, pela Cloud Enterprise Network (CEN).

  • Sua aplicação Go deve ser a versão 1.18 ou posterior.

Etapa 1: Compile a imagem da aplicação Go

Para usar o monitoramento de aplicações Go do ARMS, basta usar a ferramenta instgo durante a compilação, adicionando instgo como prefixo ao comando go build original. Não é necessário modificar o código da aplicação nem integrar o sdk do OpenTelemetry. O agente instgo implementa a instrumentação automática com base no padrão OpenTelemetry e insere o código de monitoramento automaticamente durante a fase de análise AST na compilação.

  1. (Opcional) Se o seu projeto incluir um diretório vendor durante a compilação, adicione -mod=vendor após go build.

  2. Use o comando wget e baixe a ferramenta de compilação instgo. Selecione uma URL de baixe com base no sistema operacional e na arquitetura do seu ambiente de compilação.

    Observe que o instgo é atualizado automaticamente durante o processo de compilação. Por favor, salve o instgo em um diretório em que o usuário da compilação tenha permissões de gravação.

    Nota
    • O instgo é uma ferramenta de compilação do ARMS que instrumenta seu projeto Go, o que permite ao ARMS monitorar sua aplicação.

    • Se você tiver acesso à internet ao Object Storage Service (OSS), use a URL de baixe da China (Hangzhou) correspondente ao seu sistema operacional e arquitetura.

    Comandos de baixe

    Linux (AMD64)

    Endereço da internet

    wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/instgo/instgo-linux-amd64" -O instgo

    Linux (ARM64)

    Endereço da internet

    wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/instgo/instgo-linux-arm64" -O instgo

    Mac (ARM64)

    Endereço da internet

    wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/instgo/instgo-darwin-arm64" -O instgo

    Mac (AMD64)

    Endereço da internet

    wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/instgo/instgo-darwin-amd64" -O instgo

    Windows (AMD64)

    Endereço da internet

    wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/instgo/instgo-windows-amd64.exe" -O instgo.exe
  3. Torne a ferramenta de compilação executável.

    Linux/Mac

    # Grant the executable permission.
    chmod +x instgo

    Windows

    Não é necessário conceder permissão de execução no Windows.

  4. (Opcional) Configure um UID como parâmetro de compilação.

    Importante

    Se você pular esta etapa, o instgo instalará a versão mais recente do agente ARMS por padrão.

    Use o comando set e defina um UID como parâmetro de compilação.

    instgo set --uid={YourAliyunUid} // instgo 1.4.5 or later is required. The UID is the ID of your Alibaba Cloud primary account.
  5. Adicione instgo como prefixo ao comando de compilação original e execute-o.

    instgo go build {arg1} {arg2} {arg3}

    Se você usar go install para compilar o projeto, também poderá adicionar instgo como prefixo ao comando de compilação original.

  6. Use o arquivo binário gerado na etapa anterior e crie uma imagem.

Etapa 2: Agora instale o Helm 3

Agora instale o Helm 3 na máquina que você usa e gerencie o cluster Kubernetes. O agente ack-onepilot, que será instalado na Etapa 3, é distribuído como um chart do Helm. Portanto, o Helm 3 deve estar disponível antes de você continuar. Para obter instruções de instalação, consulte a documentação do Helm vinculada no título desta etapa.

Etapa 3: Agora instale o agente

O Application Real-Time Monitoring service (ARMS) oferece suporte apenas a aplicações stateless (Deployment) e stateful (StatefulSet). As etapas de integração são as mesmas para ambos os tipos. Este exemplo demonstra como conectar uma aplicação stateless (Deployment) no Kubernetes ao ARMS.

  1. Use o comando wget a seguir e baixe o pacote de instalação do ack-onepilot.

     wget 'https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ack-onepilot-5.1.1.tgz'
  2. Execute o comando abaixo para extrair o pacote de instalação do ack-onepilot.

    tar xvf ack-onepilot-5.1.1.tgz                 
  3. Agora edite o arquivo values.yaml do pacote de instalação. Agora modifique os parâmetros a seguir de acordo com o seu ambiente e salve o arquivo.

    registry: registry-__ACK_REGION_ID__.ack.aliyuncs.com/acs/
    cluster_id: __ACK_CLUSTER_ID__
    accessKey: __ACCESSKEY__
    accessKeySecret: __ACCESSKEY_SECRET__
    uid: "__ACK_UID__"
    region_id: __ACK_REGION_ID__
    • registry: O registro de imagens do ack-onepilot.

    • cluster_id: Um ID de cluster personalizado que identifica exclusivamente o seu cluster Kubernetes. Recomendamos o formato <uid>-<clusterid>.

    • accessKey e accessKeySecret: O AccessKey ID e o AccessKey Secret da sua conta Alibaba Cloud (conta principal). Para obtê-los, consulte Create an AccessKey.

      Importante

      Certifique-se de que a conta principal tenha as permissões AliyunARMSFullAccess e AliyunSTSAssumeRoleAccess.

    • uid: O ID da sua conta Alibaba Cloud (conta principal). Para obtê-lo, passe o mouse sobre a foto de perfil no canto superior direito do console da Alibaba Cloud.

    • region_id: O ID da região da Alibaba Cloud. Para obter uma lista das regiões com suporte, consulte Available regions.

  4. Agora execute o comando abaixo e instale o ack-onepilot.

    Execute este comando fora do diretório do pacote de instalação do ack-onepilot.

    helm3 upgrade --install ack-onepilot ack-onepilot --namespace ack-onepilot --create-namespace

Etapa 4: Agora modifique o arquivo YAML do Deployment

  1. Use o comando abaixo e visualize o arquivo YAML do Deployment de destino.

    kubectl get deployment {deployment-name} -o yaml                            
    Nota

    Se você não souber o {deployment-name}, execute o comando abaixo para listar todos os Deployments. Em seguida, encontre o nome do Deployment de destino na saída.

    kubectl get deployments --all-namespaces                
  2. Agora edite o arquivo YAML do Deployment de destino.

    kubectl edit deployment {deployment-name} -o yaml                        
  3. No arquivo YAML, adicione o seguinte conteúdo sob spec.template.metadata.

    labels:
      aliyun.com/app-language: "golang" # Required for Go applications.
      armsPilotAutoEnable: "on"
      armsPilotCreateAppName: "<your-deployment-name>"    # Replace <your-deployment-name> with your application name.

    Se você precisar, crie um novo Deployment no seu ambiente K8s e conectá-lo ao ARMS, use o arquivo YAML completo a seguir:

    Agora visualize o arquivo YAML de exemplo completo (Go)

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: otel-go-client
      name: otel-go-client
      namespace: default
    spec:
      progressDeadlineSeconds: 600
      replicas: 1
      revisionHistoryLimit: 10
      selector:
        matchLabels:
          app: otel-go-client
      strategy:
        rollingUpdate:
          maxSurge: 25%
          maxUnavailable: 25%
        type: RollingUpdate
      template:
        metadata:
          labels:
            aliyun.com/app-language: golang
            armsPilotAutoEnable: 'on'
            armsPilotCreateAppName: otel-go-client
            app: otel-go-client
        spec:
          containers:
            - image: registry.cn-hangzhou.aliyuncs.com/private-mesh/hellob:otel-client-arms-go-test-0.0.1
              imagePullPolicy: Always
              name: client
              resources:
                requests:
                  cpu: 250m
                  memory: 300Mi
              terminationMessagePath: /dev/termination-log
              terminationMessagePolicy: File
          dnsPolicy: ClusterFirst
          restartPolicy: Always
          schedulerName: default-scheduler
          securityContext: {}
          terminationGracePeriodSeconds: 30
    
    ---
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: otel-go-server
      name: otel-go-server
      namespace: default
    spec:
      progressDeadlineSeconds: 600
      replicas: 1
      revisionHistoryLimit: 10
      selector:
        matchLabels:
          app: otel-go-server
      strategy:
        rollingUpdate:
          maxSurge: 25%
          maxUnavailable: 25%
        type: RollingUpdate
      template:
        metadata:
          labels:
            app: otel-go-server
            aliyun.com/app-language: golang
            armsPilotAutoEnable: 'on'
            armsPilotCreateAppName: otel-go-server
        spec:
          containers:
            - image: registry.cn-hangzhou.aliyuncs.com/private-mesh/hellob:otel-server-arms-go-test-0.0.1
              imagePullPolicy: Always
              name: server
              resources:
                requests:
                  cpu: 250m
                  memory: 300Mi
              terminationMessagePath: /dev/termination-log
              terminationMessagePolicy: File
          dnsPolicy: ClusterFirst
          restartPolicy: Always
          schedulerName: default-scheduler
          securityContext: {}
          terminationGracePeriodSeconds: 30
    
    ---
    
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: otel-go-server
      name: otel-server
      namespace: default
    spec:
      internalTrafficPolicy: Cluster
      ipFamilies:
        - IPv4
      ipFamilyPolicy: SingleStack
      ports:
        - name: http
          port: 9000
          protocol: TCP
          targetPort: 9000
      selector:
        app: otel-go-server
      sessionAffinity: None
      type: ClusterIP

Resultado

A integração é bem-sucedida quando a aplicação Go aparece no console do ARMS em Application Monitoring > Application List e começa a reportar dados em aproximadamente um minuto.