Application Real-Time Monitoring Service (ARMS) instrumente automatiquement les applications Java exécutées sur Container Service for Kubernetes (ACK) et Container Compute Service (ACS). Installez le composant ack-onepilot dans votre cluster et ajoutez trois libellés à votre Deployment. ARMS collecte ensuite les traces, la topologie de l'application, les métriques d'appels API ainsi que les données relatives aux erreurs et à la latence, sans aucune modification du code.
Les étapes d'installation pour ACK et ACS sont identiques. Ce guide utilise ACK comme exemple.
Fonctionnement
Le composant ack-onepilot (ARMS Agent Onboarding Assistant) s'exécute en tant que contrôleur dans votre cluster. Lorsqu'un pod étiqueté démarre, ack-onepilot injecte automatiquement l'agent Java ARMS dans le pod. Lorsqu'une nouvelle version de l'agent est publiée, ack-onepilot met à niveau l'agent au prochain redémarrage de l'application. Pour figer une version spécifique, consultez Contrôler manuellement les versions de l'agent.
Pour plus de détails sur le mécanisme d'injection, consultez Fonctionnement de ack-onepilot.
L'ancien composant arms-pilot n'est plus maintenu. ack-onepilot le remplace et est entièrement compatible : la migration ne nécessite aucune modification de la configuration de votre application. Pour connaître les étapes de migration, consultez Désinstaller arms-pilot et installer ack-onepilot.
Vue d'ensemble du processus
La configuration de la surveillance ARMS s'effectue en trois étapes :
Installez ack-onepilot -- Déployez le composant de surveillance via la console ACK.
Grant ARMS permissions -- Configurez l'authentification du cluster pour ARMS (varie selon le type de cluster).
Étiquetez votre Deployment -- Ajoutez trois libellés au modèle de pod pour activer l'instrumentation automatique.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
-
Un cluster ACK ou ACS :
Un namespace dans le cluster (consultez Gérer les namespaces et les quotas). Ce guide utilise
arms-democomme namespace d'exemple.Une version JDK conforme aux exigences (consultez Versions JDK prises en charge)
Une mémoire maximale du tas JVM (
-Xmx) supérieure à 256 Mo
Étape 1 : Installer ack-onepilot
Connectez-vous à la console ACK. Sur la page Clusters, cliquez sur le nom du cluster.
Dans le volet de navigation de gauche, cliquez sur Add-ons. Recherchez ack-onepilot.
Sur la carte ack-onepilot, cliquez sur Install.
Dans la boîte de dialogue, conservez les valeurs de paramètre par défaut et cliquez sur OK.
Par défaut, ack-onepilot prend en charge jusqu'à 1 000 pods. Pour chaque tranche supplémentaire de 1 000 pods, allouez 0,5 cœur CPU et 512 Mo de mémoire au composant.
Après l'installation, mettez à niveau, configurez ou désinstallez ack-onepilot depuis la page Add-ons.
Étape 2 : Accorder des permissions ARMS
Les permissions requises dépendent de votre type de cluster. Identifiez votre type de cluster et suivez les instructions correspondantes.
Clusters ACK managés
Les clusters ACK managés dotés d'un jeton ARMS Addon Token sont automatiquement autorisés. Vérifiez l'existence du jeton avant de poursuivre.
Si un cluster possède un jeton ARMS Addon Token, ARMS effectue une autorisation sans mot de passe sur le cluster. Le jeton ARMS Addon Token peut être absent de certains clusters ACK managés. Nous vous recommandons de vérifier si un cluster ACK managé dispose d'un jeton ARMS Addon Token avant d'utiliser ARMS pour surveiller les applications du cluster.
Clusters ACK dédiés et clusters enregistrés
Les clusters ACK dédiés et les clusters enregistrés ACK One nécessitent deux éléments :
Votre compte Alibaba Cloud doit disposer des permissions AliyunARMSFullAccess et AliyunSTSAssumeRoleAccess. Consultez Gérer les permissions des utilisateurs RAM.
Le composant ack-onepilot doit disposer d'une paire AccessKey avec des permissions ARMS.
Fournissez la paire AccessKey à ack-onepilot en utilisant l'une des méthodes suivantes.
Méthode 1 : Spécifier la paire AccessKey dans Helm
Connectez-vous à la console ACK. Cliquez sur Clusters, puis sur le nom du cluster.
Dans le volet de navigation de gauche, choisissez Applications > Helm. Cliquez sur Update à côté de ack-onepilot.
-
Remplacez les valeurs
accessKeyetaccessKeySecretpar votre ID AccessKey et votre secret AccessKey. Cliquez sur OK.RemarquePour obtenir une paire AccessKey, consultez Créer une paire AccessKey.
admissionRegistration: failurePolicy: Ignore onlyLabel: false configuration: downloadTimeout: "90" controller: accessKey: __ACCESSKEY__ accessKeySecret: __ACCESSKEY_SECRET__ accessSource: ACSKS cluster_id: c0c3c907a2e30 clusterProfile: __ACK_CLUSTER_PROFILE__ clusterType: __ACK_CLUSTER_TYPE__ imagePullPolicy: Always is_finance: <no value> logLevel: 1 Redémarrez le Deployment de l'application.
Méthode 2 : Utiliser un Secret Kubernetes
Connectez-vous à la console ACK. Cliquez sur Clusters, puis sur le nom du cluster.
-
Dans le volet de navigation de gauche, choisissez Configurations > Secrets. Sélectionnez le namespace ack-onepilot et créez un Secret pour stocker votre ID AccessKey et votre secret AccessKey.
RemarquePour obtenir une paire AccessKey, consultez Créer une paire AccessKey.
Lors de la création du Secret, définissez Name sur
ack-onepilot-aksk, sélectionnez Opaque pour Type, et ajoutez deux lignes au tableau de données : la cléakcorrespond à votre ID AccessKey, et la cléskcorrespond à votre secret AccessKey. Dans le volet de navigation de gauche, choisissez Workloads > Deployments. Cliquez sur le composant ack-onepilot (généralement nommé
ack-onepilot-ack-onepilotdans le namespaceack-onepilot).-
Dans le coin supérieur droit, cliquez sur Edit. Dans la section Environment Variables, ajoutez ces deux variables et référencez les valeurs du Secret. Cliquez sur OK.
Environment variable
Description
ONE_PILOT_ACCESSKEYRéférence l'ID AccessKey stocké dans le Secret
ONE_PILOT_ACCESSKEY_SECRETRéférence le secret AccessKey stocké dans le Secret
Clusters ACK serverless (ASK) et clusters intégrés ECI
Effectuez l'autorisation complète sur la page Resource Access Authorization, puis redémarrez tous les pods du composant ack-onepilot.
Étape 3 : Étiqueter votre Deployment
Ajoutez trois libellés à la section spec.template.metadata.labels de votre fichier YAML Deployment pour activer la surveillance ARMS :
labels:
armsPilotAutoEnable: "on"
armsPilotCreateAppName: "<your-deployment-name>" # Replace <your-deployment-name> with your application name.
aliyun.com/app-language: java
|
Label |
Value |
Description |
|
|
|
Active l'injection automatique de l'agent pour le pod |
|
|
|
Nom de l'application affiché dans la console ARMS. Remplacez par le nom de votre application. |
|
|
|
Spécifie la langue de l'application pour l'agent |
Les libellés doivent se trouver dans spec.template.metadata.labels (le modèle de pod), et non dans metadata.labels (les métadonnées du Deployment). Placer les libellés au mauvais endroit est une cause fréquente d'absence de données de surveillance.
Appliquer les libellés à un Deployment existant
Connectez-vous à la console ACK. Cliquez sur Clusters, puis sur le nom du cluster.
Dans le volet de navigation de gauche, choisissez Workloads > Deployments.
Sur la page Stateless, cliquez sur
> YAML Edit à côté de l'application cible.Ajoutez les trois libellés à
spec.template.metadata.labelset cliquez sur Update.
Pour plus d'informations sur la sécurité des applications, consultez Qu'est-ce que la sécurité des applications ?.
Pour plus d'informations sur la facturation de la sécurité des applications, consultez Présentation de la facturation.
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
armsPilotAutoEnable: "on"
armsPilotCreateAppName: "arms-k8s-demo"
spec:
containers:
- resources:
Créer un nouveau Deployment avec la surveillance activée
Sur la page Stateless, cliquez sur Create from YAML et incluez les libellés dans la définition de votre Deployment.
Vérifier les données de surveillance
Sur la page Stateless, cliquez sur
> ARMS Console dans la colonne Actions de l'application cible pour afficher les détails de la surveillance de l'application.