L'API App Optimize ti aiuta ad analizzare i dati relativi ai costi e all'utilizzo delle risorse generando report. Per ottenere queste informazioni, devi prima creare un report inviando una richiesta API. In questa richiesta, definisci l'ambito dei dati, la modalità di aggregazione o raggruppamento e gli eventuali filtri da applicare.
Quando il report è pronto, puoi leggere i dati.
Per informazioni su ambiti, dimensioni, metriche e filtri disponibili e sulle combinazioni valide di queste impostazioni, consulta Informazioni sui report.
Prima di iniziare
Gli esempi in questa guida richiedono un Google Cloud progetto con risorse attive da analizzare. L'API App Optimize ha bisogno di dati di fatturazione e utilizzo per produrre risultati significativi; i report eseguiti su progetti nuovi o vuoti saranno vuoti.
In questa guida, il progetto identificato come
PROJECT_IDfornisce l'ambito dei dati e ospita la risorsa report.L'API App Optimize supporta la creazione di report in un progetto che analizzano i dati di un altro progetto o di applicazioni in limiti a livello di singolo progetto o cartella. Per generare un report su un'applicazione App Hub, che può essere composta da più progetti, devi disporre delle autorizzazioni di monitoraggio e fatturazione richieste per tutti i progetti associati all'applicazione per creare il report.
Assicurati che l'API App Optimize sia abilitata per il progetto che utilizzerai per creare e gestire la risorsa report.
-
Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
Verify that you have the permissions required to complete this guide.
Seleziona la scheda relativa a come intendi utilizzare gli esempi in questo documento:
gcloud
Nella console Google Cloud , attiva Cloud Shell.
Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Per informazioni sulla configurazione dell'autenticazione per un ambiente di produzione, consulta Configura le Credenziali predefinite dell'applicazione per il codice in esecuzione su Google Cloud nella documentazione sull'autenticazione di Google Cloud .
Python
- Installa la libreria client Python per l'API App Optimize.
-
Per utilizzare gli esempi di Python in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Se utilizzi una shell locale, crea le credenziali di autenticazione locali per il tuo account utente:
gcloud auth application-default login
Non è necessario eseguire questa operazione se utilizzi Cloud Shell.
Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud .
Per informazioni sulla configurazione dell'autenticazione per un ambiente di produzione, consulta Configura le Credenziali predefinite dell'applicazione per il codice in esecuzione su Google Cloud nella documentazione sull'autenticazione di Google Cloud .
-
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI.
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Autenticati per usare REST nella documentazione sull'autenticazione di Google Cloud .
Per informazioni sulla configurazione dell'autenticazione per un ambiente di produzione, consulta Configura le Credenziali predefinite dell'applicazione per il codice in esecuzione su Google Cloud nella documentazione sull'autenticazione di Google Cloud .
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per creare un report utilizzando questa guida, chiedi all'amministratore di concederti i seguenti ruoli IAM nel tuo progetto con risorse attive:
-
Amministratore ottimizzazione app (
roles/appoptimize.admin) -
Monitoring Viewer (
roles/monitoring.viewer) -
Visualizzatore (
roles/viewer) (o un altro ruolo che concedebilling.resourceCosts.get)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Per saperne di più sui ruoli e sulle autorizzazioni richiesti per l'API App Optimize, consulta Controllo dell'accesso con IAM.
crea un report
I passaggi seguenti descrivono come avviare la creazione del report. Questo esempio crea un report per aiutarti a comprendere i costi e l'utilizzo medio della CPU del progetto scelto nell'ultima settimana. Il report suddivide queste informazioni per ogni singola risorsa, incluso il tipo di risorsa, il prodotto Google Cloud di cui fa parte e la sua posizione.
Per creare la risorsa report, segui le istruzioni per il metodo che preferisci:
gcloud
Utilizza il seguente comando gcloud beta app-optimize reports create per creare
il report.
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
Sostituisci quanto segue:
REPORT_ID: un ID univoco per il nuovo report, ad esempiomy-resource-cost-report-1.PROJECT_ID: il tuo ID progetto Google Cloud .
Il comando per creare un report attende automaticamente il completamento dell'operazione.
Python
Il seguente codice Python utilizza AppOptimizeClient.create_report()
per creare un report.
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)
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto Google Cloud .REPORT_ID: un ID univoco per il nuovo report, ad esempiomy-first-report.
Il metodo operation.result() nella libreria client attende automaticamente
il completamento dell'operazione. Non è necessario alcun ciclo di polling manuale.
REST
Invia una richiesta POST HTTP al percorso della risorsa projects.locations.reports dell'API REST
Per inviare la richiesta, utilizza il seguente comando
curl: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"Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto Google Cloud .REPORT_ID: un ID univoco per il nuovo report, ad esempiomy-resource-cost-report-1.
L'API restituisce un oggetto operazione a lunga esecuzione (LRO). Prendi nota del campo
namenella risposta, che utilizzerai per controllare lo stato dell'operazione:{ "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.appoptimize.v1beta.OperationMetadata" }, "done": false }Nella risposta, il campo
doneèfalse, il che indica che la generazione del report è in corso.Per verificare se il report è pronto, invia una richiesta HTTP
GETall'operazionenamerestituita nel passaggio precedente:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://appoptimize.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/operations/OPERATION_ID"Sostituisci
PROJECT_IDeOPERATION_IDcon i valori della risposta LRO.Esamina la risposta per determinare lo stato dell'operazione:
- Se il report è ancora in fase di generazione, la risposta sarà simile alla risposta LRO iniziale, con
doneimpostato sufalse. Devi attendere un breve periodo, ad esempio da 5 a 15 secondi, e riprovare a eseguire il polling ripetendo questo passaggio. Al termine della generazione del report, la risposta avrà
"done": truee includerà la risorsa del report nel camporesponse:{ "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" ] } } ```Se l'operazione di lunga durata rileva un errore, la risposta conterrà un campo
erroranziché il camporesponse, fornendo dettagli sull'errore.
- Se il report è ancora in fase di generazione, la risposta sarà simile alla risposta LRO iniziale, con
Una volta completata l'operazione, puoi leggere i dati del report.
Limiti di concorrenza
Quando crei un report, l'API App Optimize recupera i dati di costo da Fatturazione Cloud e i dati di utilizzo da Cloud Monitoring per ogni target_project del report.
- Per un report limitato a un singolo progetto, questo è il progetto di destinazione.
- Per un'applicazione App Hub, ogni progetto che contiene un servizio o un carico di lavoro nell'applicazione è un progetto di destinazione.
L'API App Optimize applica una quota di concorrenza denominata Operazioni CreateReport simultanee, che consente un massimo di 10 richieste simultanee per i dati dei report per progetto di destinazione. Quando crei un report, l'API App Optimize calcola il numero di progetti di destinazione nel report e blocca il numero richiesto di unità di quota finché l'operazione di lunga durata per la creazione del report non è terminata.
I report che vengono completati in meno di qualche minuto potrebbero non essere conteggiati ai fini del limite di simultaneità a causa della tempistica di misurazione a livello di sistema.
Puoi visualizzare l'attività API attuale e gestire questi limiti nella pagina Quote e limiti di sistema della console Google Cloud .
Se prevedi di creare più report contemporaneamente, considera quando i tuoi team eseguono i report e come sono strutturate le tue applicazioni App Hub:
- Se più team eseguono report che includono gli stessi progetti target, puoi scaglionare gli orari di inizio della creazione dei report per ogni team.
- Le applicazioni possono includere risorse di più progetti e più di un'applicazione potrebbe utilizzare risorse di un singolo progetto. La creazione simultanea di report per questi tipi di applicazioni genera più richieste ai progetti di destinazione.
Ad esempio, prendi in considerazione un team che lavora a una suite di applicazioni per l'apprendimento delle arti creative, con varianti standard e premium. La seguente tabella mostra l'elenco delle applicazioni nella prima colonna. Nelle colonne rimanenti, l'icona del segno di spunta () indica che un progetto contiene servizi o carichi di lavoro per un'applicazione elencata.
| Applicazione | 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 |
Se crei report per i dati di costi e utilizzo per tutte le applicazioni elencate
contemporaneamente, l'API App Optimize utilizza più di un'unità del
limite di concorrenza in alcuni progetti. In particolare, il progetto condiviso
common-project riceve 12 richieste di dati su costi e utilizzo. Poiché
questo numero supera il limite di concorrenza, 2 richieste di dati non andranno a buon fine.
Per evitare questo problema, il team potrebbe eseguire prima i report per le versioni standard delle applicazioni e poi eseguire i report per la versione premium.
Passaggi successivi
- Per comprendere dimensioni, metriche e filtri, consulta Informazioni sui report.
- Esplora altri modi per gestire i report: