Bericht erstellen und lesen

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

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 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 zu den Gesamtausgaben in der ausgewählten PROJECT_ID erstellt. Im Bericht werden die Kosten nach jedem verwendetenGoogle Cloud -Produkt aufgeschlüsselt, z. B. Compute Engine und Cloud Storage, sowie nach der jeweiligen SKU und dem jeweiligen Standort. Der Bericht umfasst die Daten der letzten drei Tage.

So erstellen Sie die Berichtsressource:

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: Projekt-ID in Google Cloud .
  • REPORT_ID: Eine eindeutige ID für Ihren neuen Bericht, z. B. my-first-report

Der Befehl wartet, bis der Vorgang zum Erstellen des Berichts abgeschlossen ist, und gibt dann die erstellte Berichtsressource zurück.

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 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: Projekt-ID in Google Cloud .
  • REPORT_ID: Eine eindeutige ID für Ihren neuen Bericht, z. B. my-first-report.

Die Methode operation.result() wartet, bis der Vorgang zum Erstellen des Berichts 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: Projekt-ID in Google Cloud .
    • 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 (LRO) zurück, das den Prozess der Berichterstellung 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 Status "done": false gibt an, dass der Bericht noch generiert wird. Notieren Sie sich die OPERATION_ID, da Sie sie im nächsten Schritt benötigen.

  2. Da die Berichterstellung einige Zeit in Anspruch nehmen kann, müssen Sie den LRO abfragen, bis er angibt, dass der Generierungsprozess abgeschlossen ist und die Daten des Berichts zum Herunterladen bereit sind.

    Wenn Sie den Status des Generierungsvorgangs 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"
    

    Sehen Sie sich die Antwort an. Wenn "done" false ist, warte 5 bis 15 Sekunden und wiederhole diesen Schritt. Wenn "done" gleich true ist, 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

So rufen Sie die Berichtsdaten ab:

gcloud

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

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

Python

Im folgenden Python-Code wird AppOptimizeClient.read_report() verwendet, 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

Wenn der Vorgang mit langer Ausführungszeit 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. Hier ist ein Beispiel für 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 Berichtsdaten lesen.

Informationen zum Interpretieren der Werte im Feld cost 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 automatisch 24 Stunden nach der Erstellung. 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

Im folgenden Code wird AppOptimizeClient.delete_report() verwendet, 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