Bericht erstellen und lesen

Hier erfahren Sie, wie Sie einen App Optimize API-Bericht zu Ihren Google Cloud Ressourcenkosten erstellen, die Berichterstellung überwachen und die resultierenden Daten lesen, wenn sie für Sie bereit sind. In dieser Kurzanleitung können Sie die REST API oder die Python-Clientbibliothek verwenden.

Hinweis

  • Für die Beispiele in dieser Anleitung ist ein Google Cloud Projekt mit aktiven Ressourcen für die Analyse erforderlich. Die App Optimize API benötigt Abrechnungs- und Nutzungsdaten, um aussagekräftige Ergebnisse zu liefern. Berichte, die für neue oder leere Projekte ausgeführt werden, sind leer.

    In dieser Anleitung stellt das als PROJECT_ID identifizierte Projekt den Datenbereich bereit und hostet die Berichtsressource.

    Die App Optimize API unterstützt das Erstellen von Berichten in einem Projekt in dem Daten aus einem anderen Projekt oder aus Anwendungen in Einzelprojekt- oder Ordnergrenzen 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 das Monitoring und die Abrechnung für alle zugehörigen Projekte der Anwendung.

  • Prüfen Sie, ob die App Optimize API aktiviert ist für das Projekt, mit dem Sie die Berichts ressource erstellen und verwalten möchten.

gcloud

  • Installieren Sie die Google Cloud CLI.

  • Konfigurieren Sie die gcloud CLI für die Verwendung Ihrer föderierten Identität.

    Weitere Informationen finden Sie unter Mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  • Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  • Aktualisieren Sie die gcloud CLI nach der Initialisierung und installieren Sie die erforderlichen Komponenten:

    gcloud components update
    gcloud components install beta
  • Informationen zum Einrichten der Authentifizierung für eine Produktionsumgebung finden Sie in der Google Cloud Dokumentation zur-Authentifizierung unter Standardanmeldedaten für Anwendungen für Code einrichten, der in Google Cloud ausgefü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. Konfigurieren Sie die gcloud CLI für die Verwendung Ihrer föderierten Identität.

        Weitere Informationen finden Sie unter Mit Ihrer föderierten Identität in der gcloud CLI anmelden.

      3. Lokale Anmeldedaten zur Authentifizierung für Ihr Nutzerkonto erstellen:

        gcloud auth application-default login

        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-Authentifizierung unter ADC für eine lokale Entwicklungsumgebung einrichten Google Cloud .

      Informationen zum Einrichten der Authentifizierung für eine Produktionsumgebung finden Sie in der Google Cloud Dokumentation zur-Authentifizierung unter Standardanmeldedaten für Anwendungen für Code einrichten, der in Google Cloud ausgefü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 und melden Sie sich dann mit Ihrer föderierten Identität in der gcloud CLI an.

    Weitere Informationen finden Sie in der Google Cloud Authentifizierungsdokumentation unter Für die Verwendung von REST authentifizieren.

    Informationen zum Einrichten der Authentifizierung für eine Produktionsumgebung finden Sie in der Google Cloud Dokumentation zur-Authentifizierung unter Standardanmeldedaten für Anwendungen für Code einrichten, der in Google Cloud ausgefü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 und Lesen eines Berichts mit dieser Kurzanleitung benötigen:

    • App Optimize-Administrator (roles/appoptimize.admin)
    • Betrachter (roles/viewer) oder eine andere Rolle, die billing.resourceCosts.get gewä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 diesem Beispiel wird ein Bericht über die Gesamtausgaben für die ausgewählte PROJECT_ID erstellt. Im Bericht werden die Kosten nach verwendetem Google Cloud Produkt, z. B. Compute Engine und Cloud Storage, sowie nach der jeweiligen SKU und dem Standort aufgeschlüsselt. Der Bericht umfasst die Daten der letzten drei Tage.

    Folgen Sie der Anleitung für Ihre bevorzugte Methode, um die Berichtsressource zu erstellen:

    gcloud

    Verwenden Sie den Befehl gcloud beta app-optimize reports create, um den Bericht zu erstellen.

    gcloud beta app-optimize reports create REPORT_ID \
      --project=PROJECT_ID \
      --location=global \
      --dimensions=location,product_display_name,project,sku \
      --metrics=cost \
      --report-filter='hour >= now - duration("72h")' \
      --scopes=project=projects/PROJECT_ID
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Ihre Google Cloud Projekt-ID.
    • REPORT_ID: eine eindeutige ID für Ihren neuen Bericht, z. B. my-first-report

    Der Befehl wartet, bis der Vorgang zur Berichtserstellung abgeschlossen ist, und gibt dann die erstellte Berichtsressource zurück.

    Python

    Der folgende Python-Code verwendet AppOptimizeClient.create_report(), um einen Bericht zu erstellen.

    from google.cloud import appoptimize_v1beta
    
    project_id = "PROJECT_ID"
    report_id = "REPORT_ID"
    
    # Create the App Optimize client and prepare a request for a new report
    client = appoptimize_v1beta.AppOptimizeClient()
    report = appoptimize_v1beta.Report(
        dimensions=['location', 'product_display_name', 'project', 'sku'],
        metrics=['cost'],
        filter='hour >= now - duration("72h")',
        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,
    )
    
    # Request the creation of the report and wait until the process is done
    operation = client.create_report(request=request)
    print("Waiting for report creation operation to complete...")
    response = operation.result()
    print(response)
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Ihre Google Cloud Projekt-ID.
    • REPORT_ID: eine eindeutige ID für Ihren neuen Bericht, z. B. my-first-report.

    Die Methode operation.result() wartet, bis der Vorgang zur Berichtserstellung abgeschlossen ist.

    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",
            "sku"
          ],
          "metrics": [
            "cost"
          ],
          "filter": "hour >= now - duration(\"72h\")"
        }' \
        "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports?report_id=REPORT_ID"
      

      Ersetzen Sie Folgendes:

      • PROJECT_ID: Ihre Google Cloud Projekt-ID.
      • REPORT_ID: eine eindeutige ID für Ihren neuen Bericht, z. B. my-first-report

      Die API gibt ein Objekt für einen Vorgang mit langer Ausführungszeit (Long-Running Operation, LRO) zurück, das den Prozess der Berichtserstellung darstellt. Hier ist eine Beispielantwort:

      {
        "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID",
        "metadata": {
          "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata"
        },
        "done": false
      }
      

      Der "done": false Status gibt an, dass der Bericht noch erstellt wird. Notieren Sie sich die OPERATION_ID, da Sie sie im nächsten Schritt verwenden.

    2. Da die Berichtserstellung einige Zeit dauern kann, müssen Sie den LRO abfragen, bis er angibt, dass der Erstellungsprozess abgeschlossen ist und die Daten des Berichts zum Download bereitstehen.

      Wenn Sie den Status des Erstellungsprozesses prüfen möchten, senden Sie eine HTTP-GET-Anfrage an den Ressourcennamen des Vorgangs:

      curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/operations/OPERATION_ID"
      

      Prüfen Sie die Antwort. Wenn "done" den Wert false hat, warten Sie 5 bis 15 Sekunden und wiederholen Sie diesen Schritt. Wenn "done" den Wert true hat, ist der Bericht fertig.

      Das folgende Beispiel zeigt eine Antwort, wenn der Vorgang abgeschlossen ist:

      {
        "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",
          "scopes": [
            {
              "project": "projects/PROJECT_ID"
            }
          ],
          "dimensions": [
            "location",
            "product_display_name",
            "project",
            "sku"
          ],
          "metrics": [
            "cost"
          ],
          "filter": "hour >= now - duration(\"72h\")",
          "expireTime": "2026-02-04T22:05:05Z"
        }
      }
      

    Berichtsdaten lesen

    Folgen Sie der Anleitung für Ihre bevorzugte Methode, um die Berichtsdaten abzurufen:

    gcloud

    Verwenden Sie den folgenden Befehl gcloud beta app-optimize reports read, um die Daten des Berichts abzurufen:

    gcloud beta app-optimize reports read REPORT_ID \
      --project=PROJECT_ID \
      --location=global
    

    Python

    Der folgende Python-Code verwendet AppOptimizeClient.read_report(), um die Daten des Berichts abzurufen.

    from google.cloud import appoptimize_v1beta
    
    project_id = "PROJECT_ID"
    report_id = "REPORT_ID"
    name = f"projects/{project_id}/locations/global/reports/{report_id}"
    
    # Create the App Optimize client and read your report's data
    client = appoptimize_v1beta.AppOptimizeClient()
    request = appoptimize_v1beta.ReadReportRequest(
            name=name,
    )
    result = client.read_report(request=request)
    
    # Display the report's data
    print(result)
    

    REST

    Sobald der LRO abgeschlossen ist, verwenden Sie die benutzerdefinierte Methode :read der REST API:

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{}' \
      "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports/REPORT_ID:read"
    

    Die Antwort der API enthält die Berichtsdatenzeilen und Spaltendefinitionen. Das folgende Beispiel zeigt eine erfolgreiche Antwort:

    {
      "rows": [
        [
          "us-central1",
          "Compute Engine",
          "projects/PROJECT_ID",
          "6EC2-384A-47D9",
          {
            "currency_code": "USD",
            "units": "25",
            "nanos": 750000000
          }
        ],
        [
          "us-central1",
          "Cloud Storage",
          "projects/PROJECT_ID",
          "9ADA-9ADC-2FBE",
          {
            "currency_code": "USD",
            "units": "5",
            "nanos": 100000000
          }
        ],
        [
          "europe-west1",
          "Compute Engine",
          "projects/PROJECT_ID",
          "6EC2-384A-47D9",
          {
            "currency_code": "USD",
            "units": "18",
            "nanos": 500000000
          }
        ],
        [
          "us-central1",
          "Compute Engine",
          "projects/PROJECT_ID",
          "F61D-4D51-AAFC",
          {
            "currency_code": "USD",
            "units": "12",
            "nanos": 200000000
          }
        ]
      ],
      "columns": [
        {
          "name": "location",
          "type": "STRING",
          "mode": "NULLABLE"
        },
        {
          "name": "product_display_name",
          "type": "STRING",
          "mode": "NULLABLE"
        },
        {
          "name": "project",
          "type": "STRING",
          "mode": "NULLABLE"
        },
        {
          "name": "sku",
          "type": "STRING",
          "mode": "NULLABLE"
        },
        {
          "name": "cost",
          "type": "RECORD",
          "mode": "NULLABLE",
          "columns": [
            {
              "name": "currency_code",
              "type": "STRING",
              "mode": "NULLABLE"
            },
            {
              "name": "units",
              "type": "INT64",
              "mode": "NULLABLE"
            },
            {
              "name": "nanos",
              "type": "INT64",
              "mode": "NULLABLE"
            }
          ]
        }
      ],
      "next_page_token": ""
    }
    

    Berichte mit vielen Zeilen werden paginiert. Informationen zum Verarbeiten mehrerer Seiten finden Sie unter Daten eines Berichts lesen.

    Informationen zu den W0erten im cost Feld finden Sie unter Kostenmesswerte interpretieren. Weitere Informationen zu den Daten und ihren Einschränkungen finden Sie unter Daten verstehen.

    Bereinigen

    Die App Optimize API löscht Ihren Bericht 24 Stunden nach der Erstellung automatisch. Wenn Sie den Bericht früher löschen möchten, folgen Sie der Anleitung für Ihre bevorzugte Methode:

    gcloud

    Verwenden Sie den Befehl gcloud beta app-optimize reports delete, um den Bericht zu entfernen.

    gcloud beta app-optimize reports delete REPORT_ID \
      --project=PROJECT_ID \
      --location=global
    

    Python

    Der folgende Code verwendet AppOptimizeClient.delete_report(), um den Bericht zu entfernen.

    from google.cloud import appoptimize_v1beta
    
    project_id = "PROJECT_ID"
    report_id = "REPORT_ID"
    
    name = f"projects/{project_id}/locations/global/reports/{report_id}"
    client = appoptimize_v1beta.AppOptimizeClient()
    request = appoptimize_v1beta.DeleteReportRequest(name=name)
    client.delete_report(request=request)
    print(f"Deleted report: {name}")
    

    REST

    Senden Sie eine HTTP-DELETE-Anfrage an den Ressourcenendpunkt des Berichts:

    curl -X DELETE \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/reports/REPORT_ID"
    

    Nächste Schritte