Mit der App Optimize API können Sie Ihre Kosten- und Ressourcennutzungsdaten analysieren, indem Sie Berichte erstellen. Um diese Informationen abzurufen, erstellen Sie zuerst einen Bericht, indem Sie eine API-Anfrage senden. In dieser Anfrage definieren Sie den Umfang der Daten, wie sie aggregiert oder gruppiert werden sollen und welche Filter angewendet werden sollen.
Wenn der Bericht fertig ist, können Sie die Daten lesen.
Informationen zu verfügbaren Bereichen, Dimensionen, Messwerten und Filtern sowie zu gültigen Kombinationen dieser Einstellungen finden Sie unter Berichte.
Hinweis
Für die Beispiele in diesem Leitfaden ist ein Google Cloud Projekt mit aktiven Ressourcen erforderlich, die analysiert werden sollen. Für die App Optimize API sind Abrechnungs- und Nutzungsdaten erforderlich, um aussagekräftige Ergebnisse zu liefern. Berichte, die für neue oder leere Projekte ausgeführt werden, sind leer.
In diesem Leitfaden stellt das als
PROJECT_IDidentifizierte Projekt den Datenbereich bereit und hostet die Berichtsressource.Mit der App Optimize API können Berichte in einem Projekt erstellt werden, in denen Daten aus einem anderen Projekt oder aus Anwendungen in Einzelprojekt- oder Ordnerebenengrenzen analysiert werden. Wenn Sie einen Bericht zu einer App Hub-Anwendung erstellen möchten, die aus mehreren Projekten bestehen kann, benötigen Sie die erforderlichen Berechtigungen für Monitoring und Abrechnung für alle zugehörigen Projekte der Anwendung.
Prüfen Sie, ob die App Optimize API für das Projekt aktiviert ist, mit dem Sie die Berichtsressource erstellen und verwalten.
-
Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
Verify that you have the permissions required to complete this guide.
Wählen Sie den Tab für die geplante Verwendung der Beispiele in diesem Dokument aus:
gcloud
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Informationen zum Einrichten der Authentifizierung für eine Produktionsumgebung finden Sie in der Dokumentation zur Google Cloud -Authentifizierung unter Standardanmeldedaten für Anwendungen für Code einrichten, der auf Google Cloudausgeführt wird .
Python
- Installieren Sie die Python-Clientbibliothek für die App Optimize API.
-
Wenn Sie die Python-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten Sie dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Wenn Sie eine lokale Shell verwenden, erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Nutzerkonto:
gcloud auth application-default login
Wenn Sie Cloud Shell verwenden, müssen Sie das nicht tun.
Wenn ein Authentifizierungsfehler zurückgegeben wird und Sie einen externen Identitätsanbieter (IdP) verwenden, prüfen Sie, ob Sie sich mit Ihrer föderierten Identität in der gcloud CLI angemeldet haben.
Weitere Informationen finden Sie in der Dokumentation zur Google Cloud -Authentifizierung unter ADC für eine lokale Entwicklungsumgebung einrichten.
Informationen zum Einrichten der Authentifizierung für eine Produktionsumgebung finden Sie in der Dokumentation zur Google Cloud -Authentifizierung unter Standardanmeldedaten für Anwendungen für Code einrichten, der auf Google Cloudausgeführt wird .
-
REST
Wenn Sie die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, verwenden Sie die Anmeldedaten, die Sie der gcloud CLI bereitstellen.
Installieren Sie die Google Cloud CLI.
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
Weitere Informationen finden Sie in der Dokumentation zur Google Cloud -Authentifizierung unter Für die Verwendung von REST authentifizieren.
Informationen zum Einrichten der Authentifizierung für eine Produktionsumgebung finden Sie in der Dokumentation zur Google Cloud -Authentifizierung unter Standardanmeldedaten für Anwendungen für Code einrichten, der auf Google Cloudausgeführt wird .
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt mit aktiven Ressourcen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Berichts mit dieser Anleitung benötigen:
-
App Optimize-Administrator (
roles/appoptimize.admin) -
Monitoring Viewer (
roles/monitoring.viewer) -
Betrachter (
roles/viewer) oder eine andere Rolle, diebilling.resourceCosts.getgewährt
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Weitere Informationen zu den für die App Optimize API erforderlichen Berechtigungen und Rollen finden Sie unter Zugriffssteuerung mit IAM.
Bericht erstellen
In den folgenden Schritten wird beschrieben, wie Sie die Berichterstellung starten. In diesem Beispiel wird ein Bericht erstellt, mit dem Sie die Kosten und die durchschnittliche CPU-Auslastung des ausgewählten Projekts in der letzten Woche nachvollziehen können. Im Bericht werden diese Informationen für jede einzelne Ressource aufgeschlüsselt, einschließlich des Ressourcentyps, des Google Cloud Produkts, zu dem sie gehört, und ihres Standorts.
So erstellen Sie die Berichtsressource:
gcloud
Verwenden Sie den folgenden gcloud beta app-optimize reports create-Befehl, um den Bericht zu erstellen.
gcloud beta app-optimize reports create REPORT_ID \
--project=PROJECT_ID \
--location=global \
--dimensions=location,product_display_name,project,resource,resource_type \
--metrics=cost,cpu_mean_utilization \
--report-filter='hour >= now - duration("168h")' \
--scopes=project=projects/PROJECT_ID
Ersetzen Sie Folgendes:
REPORT_ID: Eine eindeutige ID für Ihren neuen Bericht, z. B.my-resource-cost-report-1.PROJECT_ID: Projekt-ID in Google Cloud .
Beim Befehl zum Erstellen eines Berichts wird automatisch gewartet, bis der Vorgang abgeschlossen ist.
Python
Im folgenden Python-Code wird AppOptimizeClient.create_report() verwendet, um einen Bericht zu erstellen.
from google.cloud import appoptimize_v1beta
project_id = "PROJECT_ID"
report_id = "REPORT_ID"
# Create the App Optimize client
client = appoptimize_v1beta.AppOptimizeClient()
# Initialize the report request
report = appoptimize_v1beta.Report(
dimensions=['location', 'product_display_name', 'project', 'resource', 'resource_type'],
metrics=['cost', 'cpu_mean_utilization'],
filter='hour >= now - duration("168h")',
scopes=[
appoptimize_v1beta.Scope(project=f"projects/{project_id}"),
],
)
request = appoptimize_v1beta.CreateReportRequest(
parent=f"projects/{project_id}/locations/global",
report=report,
report_id=report_id,
)
# Send the request and wait for completion
operation = client.create_report(request=request)
print("Waiting for operation to complete...")
response = operation.result()
print(response)
Ersetzen Sie Folgendes:
PROJECT_ID: Projekt-ID in Google Cloud .REPORT_ID: Eine eindeutige ID für Ihren neuen Bericht, z. B.my-first-report.
Die Methode operation.result() in der Clientbibliothek wartet automatisch auf den Abschluss des Vorgangs. Es ist keine manuelle Polling-Schleife erforderlich.
REST
Senden Sie eine HTTP-POST-Anfrage an den Ressourcenpfad projects.locations.reports der REST API.
Verwenden Sie den folgenden
curl-Befehl, um die Anfrage zu senden:curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "scopes": [ { "project": "projects/PROJECT_ID" } ], "dimensions": [ "location", "product_display_name", "project", "resource", "resource_type" ], "metrics": [ "cost", "cpu_mean_utilization" ], "filter": "hour >= now - duration(\"168h\")" }' \ "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports?report_id=REPORT_ID"Ersetzen Sie Folgendes:
PROJECT_ID: Projekt-ID in Google Cloud .REPORT_ID: Eine eindeutige ID für Ihren neuen Bericht, z. B.my-resource-cost-report-1.
Die API gibt ein LRO-Objekt (Long-Running Operation, Vorgang mit langer Ausführungszeit) zurück. Notieren Sie sich das Feld
namein der Antwort, das Sie zum Prüfen des Vorgangsstatus verwenden:{ "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata" }, "done": false }In der Antwort ist das Feld
doneauffalsegesetzt. Das bedeutet, dass die Berichterstellung läuft.Wenn Sie prüfen möchten, ob der Bericht fertig ist, senden Sie eine
GET-HTTP-Anfrage an den Vorgangname, der im vorherigen Schritt zurückgegeben wurde:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/operations/OPERATION_ID"Ersetzen Sie
PROJECT_IDundOPERATION_IDdurch die Werte aus der LRO-Antwort.Prüfen Sie die Antwort, um den Status des Vorgangs zu ermitteln:
- Wenn der Bericht noch generiert wird, sieht die Antwort ähnlich wie die ursprüngliche LRO-Antwort aus, wobei
doneauffalsefestgelegt ist. Warten Sie kurz, z. B. 5 bis 15 Sekunden, und wiederholen Sie diesen Schritt, um den Status noch einmal abzurufen. Wenn die Berichterstellung abgeschlossen ist, enthält die Antwort
"done": trueund die Berichtsressource im Feldresponse:{ "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.Report", "name": "projects/PROJECT_ID/locations/global/reports/REPORT_ID", "dimensions": [ "location", "product_display_name", "project", "resource", "resource_type" ], "scopes": [ { "project": "projects/PROJECT_ID" } ], "filter": "hour >= now - duration(\"168h\")", "expireTime": "2026-02-05T18:50:25.273833857Z", "metrics": [ "cost", "cpu_mean_utilization" ] } } ```Wenn bei der LRO ein Fehler auftritt, enthält die Antwort anstelle des Felds
responsedas Felderrormit Details zum Fehler.
- Wenn der Bericht noch generiert wird, sieht die Antwort ähnlich wie die ursprüngliche LRO-Antwort aus, wobei
Sobald der Vorgang erfolgreich abgeschlossen ist, können Sie die Daten des Berichts lesen.
Limits für gleichzeitige Ausführungen
Wenn Sie einen Bericht erstellen, ruft die App Optimize API Kostendaten aus Cloud Billing und Nutzungsdaten aus Cloud Monitoring für jedes target_project des Berichts ab.
- Bei einem Bericht, der auf ein einzelnes Projekt beschränkt ist, ist dieses Projekt das Zielprojekt.
- Bei einer App Hub-Anwendung ist jedes Projekt, das einen Dienst oder eine Arbeitslast in der Anwendung enthält, ein Zielprojekt.
Die App Optimize API erzwingt eine Gleichzeitigkeitsquote namens Gleichzeitige CreateReport-Vorgänge, die maximal 10 gleichzeitige Anfragen für Berichtsdaten pro Zielprojekt zulässt. Wenn Sie einen Bericht erstellen, berechnet die App Optimize API die Anzahl der Zielprojekte im Bericht und reserviert die erforderliche Anzahl von Kontingenteinheiten, bis der LRO für die Erstellung des Berichts abgeschlossen ist.
Berichte, die in weniger als wenigen Minuten fertig sind, werden aufgrund des Zeitpunkts der Messung auf Systemebene möglicherweise nicht auf Ihr Limit für gleichzeitige Anfragen angerechnet.
Sie können Ihre aktuelle API-Aktivität auf der Seite Kontingente und Systemlimits in der Google Cloud Console ansehen und diese Limits verwalten.
Wenn Sie mehrere Berichte gleichzeitig erstellen möchten, sollten Sie berücksichtigen, wann Ihre Teams Berichte ausführen und wie Ihre App Hub-Anwendungen strukturiert sind:
- Wenn mehrere Teams Berichte mit denselben Zielprojekten erstellen, können Sie die Startzeiten für die Berichtserstellung für jedes Team staffeln.
- Anwendungen können Ressourcen aus mehreren Projekten enthalten und mehrere Anwendungen können Ressourcen aus einem einzelnen Projekt verwenden. Wenn Berichte gleichzeitig für diese Arten von Anwendungen erstellt werden, werden mehrere Anfragen an Zielprojekte gesendet.
Stellen Sie sich beispielsweise ein Team vor, das an einer Reihe von Anwendungen zum Erlernen kreativer Künste arbeitet, mit Standard- und Premium-Varianten. In der folgenden Tabelle sehen Sie in der ersten Spalte die Liste der Anwendungen. In den verbleibenden Spalten gibt das Häkchensymbol () an, dass ein Projekt Dienste oder Arbeitslasten für eine aufgeführte Anwendung enthält.
| Anwendung | common-project | dance-project | draw-project | animate-project | music-project |
|---|---|---|---|---|---|
| dance-app | |||||
| draw-app | |||||
| music-app | |||||
| animate-app | |||||
| choreograph-app | |||||
| storyteller-app | |||||
| dance-premium-app | |||||
| draw-premium-app | |||||
| music-premium-app | |||||
| animate-premium-app | |||||
| choreograph-premium-app | |||||
| storyteller-premium-app |
Wenn Sie Berichte für Kosten- und Nutzungsdaten für alle aufgeführten Anwendungen gleichzeitig erstellen, verwendet die App Optimize API in einigen Projekten mehr als eine Einheit Ihres Parallelitätslimits. Insbesondere das freigegebene Projekt common-project erhält 12 Anfragen zu Kosten- und Nutzungsdaten. Da diese Zahl das Limit für die Parallelität überschreitet, schlagen zwei Datenanfragen fehl.
Um dieses Problem zu vermeiden, könnte das Team zuerst Berichte für die Standardversionen der Anwendungen und dann für die Premium-Version erstellen.
Nächste Schritte
- Weitere Informationen zu Dimensionen, Messwerten und Filtern finden Sie unter Berichte.
- Weitere Möglichkeiten zum Verwalten von Berichten: