Profilerstellung für Code außerhalb von Google Cloud

Auf dieser Seite wird beschrieben, wie Sie Profile für Code erstellen, der außerhalb von Google Cloud ausgeführt wird.

In diesem Szenario werden Ihre Anwendung und der Cloud Profiler-Agent außerhalb von Google Cloud ausgeführt. Sie verwenden jedoch die Cloud Profiler-Oberfläche, um die Profildaten zu analysieren.

Damit Sie Profildaten mit der Profiler-Oberfläche analysieren können, benötigen Sie ein Google Cloud-Projekt. Der an einem anderen Ort ausgeführte Profiler-Agent muss in der Lage sein, die Profile zur Analyse zurückzusenden. Damit dies möglich ist, müssen Sie Folgendes tun:

  1. Erstellen Sie ein Google Cloud-Projekt und aktivieren Sie die API.
  2. Rufen Sie Anmeldedaten für den Profiler-Agent zum Hochladen von Profilen ab.
  3. Konfigurieren Sie den Agent für die Verwendung der Anmeldedaten und der ID des Google Cloud-Projekts.

Google Cloud-Projekt erstellen

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

Profiler API aktivieren

  1. Enable the required API.

    Enable the API

  2. Wenn API aktiviert angezeigt wird, ist die API bereits aktiviert. Falls nicht, klicken Sie auf die Schaltfläche Aktivieren.

Anmeldedaten für den Agent abrufen

Es gibt zwei Möglichkeiten, um Anmeldedaten für den Agent abzurufen:

  • Der Agent kann ein Dienstkonto mit Authentifizierung über einen privaten Schlüssel verwenden.
  • Der Agent kann Standardanmeldedaten für Anwendungen verwenden.

Dienstkonten verwenden

Damit der Agent ein Dienstkonto mit Authentifizierung über einen privaten Schlüssel verwenden kann, müssen Sie Folgendes tun:

  1. Erstellen Sie ein Dienstkonto: Verwenden Sie dazu beispielsweise Google Cloud CLI:

    gcloud iam service-accounts create MY_SVC_ACCT_ID --display-name "my service account"
    

    Weitere Informationen finden Sie unter Dienstkonto erstellen.

  2. Weisen Sie dem Dienstkonto die Rolle roles/cloudprofiler.agent zu, damit es zum Schreiben von Profildaten berechtigt ist. Verwenden Sie dazu beispielsweise 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
    

    Weitere Informationen finden Sie unter Dienstkonten Rollen zuweisen.

  3. Erstellen Sie einen JSON-Schlüssel für das Dienstkonto: Verwenden Sie dazu beispielsweise Google Cloud CLI:

     gcloud iam service-accounts keys create \
         ~/key.json \
         --iam-account MY_SVC_ACCT_ID@GCP_PROJECT_ID.iam.gserviceaccount.com
    

    Weitere Informationen finden Sie unter Dienstkontoschlüssel erstellen und verwalten.

  4. Gehen Sie auf der Maschine, auf der der Profiler-Agent ausgeführt wird, so vor:

    1. Legen Sie eine Kopie der Datei ab, die den soeben erstellten JSON-Schlüssel enthält.
    2. Legen Sie die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS auf den vollständig qualifizierten Namen der Datei fest, die den JSON-Schlüssel enthält. Diese Umgebungsvariable muss für den Prozess sichtbar sein, der den Profiler-Agent ausführt. Wenn Sie also ein Skript oder Dockerfile zum Ausführen des Prozesses verwenden, fügen Sie die Umgebungsvariable dort ein.

Standardanmeldedaten für Anwendungen verwenden

Damit der Agent Standardanmeldedaten für Anwendungen verwenden kann, rufen Sie Nutzeranmeldedaten über einen Webablauf ab und legen diese dort ab, wo die Bibliothek der Standardanmeldedaten für Anwendungen sie erwartet. Diese Anmeldedaten fungieren als Proxy für ein Dienstkonto.

Führen Sie folgenden Google Cloud CLI-Befehl aus, um Standardanmeldedaten für Anwendungen zu verwenden:

 gcloud auth application-default login

Folgen Sie dann den Schritten, durch die Sie dieser Befehl führt.

Agent mit einem Google Cloud-Projekt verknüpfen

Damit der Profiler-Agent Profile hochladen kann, muss in seiner Konfiguration die ID Ihres Google Cloud-Projekts angegeben werden. Wie Sie das tun, hängt von der Sprache ab.

Go

Geben Sie den zusätzlichen Parameter ProjectID im Objekt profiler.Config an, das unter Profilerstellung für Go-Anwendungen beschrieben wird:

 profiler.Config{ProjectID: "GCP_PROJECT_ID", ...}

Java

Geben Sie beim Java-Aufruf das zusätzliche Flag cprof_project_id für die Konfiguration des Java-Agents an:

 -cprof_project_id=GCP_PROJECT_ID

Wenn Ihre Anwendung nicht auf den Compute Engine-Metadatenserver zugreifen kann, werden Meldungen wie diese angezeigt:

     Error making HTTP request for 169.254.169.254:80/computeMetadata/v1/instance/zone
Wenn Sie diese Meldungen nicht erhalten möchten, fügen Sie den Flags für die Agent-Konfiguration den Parameter -cprof_zone_name=VALUE hinzu und starten Sie die Anwendung neu. Ersetzen Sie für dieses Szenario VALUE durch einen beschreibenden String wie „test“.

Node.js

Geben Sie den zusätzlichen Parameter projectID im Objekt serviceContext an, das unter Profilerstellung für Node.js-Anwendungen beschrieben wird:

projectId: 'GCP_PROJECT_ID',
serviceContext: {
  ...
}

Python

Geben Sie den zusätzlichen Parameter project_id im Aufruf der Methode start an, die unter Profilerstellung für Python-Code beschrieben wird:

googlecloudprofiler.start(..., project_id='GCP_PROJECT_ID')

Nächste Schritte