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 :

  1. Créez un projet Google Cloud et activez l'API.
  2. Obtenez les identifiants nécessaires à l'agent de profilage pour importer les profils.
  3. 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.

Go to project selector

Activation de l'API Profiler

  1. Enable the required API.

    Enable the API

  2. 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 :

  1. 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.

  2. 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.

  3. 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.

  4. Sur la machine sur laquelle l'agent de profilage sera exécuté, procédez comme suit :

    1. Placez une copie du fichier contenant la clé JSON que vous venez de créer.
    2. 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
Pour ne plus recevoir ces messages, ajoutez -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