Bericht erstellen

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_ID identifizierte 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.

gcloud

Aktivieren Sie Cloud Shell in der Google Cloud Console.

Cloud Shell aktivieren

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

  1. Installieren Sie die Python-Clientbibliothek für die App Optimize API.
  2. 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.

    1. Installieren Sie die Google Cloud CLI.

    2. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

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

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.

  1. 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 name in 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 done auf false gesetzt. Das bedeutet, dass die Berichterstellung läuft.

  2. Wenn Sie prüfen möchten, ob der Bericht fertig ist, senden Sie eine GET-HTTP-Anfrage an den Vorgang name, 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_ID und OPERATION_ID durch 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 done auf false festgelegt 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": true und die Berichtsressource im Feld response:

        {
          "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 response das Feld error mit Details zum Fehler.

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