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:
- Erstellen Sie ein Google Cloud-Projekt und aktivieren Sie die API.
- Rufen Sie Anmeldedaten für den Profiler-Agent zum Hochladen von Profilen ab.
- 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.
Profiler API aktivieren
-
Enable the required API.
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:
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.
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.
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.
Gehen Sie auf der Maschine, auf der der Profiler-Agent ausgeführt wird, so vor:
- Legen Sie eine Kopie der Datei ab, die den soeben erstellten JSON-Schlüssel enthält.
- 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
-cprof_zone_name=VALUE
hinzu
Konfigurations-Flags und starten Sie die Anwendung neu. In diesem Szenario
Ersetzen Sie 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
- Profile für die Analyse auswählen
- Mit dem Flame-Diagramm interagieren
- Flame-Diagramm filtern
- Flame-Diagramm hervorheben
- Profile vergleichen