Application Real-Time Monitoring Service (ARMS) surveille les applications Java exécutées dans des clusters Container Service for Kubernetes (ACK) via le module complémentaire ack-onepilot. Installez et autorisez ce module complémentaire pour diagnostiquer les problèmes en production beaucoup plus rapidement.
Contexte
Application Real-Time Monitoring Service (ARMS) est un produit Alibaba Cloud de gestion des performances des applications (APM). Dans Container Service for Kubernetes (ACK), installez et autorisez le module complémentaire ack-onepilot pour surveiller les applications Java de bout en bout sans modifier le code.
Le module complémentaire détecte automatiquement la topologie et les interfaces des applications, puis génère des cartes topologiques 3D. Il surveille les interfaces et capture les transactions anormales ou lentes. Utilisez ces données de surveillance pour localiser rapidement les interfaces défaillantes ou lentes, reproduire les paramètres d'appel, détecter les fuites de mémoire et identifier les goulots d'étranglement du système. Pour plus d'informations sur la surveillance des applications ARMS, consultez la rubrique Présentation de la surveillance des applications.
Prérequis
Un namespace a été créé. Pour plus d'informations, consultez la rubrique Gérer les namespaces et les quotas de ressources. Cette rubrique utilise le namespace
arms-demoà titre d'exemple.-
La version du JDK est prise en charge par Application Monitoring. ARMS prend en charge les versions JDK suivantes :
-
JDK 1.7.0+
ImportantL'agent ARMS V3.0.X et les versions ultérieures ne prennent plus en charge Java 7. Si vous utilisez toujours Java 7, nous vous recommandons de mettre à niveau votre version Java. Pour plus d'informations, consultez la rubrique Application Monitoring ne prend plus en charge Java 7.
-
JDK 1.8.0_25+
RemarqueSi vous déployez des applications dans des clusters Kubernetes, nous vous recommandons d'utiliser JDK V1.8.0_191 ou une version ultérieure.
Assurez-vous que la version du JDK n'est pas 1.8.0_25 ou 1.8.0_31. Sinon, l'installation de l'agent ARMS peut échouer. Dans ce cas, nous vous recommandons de mettre à niveau le JDK vers la dernière version 1.8.X.
JDK 11.0.8+
JDK 17
-
Étape 1 : Installer le module complémentaire de surveillance des applications ARMS
Le composant hérité 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 les étapes de migration, consultez la rubrique Désinstaller arms-pilot et installer ack-onepilot.
Par défaut, le module complémentaire ack-onepilot prend en charge jusqu'à 1 000 pods. Pour chaque tranche supplémentaire de 1 000 pods dans le cluster, augmentez les ressources CPU du module complémentaire de 0,5 cœur et la mémoire de 512 Mo.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Components and Add-ons .
Dans la section Logs and Monitoring, recherchez le module complémentaire ack-onepilot et cliquez sur Install sur la carte du module complémentaire.
Dans la boîte de dialogue, configurez les paramètres du module complémentaire. (Recommandé) Conservez les valeurs par défaut. Cliquez sur OK pour terminer l'installation.
Une fois l'installation terminée, vous pouvez mettre à niveau, configurer ou désinstaller le module complémentaire ack-onepilot sur la page Add-ons.
Étape 2 : Accorder des autorisations pour accéder aux ressources ARMS
La nécessité d'accorder manuellement des autorisations dépend de l'existence du Secret addon.arms.token dans le cluster. Si le Secret existe, aucune autorisation n'est requise et vous pouvez passer à l'étape 3. Si le Secret n'existe pas, accordez manuellement au cluster les autorisations nécessaires pour accéder aux ressources ARMS afin qu'ARMS puisse surveiller les applications du cluster.
Lorsqu'un cluster contient le Secret addon.arms.token, ARMS accorde automatiquement au cluster les autorisations d'accès aux ressources ARMS, sans identifiants. La plupart des ACK managed cluster incluent ce Secret par défaut, mais les ACK managed cluster créés précédemment peuvent ne pas l'inclure.
Vérifier si le Secret addon.arms.token existe
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
Sur la page Secrets, sélectionnez kube-system dans la liste déroulante Namespace, puis vérifiez si le Secret
addon.arms.tokenfigure dans la liste.
Accorder manuellement des autorisations pour accéder aux ressources ARMS
Effectuez les étapes suivantes uniquement si le Secret addon.arms.token n'existe pas dans le cluster.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Cluster Information.
Sous l'onglet Basic Information, recherchez la section Cluster Resources et cliquez sur le lien situé à droite de Worker RAM Role.
Sur la page Role, cliquez sur l'onglet Permissions, puis cliquez sur Add Permissions.
Définissez l'autorisation sur AliyunARMSFullAccess, puis cliquez sur OK.
Accorder des autorisations pour les clusters intégrés à Elastic Container Instance (ECI)
Pour surveiller les applications dans un ACK managed cluster intégré à ECI, accordez les autorisations sur la page d'autorisation rapide RAM, puis redémarrez tous les pods du module complémentaire ack-onepilot.
Étape 3 : Activer la surveillance des applications ARMS pour une application Java
Activez la surveillance des applications ARMS lors de la création d'une application Java. Les étapes suivantes permettent de créer un Deployment à partir d'un modèle YAML dans la console ACK.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
Sur la page Deployments, cliquez sur Create from YAML.
-
Sélectionnez Sample Template, puis ajoutez les
labelssuivants à la section spec.template.metadata dans le champ Template (format YAML) :labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>" # Replace <your-deployment-name> with the actual application name. # armsSecAutoEnable: "on" # If you want to connect the application to Application Security, you must configure this parameter.
Les libellés armsPilotAutoEnable: "on" et armsPilotCreateAppName: "arms-k8s-demo" dans le modèle de pod du Deployment activent la surveillance des applications ARMS. L'extrait YAML suivant indique où les libellés sont ajoutés dans le modèle de pod :
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:
limits:
# ...
Le fichier YAML complet suivant crée un Deployment et active la surveillance des applications ARMS :
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"
one-agent.jdk.version: "OpenJDK11"
spec:
containers:
- resources:
limits:
cpu: 0.5
image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
imagePullPolicy: Always
name: arms-springboot-demo
env:
- name: SELF_INVOKE_SWITCH
value: "true"
- name: COMPONENT_HOST
value: "arms-demo-component"
- name: COMPONENT_PORT
value: "6666"
- name: MYSQL_SERVICE_HOST
value: "arms-demo-mysql"
- name: MYSQL_SERVICE_PORT
value: "3306"
---
apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
name: arms-springboot-demo-subcomponent
namespace: arms-demo
labels:
app: arms-springboot-demo-subcomponent
spec:
replicas: 2
selector:
matchLabels:
app: arms-springboot-demo-subcomponent
template:
metadata:
labels:
app: arms-springboot-demo-subcomponent
armsPilotAutoEnable: "on"
armsPilotCreateAppName: "arms-k8s-demo-subcomponent"
one-agent.jdk.version: "OpenJDK11"
spec:
containers:
- resources:
limits:
cpu: 0.5
image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
imagePullPolicy: Always
name: arms-springboot-demo-subcomponent
env:
- name: SELF_INVOKE_SWITCH
value: "false"
- name: MYSQL_SERVICE_HOST
value: "arms-demo-mysql"
- name: MYSQL_SERVICE_PORT
value: "3306"
---
apiVersion: v1
kind: Service
metadata:
labels:
name: arms-demo-component
name: arms-demo-component
namespace: arms-demo
spec:
ports:
# the port that this service should serve on
- name: arms-demo-component-svc
port: 6666
targetPort: 8888
# label keys and values that must match in order to receive traffic for this service
selector:
app: arms-springboot-demo-subcomponent
---
apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
name: arms-demo-mysql
namespace: arms-demo
labels:
app: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- resources:
limits:
cpu: 0.5
image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-demo-mysql:v0.1
name: mysql
ports:
- containerPort: 3306
name: mysql
---
apiVersion: v1
kind: Service
metadata:
labels:
name: mysql
name: arms-demo-mysql
namespace: arms-demo
spec:
ports:
# the port that this service should serve on
- name: arms-mysql-svc
port: 3306
targetPort: 3306
# label keys and values that must match in order to receive traffic for this service
selector:
app: mysql
---
Pour plus d'informations sur la sécurité des applications, consultez la rubrique Présentation de la sécurité des applications
Pour plus d'informations sur la facturation de la sécurité des applications, consultez la rubrique Facturation.
Une fois les étapes précédentes effectuées, la surveillance des applications ARMS est activée pour l'application déployée dans le cluster ACK.
Étapes suivantes
Pour afficher les détails de la surveillance des applications, accédez à la page Deployments et recherchez l'application. Dans la colonne Actions, cliquez sur l'icône 
et choisissez ARMS Console. Pour plus d'informations, consultez la rubrique Vue d'ensemble des applications.
FAQ
Les rubriques suivantes répondent aux questions fréquemment posées sur la surveillance des applications :