Lorsque vous exécutez des fonctions Java sur Function Compute, il est essentiel de disposer d'une visibilité sur les performances des applications, les traces distribuées et l'état de la JVM. Application Real-Time Monitoring Service (ARMS) s'intègre à Function Compute en tant qu'extension interne, ce qui vous permet de bénéficier des fonctionnalités suivantes :
Observabilité au niveau de l'instance
Traçage distribué
Métriques Java Virtual Machine (JVM)
Profilage au niveau du code
Informations sur la sécurité des applications
Les étapes ci-dessous expliquent comment ajouter l'agent ARMS à une fonction utilisant un runtime personnalisé.
L'agent ARMS consomme environ 300 Mo de mémoire lors de l'exécution. Assurez-vous que votre fonction dispose d'au moins 512 Mo de mémoire allouée. La fenêtre de gel de 10 secondes après l'invocation, requise pour le rapport des données, est facturée au tarif standard d'invocation. Pour plus de détails, consultez la page Facturation de Function Compute.
Runtimes pris en charge et prérequis
| Prérequis | Détails |
|---|---|
| Runtime | Runtime personnalisé avec Java 8, Java 11 ou Java 17. Le runtime Java 8 intégré est également pris en charge. |
| Version JDK | Doit être prise en charge par ARMS Application Monitoring. Consultez la liste des Composants et frameworks Java pris en charge par ARMS. |
| Mémoire heap | Supérieure à 256 Mo |
| Mémoire de la fonction | Au moins 512 Mo (ARMS consomme ~300 Mo) |
| Région | ARMS et Function Compute doivent se trouver dans la même région. La surveillance interrégionale n'est pas prise en charge. |
Pour créer une fonction avec un runtime personnalisé, consultez la rubrique Créer une fonction.
Étape 1 : Obtenir une clé de licence
Appelez l'opération API DescribeTraceLicenseKey dans OpenAPI Explorer pour récupérer votre clé de licence ARMS. Conservez cette clé, car vous en aurez besoin à l'Étape 3.
Étape 2 : Ajouter la couche de l'agent ARMS
Function Compute propose des couches communes officielles qui regroupent l'agent ARMS pour chaque version Java prise en charge.
| Version Java | Runtime compatible | ARN de la couche commune |
|---|---|---|
| Java 8 / Java 11 | Runtimes personnalisés | acs:fc:{region}:official:layers/ArmsAgent273x/versions/2 |
| Java 17 | Runtimes personnalisés | acs:fc:{region}:official:layers/ArmsAgent273x_JDK17/versions/1 |
Remplacez {region} par l'ID de la région de votre fonction, par exemple cn-hangzhou.
Pour ajouter la couche dans la console Function Compute :
Connectez-vous à la console Function Compute. Dans le volet de navigation de gauche, cliquez sur Functions.
Dans la barre de navigation supérieure, sélectionnez une région. Sur la page Functions, cliquez sur la fonction cible.
Sur la page des détails de la fonction, cliquez sur l'onglet Configurations.
Dans le volet de navigation de gauche, cliquez sur Layers, puis sur Modify.
Dans le panneau Layers, choisissez + Add Layer > Add Official Common Layer, puis sélectionnez la couche de l'agent ARMS correspondant à votre version Java.
Étape 3 : Configurer les variables d'environnement
Définissez les variables d'environnement suivantes pour votre fonction :
| Variable | Valeur | Description |
|---|---|---|
FC_EXTENSION_ARMS |
true |
Active l'extension ARMS dans Function Compute. |
FC_EXTENSIONS_ARMS_LICENSE_KEY |
Votre clé de licence ARMS | Authentifie l'agent ARMS. Obtenez cette clé à partir de l'Étape 1. |
La définition de FC_EXTENSION_ARMS=true entraîne le gel de l'instance de fonction pendant 10 secondes après chaque invocation. Cela laisse à l'agent ARMS le temps de rapporter les données collectées. La facturation se poursuit au tarif standard durant cette fenêtre de 10 secondes. Pour plus de détails, consultez la page Facturation de Function Compute.
Pour définir ces variables dans la console Function Compute :
Sur la page des détails de la fonction, cliquez sur l'onglet Configurations.
Dans le volet de navigation de gauche, cliquez sur Environment Variables, puis sur Modify.
Ajoutez
FC_EXTENSION_ARMS=trueetFC_EXTENSIONS_ARMS_LICENSE_KEY=<your-license-key>.
Pour plus de détails, consultez la page Configurer les variables d'environnement.
Étape 4 : Créer un script bootstrap
L'agent ARMS s'attache à votre processus Java via les paramètres de démarrage de la JVM. Créez un fichier bootstrap pour transmettre ces paramètres au démarrage de la fonction.
Le tableau suivant décrit les paramètres JVM requis :
| Paramètre | Description |
|---|---|
-javaagent:/opt/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar |
Chemin d'accès au fichier JAR de l'agent ARMS fourni par la couche commune. |
-Darms.licenseKey=${FC_EXTENSIONS_ARMS_LICENSE_KEY} |
Clé de licence ARMS, lue à partir de la variable d'environnement définie à l'Étape 3. |
-Darms.appName=${appName} |
Nom de l'application tel qu'il apparaît dans la console ARMS. La valeur par défaut est FC:{FunctionName}. |
-Dfc.instanceId=$HOSTNAME@ |
Identifiant unique de l'instance de fonction. |
Exemple de script bootstrap :
#!/bin/bash
set -eo pipefail
# Set the ARMS application name.
# Defaults to FC:{FunctionName} if the FC_FUNCTION_NAME variable exists.
appName="FC:Custom_Java_Arms_Demo"
if [ -n "${FC_FUNCTION_NAME}" ]; then
appName="FC:${FC_FUNCTION_NAME}"
fi
echo "appName: ${appName}"
params=" "
# Build the ARMS JVM parameters.
if [[ -n "${FC_EXTENSIONS_ARMS_LICENSE_KEY}" ]]; then
echo "FC_EXTENSIONS_ARMS_LICENSE_KEY: ${FC_EXTENSIONS_ARMS_LICENSE_KEY}"
params+="-Dfc.instanceId=$HOSTNAME@`hostname -i` "
params+="-javaagent:/opt/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar "
params+="-Darms.licenseKey=${FC_EXTENSIONS_ARMS_LICENSE_KEY} "
params+="-Darms.appName=${appName} "
else
echo "The environment FC_EXTENSIONS_ARMS_LICENSE_KEY does not exist, please set the FC_EXTENSIONS_ARMS_LICENSE_KEY environment!"
exit 1
fi
# Launch the application. Replace the JAR path with your own.
echo "params: ${params}"
exec java $params \
-Dserver.port=9000 \
-jar /code/target/demo-0.0.1-SNAPSHOT.jar
Remplacez /code/target/demo-0.0.1-SNAPSHOT.jar par le chemin d'accès à votre fichier JAR d'application.
Déployer le fichier bootstrap
Dans WebIDE, sur la page du code de la fonction, créez un fichier nommé
bootstrapavec le contenu ci-dessus.Ouvrez le terminal dans WebIDE et exécutez
chmod +x bootstrappour rendre le fichier exécutable.Cliquez sur Deploy.
Pour plus de détails, consultez la page Utiliser un script bootstrap comme commandes de démarrage.
Étape 5 : Vérifier l'intégration
Après le déploiement, invoquez la fonction au moins une fois pour déclencher la collecte des données, puis confirmez qu'ARMS reçoit bien les données :
Connectez-vous à la console ARMS.
Dans le volet de navigation de gauche, choisissez Application Monitoring > Applications.
Recherchez l'application dont le nom correspond à la valeur
appNamede votre script bootstrap. La valeur par défaut estFC:{FunctionName}.Cliquez sur le nom de l'application pour afficher les traces, les métriques JVM et autres données de surveillance.
Pour plus de détails sur le tableau de bord de surveillance, consultez la page Vue d'ensemble de l'application.
Facturation
L'intégration d'ARMS avec Function Compute engendre des frais provenant de deux services :
| Service | Frais | Détails |
|---|---|---|
| ARMS | Frais de surveillance des applications | Vue d'ensemble de la facturation ARMS |
| Function Compute | Fenêtre de gel de 10 secondes après l'invocation, facturée au tarif standard d'invocation | Facturation de Function Compute |