Todos los productos
Search
Centro de documentos

Application Real-Time Monitoring Service:Instalación automática del probe de Go en Kubernetes

Última actualización: Oct 10, 2026

ARMS Application Monitoring le permite monitorear aplicaciones Go en un entorno genérico de Kubernetes. Esto incluye la topología de la aplicación, las llamadas a API, los errores, las transacciones lentas y el análisis de SQL. En este tema se describe cómo conectar estas aplicaciones a ARMS Application Monitoring.

Nota

Este tema aplica únicamente a clústeres de Kubernetes que no son de ACK. Para los clústeres de Container Service for Kubernetes (ACK), consulte Install the Go probe for ACK and Container Compute Service (ACS) clusters by using the ack-onepilot component.

Requisitos previos

  • El componente kube-apiserver de su clúster de Kubernetes debe ser de la versión 1.10 o posterior.

  • Si su clúster de Kubernetes no está desplegado en Alibaba Cloud, debe tener acceso a internet o estar conectado a una VPC de Alibaba Cloud, por ejemplo, mediante Cloud Enterprise Network (CEN).

  • Su aplicación Go debe ser de la versión 1.18 o posterior.

Paso 1: Compilar la imagen de la aplicación Go

Para usar el monitoreo de aplicaciones Go de ARMS, solo necesita utilizar la herramienta instgo durante la compilación. Agregue instgo como prefijo a su comando original go build. No es necesario modificar ningún código de negocio ni integrar el SDK de OpenTelemetry. El agente instgo implementa la instrumentación automática con base en el estándar OpenTelemetry e inserta el código de monitoreo automáticamente durante la fase de análisis AST en tiempo de compilación.

  1. (Opcional) Si su proyecto incluye un directorio vendor durante la compilación, agregue -mod=vendor después de go build.

  2. Use el comando wget para descargar la herramienta de compilación instgo. Seleccione una URL de descarga según el sistema operativo y la arquitectura de su entorno de compilación.

    Tenga en cuenta que instgo se actualiza automáticamente durante el proceso de compilación. Asegúrese de guardar instgo en un directorio donde el usuario de compilación tenga permisos de escritura.

    Nota
    • instgo es una herramienta de compilación de ARMS que instrumenta su proyecto Go y permite que ARMS monitoree su aplicación.

    • Si tiene acceso a internet hacia Object Storage Service (OSS), use la URL de descarga de China (Hangzhou) que corresponda a su sistema operativo y arquitectura.

    Comandos de descarga

    Linux (AMD64)

    Dirección de internet

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

    Linux (ARM64)

    Dirección de internet

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

    Mac (ARM64)

    Dirección de internet

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

    Mac (AMD64)

    Dirección de internet

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

    Windows (AMD64)

    Dirección de internet

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

  3. Otorgue permisos de ejecución a la herramienta de compilación.

    Linux/Mac

    # Grant the executable permission.
    chmod +x instgo

    Windows

    En Windows no es necesario otorgar permisos de ejecución.

  4. (Opcional) Configure un UID como parámetro de compilación.

    Importante

    Si omite este paso, instgo instala de forma predeterminada la versión más reciente del agente de ARMS.

    Use el comando set para configurar un UID como parámetro de compilación.

    instgo set --uid={YourAliyunUid} // instgo 1.4.5 or later is required. The UID is the ID of your Alibaba Cloud primary account.
  5. Agregue instgo como prefijo a su comando de compilación original y ejecute el comando.

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

    Si usa go install para compilar el proyecto, también puede agregar instgo como prefijo a su comando de compilación original.

  6. Use el archivo binario generado en el paso anterior para construir una imagen.

Paso 2: Instalar Helm 3

Instale Helm 3 en la computadora que utiliza para gestionar el clúster de Kubernetes. El agente ack-onepilot que instalará en el paso 3 se distribuye como un chart de Helm, por lo que Helm 3 debe estar disponible antes de continuar. Para consultar las instrucciones de instalación, revise la documentación de Helm vinculada en el encabezado de este paso.

Paso 3: Instalar el agente

Application Real-Time Monitoring Service (ARMS) solo admite aplicaciones sin estado (Deployment) y con estado (StatefulSet). Los pasos de integración son los mismos para ambos tipos. Este ejemplo muestra cómo conectar una aplicación sin estado (Deployment) en Kubernetes a ARMS.

  1. Ejecute el siguiente comando wget para descargar el paquete de instalación de ack-onepilot.

     wget 'https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ack-onepilot-5.1.1.tgz'
  2. Ejecute el siguiente comando para extraer el paquete de instalación de ack-onepilot.

    tar xvf ack-onepilot-5.1.1.tgz                 
  3. Edite el archivo values.yaml del paquete de instalación. Modifique los siguientes parámetros para que coincidan con su entorno y guarde el archivo.

    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: el registro de imágenes para ack-onepilot.

    • cluster_id: un identificador de clúster personalizado que identifica de forma única su clúster de Kubernetes. Se recomienda usar el formato <uid>-<clusterid>.

    • accessKey y accessKeySecret: el AccessKey ID y el AccessKey Secret de su cuenta de Alibaba Cloud (cuenta principal). Para obtenerlos, consulte Create an AccessKey.

      Importante

      Asegúrese de que la cuenta principal tenga los permisos AliyunARMSFullAccess y AliyunSTSAssumeRoleAccess.

    • uid: el identificador de su cuenta de Alibaba Cloud (cuenta principal). Puede obtenerlo al pasar el cursor sobre su foto de perfil en la esquina superior derecha de la consola de Alibaba Cloud.

    • region_id: el identificador de región de Alibaba Cloud. Para consultar la lista de regiones compatibles, vea Available regions.

  4. Ejecute el siguiente comando para instalar ack-onepilot.

    Ejecute este comando desde fuera del directorio del paquete de instalación de ack-onepilot.

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

Paso 4: Modificar el archivo YAML del Deployment

  1. Ejecute el siguiente comando para consultar el archivo YAML del Deployment de destino.

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

    Si no conoce el valor de {deployment-name}, ejecute el siguiente comando para listar todos los Deployments. Después, busque el nombre del Deployment de destino en la salida.

    kubectl get deployments --all-namespaces                
  2. Edite el archivo YAML del Deployment de destino.

    kubectl edit deployment {deployment-name} -o yaml                        
  3. En el archivo YAML, agregue el siguiente contenido bajo 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.

    Si necesita crear un nuevo Deployment en su entorno de K8s y conectarlo a ARMS, utilice el siguiente archivo YAML completo:

    Consultar el archivo YAML de ejemplo 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

La integración es exitosa si la aplicación Go aparece en la consola de ARMS dentro de Application Monitoring > Application List y comienza a reportar datos en aproximadamente un minuto.