Profiler des applications s'exécutant en dehors de Google Cloud
Cette page explique comment profiler des applications exécutées en dehors de Google Cloud.
Dans ce scénario, bien que votre application et l'agent Cloud Profiler s'exécutent en dehors de Google Cloud, vous utilisez l'interface de Cloud Profiler pour analyser les données de profilage.
Cette analyse à l'aide de l'interface de Profiler nécessite un projet Google Cloud. L'agent de profilage exécuté sur une autre plate-forme doit pouvoir renvoyer les profils pour leur analyse. Pour activer cette fonction, procédez comme suit :
- Créez un projet Google Cloud et activez l'API.
- Obtenez les identifiants nécessaires à l'agent de profilage pour importer les profils.
- Configurez l'agent de sorte à utiliser les identifiants et l'ID du projet Google Cloud.
Créer un projet Google Cloud
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
Activation de l'API Profiler
-
Enable the required API.
Si API activée s'affiche, cela signifie que l'API est déjà activée. Sinon, cliquez sur le bouton Activer.
Obtenir les identifiants nécessaires à l'agent
Il existe deux manières d'obtenir les identifiants dont l'agent a besoin :
- Laisser l'agent utiliser un compte de service avec authentification par clé privée
- Laisser l'agent utiliser les identifiants par défaut de l'application (stratégie ADC, Application Default Credentials)
Utiliser les comptes de service
Pour permettre à l'agent d'utiliser un compte de service avec authentification par clé privée, procédez comme suit :
Créer un compte de service Vous pouvez par exemple utiliser Google Cloud CLI :
gcloud iam service-accounts create MY_SVC_ACCT_ID --display-name "my service account"
Pour en savoir plus, consultez la section Créer un compte de service.
Accordez au compte de service le rôle roles/cloudprofiler.agent pour qu'il puisse écrire des données de profilage, Vous pouvez par exemple utiliser Google Cloud CLI :
gcloud projects add-iam-policy-binding GCP_PROJECT_ID \ --member serviceAccount:MY_SVC_ACCT_ID@GCP_PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudprofiler.agent
Pour en savoir plus, consultez la page Accorder des rôles à des comptes de service.
Créez une clé JSON pour le compte de service, Vous pouvez par exemple utiliser Google Cloud CLI :
gcloud iam service-accounts keys create \ ~/key.json \ --iam-account MY_SVC_ACCT_ID@GCP_PROJECT_ID.iam.gserviceaccount.com
Pour en savoir plus, consultez la page Créer des clés de compte de service.
Sur la machine sur laquelle l'agent de profilage sera exécuté, procédez comme suit :
- Placez une copie du fichier contenant la clé JSON que vous venez de créer.
- Indiquez le nom complet du fichier contenant la clé JSON pour la variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS
. Celle-ci doit être visible par le processus exécutant l'agent de profilage. Par conséquent, si vous utilisez un script ou un Dockerfile pour exécuter le processus, incluez-y la variable d'environnement.
Utiliser les identifiants par défaut de l'application
Pour permettre à l'agent d'utiliser les identifiants par défaut de l'application, vous devez obtenir les identifiants d'accès de l'utilisateur via un flux Web et les placer à l'endroit où la bibliothèque d'identifiants par défaut de l'application s'attend à les trouver. Ces identifiants servent de proxy à un compte de service.
Pour utiliser les identifiants par défaut de l'application, exécutez la commande Google Cloud CLI suivante :
gcloud auth application-default login
Effectuez les étapes indiquées par cette commande.
Associer l'agent à un projet Google Cloud
L'agent de profilage doit être configuré de sorte qu'il puisse spécifier l'ID de votre projet Google Cloud et importer des profils. Sachez que la procédure à suivre varie selon le langage de programmation.
Go
Spécifiez un paramètre supplémentaire, ProjectID
, dans l'objet profiler.Config
décrit sur la page Profiler des applications Go :
profiler.Config{ProjectID: "GCP_PROJECT_ID", ...}
Java
Spécifiez une option de configuration d'agent Java supplémentaire, cprof_project_id
, dans l'appel Java :
-cprof_project_id=GCP_PROJECT_ID
Lorsque votre application n'est pas en mesure d'accéder au serveur de métadonnées Compute Engine, des messages semblables aux suivants s'affichent :
Error making HTTP request for 169.254.169.254:80/computeMetadata/v1/instance/zone
-cprof_zone_name=VALUE
aux options de configuration de l'agent, puis redémarrez votre application. Pour ce scénario, remplacez VALUE
par une chaîne descriptive, telle que "test".Node.js
Spécifiez un paramètre supplémentaire, projectID
, dans l'objet serviceContext
décrit sur la page Profiler des applications Node.js :
projectId: 'GCP_PROJECT_ID',
serviceContext: {
...
}
Python
Spécifiez un paramètre supplémentaire, project_id
, dans l'appel de méthode start
décrit sur la page Profiler des applications Python :
googlecloudprofiler.start(..., project_id='GCP_PROJECT_ID')
Étape suivante
- Sélectionner les profils à analyser
- Interagir avec le graphique de type "flamme"
- Filtrer le graphique de type "flamme"
- Effectuer un focus à partir d'un graphique de type "flamme"
- Comparer des profils