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.
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.
(Facultatif) Si votre projet inclut un répertoire vendor lors de la compilation, ajoutez
-mod=vendoraprèsgo build.-
Utilisez la commande
wgetpour 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.
Remarqueinstgo 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.
-
Rendez l'outil de compilation exécutable.
Linux/Mac
# Grant the executable permission. chmod +x instgoWindows
Aucune autorisation d'exécution n'est requise sous Windows.
-
(Facultatif) Configurez un UID comme paramètre de compilation.
ImportantSi vous ignorez cette étape, instgo installe par défaut la dernière version de l'agent ARMS.
Utilisez la commande
setpour 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. -
Ajoutez
instgocomme préfixe à votre commande de compilation d'origine et exécutez-la.instgo go build {arg1} {arg2} {arg3}Si vous utilisez
go installpour compiler le projet, vous pouvez également ajouterinstgocomme préfixe à votre commande de compilation d'origine. 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.
-
Exécutez la commande
wgetsuivante 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' -
Exécutez la commande suivante pour extraire le package d'installation ack-onepilot.
tar xvf ack-onepilot-5.1.1.tgz -
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>.-
accessKeyetaccessKeySecret: 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.ImportantAssurez-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.
-
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
-
Exécutez la commande suivante pour afficher le fichier YAML du Deployment cible.
kubectl get deployment {deployment-name} -o yamlRemarqueSi 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 -
Modifiez le fichier YAML du Deployment cible.
kubectl edit deployment {deployment-name} -o yaml -
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 :
Résultat
L'intégration est réussie si l'application Go apparaît dans la console ARMS sous et commence à rapporter des données en environ une minute.