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

Dans Google Cloud Console, sur la page de sélection de projet, cliquez sur Créer pour commencer à créer un projet Google Cloud.

Accéder à la page de sélection du projet

Activer l'API Profiler

Sur la page Cloud Console de votre nouveau projet, accédez à la page API et services :

  1. Accédez au tableau de bord API et services :

    Accéder à API et services

  2. Cliquez sur le bouton Add APIs and Services (Ajouter des API et des services).

    Ajouter des API et des services

  3. Recherchez l'API Profiler.

  4. Dans les résultats de recherche, sélectionnez API Cloud Profiler.

  5. Si API activée s'affiche, 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éez un compte de service, en utilisant le SDK Cloud par exemple :

    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, en utilisant le SDK Cloud par exemple :

     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, en utilisant le SDK Cloud par exemple :

     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 suivante du SDK Cloud :

 gcloud auth application-default login

Ensuite, suivez 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')

Étapes suivantes

Pour en savoir plus sur le graphique et les commandes de Profiler, consultez la page Utiliser l'interface de Cloud Profiler. Pour obtenir des informations avancées, consultez les sections suivantes :