Tous les produits
Search
Centre de documentation

Application Real-Time Monitoring Service:Installation automatique de la sonde Go dans Kubernetes

Dernière mise à jour :Oct 09, 2026

ARMS Application Monitoring vous permet de surveiller les applications Go dans un environnement Kubernetes générique, y compris leur topologie d'application, les appels API, les erreurs et les transactions lentes, ainsi que l'analyse SQL. Cette rubrique explique comment connecter ces applications à ARMS Application Monitoring.

Remarque

Cette rubrique concerne uniquement les clusters Kubernetes autres qu'ACK. Pour les clusters Container Service for Kubernetes (ACK), consultez Installer la sonde Go pour les clusters ACK et Container Compute Service (ACS) à l'aide du composant ack-onepilot.

Prérequis

  • Le composant kube-apiserver de votre cluster Kubernetes doit être en version 1.10 ou ultérieure.

  • Si votre cluster Kubernetes n'est pas déployé sur Alibaba Cloud, il doit avoir accès à Internet ou être connecté à un VPC Alibaba Cloud, par exemple via Cloud Enterprise Network (CEN).

  • Votre application Go doit être en version 1.18 ou ultérieure.

Étape 1 : Compiler l'image de l'application Go

Pour utiliser la surveillance des applications Go ARMS, il vous suffit d'utiliser l'outil instgo au moment de la compilation en ajoutant instgo comme préfixe à votre commande go build d'origine. Vous n'avez pas besoin de modifier le code métier ni d'intégrer le SDK OpenTelemetry. L'agent instgo met en œuvre une instrumentation automatique basée sur la norme OpenTelemetry, en insérant automatiquement le code de surveillance lors de l'étape d'analyse AST au moment de la compilation.

  1. (Facultatif) Si votre projet inclut un répertoire vendor lors de la compilation, ajoutez -mod=vendor après go build.

  2. Utilisez la commande wget pour télécharger l'outil de compilation instgo. Sélectionnez une URL de téléchargement en fonction du système d'exploitation et de l'architecture de votre environnement de compilation.

    Notez que instgo se met à jour automatiquement pendant le processus de compilation. Assurez-vous d'enregistrer instgo dans un répertoire où l'utilisateur de compilation dispose des autorisations d'écriture.

    Remarque
    • instgo est un outil de compilation d'ARMS qui instrumente votre projet Go, permettant à ARMS de surveiller votre application.

    • Si vous avez accès à Internet vers Object Storage Service (OSS), utilisez l'URL de téléchargement Chine (Hangzhou) correspondant à votre système d'exploitation et à votre architecture.

    Commandes de téléchargement

    Linux (AMD64)

    Adresse Internet

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

    Linux (ARM64)

    Adresse Internet

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

    Mac (ARM64)

    Adresse Internet

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

    Mac (AMD64)

    Adresse Internet

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

    Windows (AMD64)

    Adresse Internet

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

  3. Rendez l'outil de compilation exécutable.

    Linux/Mac

    # Grant the executable permission.
    chmod +x instgo

    Windows

    Aucune autorisation d'exécution n'est requise sous Windows.

  4. (Facultatif) Configurez un UID comme paramètre de compilation.

    Important

    Si vous ignorez cette étape, instgo installe par défaut la dernière version de l'agent ARMS.

    Utilisez la commande set pour configurer un UID comme paramètre de compilation.

    instgo set --uid={YourAliyunUid} // instgo 1.4.5 or later is required. The UID is the ID of your Alibaba Cloud primary account.
  5. Ajoutez instgo comme préfixe à votre commande de compilation d'origine et exécutez-la.

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

    Si vous utilisez go install pour compiler le projet, vous pouvez également ajouter instgo comme préfixe à votre commande de compilation d'origine.

  6. Utilisez le fichier binaire généré à l'étape précédente pour créer une image.

Étape 2 : Installer Helm 3

Installez Helm 3 sur la machine que vous utilisez pour gérer le cluster Kubernetes. L'agent ack-onepilot que vous installez à l'étape 3 est distribué sous forme de chart Helm ; Helm 3 doit donc être disponible avant de poursuivre. Pour les instructions d'installation, consultez la documentation Helm liée dans le titre de cette étape.

Étape 3 : Installer l'agent

Application Real-Time Monitoring Service (ARMS) prend uniquement en charge les applications sans état (Deployment) et avec état (StatefulSet). Les étapes d'intégration sont identiques pour les deux types. Cet exemple montre comment connecter une application sans état (Deployment) dans Kubernetes à ARMS.

  1. Exécutez la commande wget suivante pour télécharger le package d'installation ack-onepilot.

     wget 'https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ack-onepilot-5.1.1.tgz'
  2. Exécutez la commande suivante pour extraire le package d'installation ack-onepilot.

    tar xvf ack-onepilot-5.1.1.tgz                 
  3. Modifiez le fichier values.yaml dans le package d'installation. Adaptez les paramètres suivants à votre environnement, puis enregistrez le fichier.

    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 : Registre d'images pour ack-onepilot.

    • cluster_id : ID de cluster personnalisé qui identifie de manière unique votre cluster Kubernetes. Nous recommandons le format <uid>-<clusterid>.

    • accessKey et accessKeySecret : ID de clé d'accès (AccessKey ID) et secret de clé d'accès (AccessKey Secret) de votre compte Alibaba Cloud (compte principal). Pour les obtenir, consultez Créer une clé d'accès.

      Important

      Assurez-vous que le compte principal dispose des autorisations AliyunARMSFullAccess et AliyunSTSAssumeRoleAccess.

    • uid : ID de votre compte Alibaba Cloud (compte principal). Vous pouvez l'obtenir en survolant votre photo de profil dans le coin supérieur droit de la console Alibaba Cloud.

    • region_id : ID de région Alibaba Cloud. Pour la liste des régions prises en charge, consultez Régions disponibles.

  4. Exécutez la commande suivante pour installer ack-onepilot.

    Exécutez cette commande depuis l'extérieur du répertoire du package d'installation ack-onepilot.

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

Étape 4 : Modifier le fichier YAML du Deployment

  1. Exécutez la commande suivante pour afficher le fichier YAML du Deployment cible.

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

    Si vous ne connaissez pas le {deployment-name}, exécutez la commande suivante pour répertorier tous les Deployments. Recherchez ensuite le nom du Deployment cible dans la sortie.

    kubectl get deployments --all-namespaces                
  2. Modifiez le fichier YAML du Deployment cible.

    kubectl edit deployment {deployment-name} -o yaml                        
  3. Dans le fichier YAML, ajoutez le contenu suivant sous 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 vous devez créer un nouveau Deployment dans votre environnement K8s et le connecter à ARMS, utilisez le fichier YAML complet suivant :

    Afficher le fichier YAML d'exemple complet (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

Résultat

L'intégration est réussie si l'application Go apparaît dans la console ARMS sous Application Monitoring > Application List et commence à rapporter des données en environ une minute.