Esporta i suggerimenti in BigQuery
Panoramica
Con l'esportazione in BigQuery, puoi visualizzare snapshot giornalieri di suggerimenti per la tua organizzazione. Per farlo, viene usato BigQuery Data Transfer Service. È possibile esportare i dati e i suggerimenti seguenti:
Nome | ID motore per suggerimenti |
---|---|
Motore per suggerimenti IAM | google.iam.policy.Recommender |
Motore per suggerimenti tipo di macchina VM | google.compute.instance.MachineTypeRecommender |
Motore per suggerimenti tipo di macchina del gruppo di istanze gestite | google.compute.instanceGroupManager.MachineTypeRecommender |
Motore per suggerimenti sullo stato di inattività di un inattività | google.compute.disk.IdleResourceRecommender |
Motore per suggerimenti VM inattive | google.compute.instance.IdleResourceRecommender |
Motore per suggerimenti immagini inattive | google.compute.image.IdleResourceRecommender |
Motore per suggerimenti di indirizzi IP inattivi | google.compute.address.IdleResourceRecommender |
Motore per suggerimenti istanze Cloud SQL con provisioning eccessivo | google.cloudsql.instance.OverprovisionedRecommender |
Suggerimento per le istanze inattive di Cloud SQL | google.cloudsql.instance.IdleRecommender |
Motore per suggerimenti sulle prestazioni di Cloud SQL |
google.cloudsql.instance.PerformanceRecommender |
Suggerimento per sottoprovisioning di Cloud SQL | google.cloudsql.instance.UnderprovisionedRecommender |
Motore per suggerimenti di progetti non previsti | google.resourcemanager.projectUtilization.Recommender |
Motore per suggerimenti sul limite dei servizi (quota) | google.resourcemanager.serviceLimit.Recommender |
Suggerimento per l'identità del servizio Cloud Run | google.run.service.IdentityRecommender |
motori per suggerimenti di diagnosi di GKE | google.container.DiagnosisRecommender |
Informazioni sui costi della fatturazione Cloud | google.billing.CostInsight |
Insight sul firewall | google.compute.firewall.Insight |
Insight di Network Analyzer |
|
Approfondimenti sull'account di servizio Anteprima | google.iam.serviceAccount.Insight |
Prima di iniziare
Completa i seguenti passaggi prima di creare un trasferimento di dati per i consigli:
- Consenti a BigQuery Data Transfer Service di gestire il trasferimento dei dati. Se utilizzi l'interfaccia utente web di BigQuery per creare il trasferimento, devi consentire ai popup di
console.cloud.google.com
sul browser di visualizzare le autorizzazioni. Per maggiori dettagli, vedi la sezione relativa all' abilitazione di BigQuery Data Transfer Service. - Crea un
set di dati BigQuery per archiviare i dati.
- Il trasferimento dei dati utilizza la stessa regione in cui viene creato il set di dati. La località è immutabile dopo la creazione del set di dati e il trasferimento.
- Il set di dati conterrà insight e suggerimenti da tutte le regioni del mondo. Di conseguenza, questa operazione aggrega tutti i dati in un'area geografica globale durante il processo. Contatta l'assistenza clienti Google Cloud in caso di problemi di residenza dei dati.
- Se la località del set di dati è stata lanciata di recente, potrebbe verificarsi un ritardo nella disponibilità iniziale dei dati nell'esportazione.
Prezzi
L'esportazione dei suggerimenti in BigQuery è disponibile per tutti i clienti con suggerimenti basati sul livello di prezzo del motore per suggerimenti.
Autorizzazioni obbligatorie
Durante la configurazione del trasferimento di dati, sono necessarie le seguenti autorizzazioni a livello di progetto in cui crei un trasferimento di dati:
bigquery.transfers.update
: consente di creare il trasferimentobigquery.datasets.update
: consente di aggiornare le azioni nel set di dati di destinazioneresourcemanager.projects.update
: consente di selezionare un progetto in cui archiviare i dati delle esportazionipubsub.topics.list
: consente di selezionare un argomento Pub/Sub per ricevere notifiche sull'esportazione.
La seguente autorizzazione è richiesta a livello di organizzazione. Questa organizzazione corrisponde a quella per cui è stata configurata l'esportazione.
recommender.resources.export
: consente di esportare i suggerimenti in BigQuery
Per esportare i suggerimenti negoziati per il risparmio sui costi, sono necessarie le seguenti autorizzazioni:
billing.resourceCosts.get at project level
: consente di esportare i prezzi negoziati per i suggerimenti a livello di progettobilling.accounts.getSpendingInformation at billing account level
: consente di esportare i prezzi negoziati per i consigli a livello di account di fatturazione
Senza queste autorizzazioni, i suggerimenti sui risparmi sui costi verranno esportati con prezzi standard anziché prezzi negoziati.
Concedi le autorizzazioni
I ruoli seguenti devono essere concessi nel progetto in cui crei il trasferimento di dati:
- Ruolo Amministratore BigQuery -
roles/bigquery.admin
- Ruolo Proprietario progetto:
roles/owner
- Ruolo Proprietario progetto:
roles/owner
- Ruolo Visualizzatore progetto:
roles/viewer
- Ruolo Editor di progetti:
roles/editor
- Ruolo Amministratore account di fatturazione -
roles/billing.admin
- Ruolo Gestore costi account di fatturazione -
roles/billing.costsManager
- Ruolo Visualizzatore account di fatturazione:
roles/billing.viewer
Per consentirti di creare azioni di trasferimento e aggiornamento sul set di dati di destinazione, devi concedere il seguente ruolo:
Esistono più ruoli che contengono le autorizzazioni per selezionare un progetto per l'archiviazione dei dati di esportazione e per selezionare un argomento Pub/Sub per ricevere notifiche. Per poter disporre di entrambe le autorizzazioni, puoi concedere il ruolo seguente:
Esistono più ruoli che contengono l'autorizzazione billing.resourceCosts.get per esportare i prezzi negoziati per i suggerimenti a livello di progetto di risparmio sui costi - puoi concederne uno qualsiasi:
Esistono più ruoli che contengono l'autorizzazione billing.accounts.getSpendingInformation per esportare i prezzi negoziati e ottenere suggerimenti sul livello dell'account di fatturazione per il risparmio sui costi. Puoi concedere uno di questi ruoli:
Devi concedere il seguente ruolo a livello di organizzazione:
- Ruolo di Esportatore consigli (
roles/recommender.exporter
) sulla console Google Cloud.
Puoi anche creare ruoli personalizzati contenenti le autorizzazioni richieste.
Creare un trasferimento di dati per i consigli
Accedi alla console Google Cloud.
Nella schermata Home, fai clic sulla scheda Consigli.
Fai clic su Esporta per visualizzare il modulo di esportazione di BigQuery.
Seleziona un progetto di destinazione per archiviare i dati dei consigli e fai clic su Avanti.
Fai clic su Abilita API per abilitare le API BigQuery per l'esportazione. Il completamento dell'operazione può richiedere diversi secondi. Al termine, fai clic su Continua.
Nel modulo Configura trasferimento, fornisci i seguenti dettagli:
Nella sezione Nome configurazione di trasferimento, in Nome visualizzato, inserisci un nome per il trasferimento. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare facilmente il trasferimento se devi modificarlo in un secondo momento.
Nella sezione Opzioni di pianificazione, in Pianificazione, lascia invariato il valore predefinito (Inizia ora) o fai clic su Avvia a un orario predefinito.
In Ripetizioni, scegli un'opzione per la frequenza di esecuzione del trasferimento.
- Giornaliera (impostazione predefinita)
- Ogni settimana
- Mensile
- Personalizzati
- On demand
In Data di inizio ed ora di esecuzione, inserisci la data e l'ora di inizio del trasferimento. Se scegli Inizia ora, questa opzione viene disattivata.
Nella sezione Impostazioni destinazione, in Set di dati di destinazione, scegli l'ID del set di dati che hai creato per archiviare i tuoi dati.
Nella sezione Dettagli origine dati:
Il valore predefinito di organization_id è l'organizzazione per cui stai visualizzando i suggerimenti. Se vuoi esportare i suggerimenti in un'altra organizzazione, puoi modificare questa impostazione nella console nel visualizzatore dell'organizzazione.
(Facoltativo) Nella sezione Opzioni di notifica:
- Fai clic sul pulsante di attivazione/disattivazione per abilitare le notifiche via email. Quando abiliti questa opzione, l'amministratore dei trasferimenti riceve una notifica via email quando un'operazione di trasferimento non va a buon fine.
In Seleziona un argomento Pub/Sub, scegli il nome dell'argomento o fai clic su Crea un argomento. Questa opzione configura le notifiche di esecuzione Pub/Sub per il trasferimento.
Fai clic su Crea per creare il trasferimento.
Fai clic su Consenti nella finestra popup per il consenso.
Una volta creato il trasferimento, tornerai automaticamente all'hub dei suggerimenti. Puoi fare clic sul link per accedere ai dettagli della configurazione del trasferimento. In alternativa, puoi accedere ai trasferimenti procedendo nel seguente modo:
Vai alla pagina BigQuery nella console Google Cloud.
Fai clic su Data Transfer. Puoi visualizzare tutti i trasferimenti di dati disponibili.
Visualizzare la cronologia esecuzioni di un trasferimento
Per visualizzare la cronologia delle esecuzioni di un trasferimento:
Vai alla pagina BigQuery nella console Google Cloud.
Fai clic su Data Transfer. Puoi visualizzare tutti i trasferimenti di dati disponibili.
Fai clic sul trasferimento appropriato nell'elenco.
Nell'elenco dei trasferimenti eseguiti, visualizzato nella scheda CRONOLOGIA ESEGUI, seleziona il trasferimento di cui vuoi visualizzare i dettagli.
Viene visualizzato il riquadro Dettagli esecuzione per la singola esecuzione eseguita che hai selezionato. Alcuni dei possibili dettagli di esecuzione visualizzati sono:
- Trasferimento differito a causa di dati di origine non disponibili.
- Job che indica il numero di righe esportate in una tabella
- Autorizzazioni mancanti per un'origine dati che devi concedere e successivamente pianificare un backfill.
Quando vengono esportati i dati?
Quando crei un trasferimento di dati, la prima esportazione avviene dopo due giorni. Dopo la prima esportazione, i job di esportazione vengono eseguiti con la frequenza richiesta al momento della configurazione. Si applicano le seguenti condizioni:
Il job di esportazione per un giorno specifico (D) esporta i dati del giorno precedente (G-1) nel tuo set di dati BigQuery. Tieni presente che questo è per il fuso orario PST e potrebbe essere più lungo per gli altri fusi orari.
Il job di esportazione giornaliero non viene eseguito finché non sono disponibili tutti i dati per l'esportazione. Questo può comportare variazioni e a volte ritardi nella giornata e nell'ora in cui viene aggiornato il set di dati. Pertanto, è preferibile utilizzare l'istantanea di dati più recente disponibile, anziché avere una dipendenza rigida/temporale da tabelle con date specifiche.
Potresti anche visualizzare il seguente messaggio di stato che indica che il trasferimento è in attesa perché i dati non sono ancora disponibili per l'esportazione. Il job di esportazione viene eseguito dopo che i dati di origine sono disponibili:
Transfer deferred due to source data not being available
Visualizzare le tabelle per un trasferimento
Quando esporti i suggerimenti in BigQuery, il set di dati contiene due tabelle partizionate per data:
- esportazione_consigli
- esportazione_dati
Per ulteriori dettagli sulle tabelle e sullo schema, vedi Creare e utilizzare tabelle e Specificare uno schema.
Per visualizzare le tabelle di un trasferimento di dati:
Vai alla pagina BigQuery nella console Google Cloud. Vai alla pagina BigQuery
Fai clic su Data Transfer. Puoi visualizzare tutti i trasferimenti di dati disponibili.
Fai clic sul trasferimento appropriato nell'elenco.
Fai clic sulla scheda CONFIGURAZIONE e poi sul set di dati.
Nel riquadro Explorer, espandi il progetto e seleziona un set di dati. La descrizione e i dettagli vengono visualizzati nel riquadro dei dettagli. Le tabelle di un set di dati sono elencate con il nome del set di dati nel riquadro Explorer.
Pianificare un backfill
È possibile esportare i suggerimenti per una data già trascorsa (data successiva alla data in cui l'organizzazione ha attivato l'esportazione) pianificando un backfill. Per pianificare un backfill, segui questi passaggi:
Vai alla pagina BigQuery nella console Google Cloud.
Fai clic su Data Transfer.
Nella pagina Trasferimenti, fai clic su un trasferimento appropriato nell'elenco.
Fai clic su Pianifica backfill.
Nella finestra di dialogo Riempimento pianificazione, scegli la Data di inizio e la Data di fine.
Per ulteriori informazioni sull'utilizzo dei trasferimenti, vedi Utilizzo dei trasferimenti.
Esempi di query
Per analizzare i dati esportati, puoi utilizzare le seguenti query di esempio.
Visualizzazione dei risparmi sui costi per i suggerimenti in cui la durata dei suggerimenti viene visualizzata in giorni
SELECT name, recommender, target_resources,
case primary_impact.cost_projection.cost.units is null
when true then round(primary_impact.cost_projection.cost.nanos * power(10,-9),2)
else
round( primary_impact.cost_projection.cost.units +
(primary_impact.cost_projection.cost.nanos * power(10,-9)), 2)
end
as dollar_amt,
primary_impact.cost_projection.duration.seconds/(60*60*24) as duration_in_days
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and primary_impact.category = "COST"
Visualizzazione dell'elenco dei ruoli IAM inutilizzati
SELECT *
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and recommender = "google.iam.policy.Recommender"
and recommender_subtype = "REMOVE_ROLE"
Visualizzazione di un elenco di ruoli concessi che devono essere sostituiti da ruoli più piccoli
SELECT *
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and recommender = "google.iam.policy.Recommender"
and recommender_subtype = "REPLACE_ROLE"
Visualizzare approfondimenti per un consiglio
SELECT recommendations.name as recommendation_name,
insights.name as insight_name,
recommendations.cloud_entity_id,
recommendations.cloud_entity_type,
recommendations.recommender,
recommendations.recommender_subtype,
recommendations.description,
recommendations.target_resources,
recommendations.recommendation_details,
recommendations.state,
recommendations.last_refresh_time as recommendation_last_refresh_time,
insights.insight_type,
insights.insight_subtype,
insights.category,
insights.description,
insights.insight_details,
insights.state,
insights.last_refresh_time as insight_last_refresh_time
FROM `<project>.<dataset>.recommendations_export` as recommendations,
`<project>.<dataset>.insights_export` as insights
WHERE DATE(recommendations._PARTITIONTIME) = "<date>"
and DATE(insights._PARTITIONTIME) = "<date>"
and insights.name in unnest(recommendations.associated_insights)
Visualizzazione dei consigli per i progetti che appartengono a una cartella specifica
Questa query restituisce cartelle principali fino a cinque livelli dal progetto.
SELECT *
FROM `<project>.<dataset>.recommendations_export`
WHERE DATE(_PARTITIONTIME) = "<date>"
and "<folder_id>" in unnest(ancestors.folder_ids)
Visualizzazione dei consigli per l'ultima data disponibile esportata finora
DECLARE max_date TIMESTAMP;
SET max_date = (
SELECT MAX(_PARTITIONTIME) FROM
`<project>.<dataset>.recommendations_export`
);
SELECT *
FROM `<project>.<dataset>.recommendations_export`
WHERE _PARTITIONTIME = max_date
Utilizzare Fogli per esplorare i dati BigQuery
In alternativa all'esecuzione di query su BigQuery, puoi accedere, analizzare, visualizzare e condividere miliardi di righe di dati BigQuery dal tuo foglio di lavoro con Fogli connessi, il nuovo connettore dati di BigQuery. Per ulteriori informazioni, consulta la guida introduttiva ai dati di BigQuery in Fogli Google.
Configurare l'esportazione utilizzando la riga di comando di BigQuery e l'API REST
Ottieni le autorizzazioni richieste:
Puoi ottenere le autorizzazioni necessarie per Identity and Access Management tramite la console Google Cloud o la riga di comando.
- Riga di comando per gli account di servizio
- Riga di comando per gli utenti:
Ad esempio, per utilizzare la riga di comando per ottenere l'autorizzazione helper.resources.export a livello di organizzazione per l'account di servizio:
gcloud organizations add-iam-policy-binding *<organization_id>* --member=serviceAccount:*<service_acct_name>*' --role='roles/recommender.exporter'
Registra un progetto nell'origine dati BigQuery
Datasource to use: 6063d10f-0000-2c12-a706-f403045e6250
Crea l'esportazione:
Utilizzo della riga di comando di BigQuery:
bq mk \ --transfer_config \ --project_id=project_id \ --target_dataset=dataset_id \ --display_name=name \ --params='parameters' \ --data_source=data_source \ --service_account_name=service_account_name
Dove:
- project_id è l'ID progetto.
- dataset è l'ID del set di dati di destinazione per la configurazione di trasferimento.
- name è il nome visualizzato per la configurazione di trasferimento. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare facilmente il trasferimento se devi modificarlo in un secondo momento.
- parameters contiene i parametri per la configurazione di trasferimento creata in formato JSON. Per l'esportazione in BigQuery di suggerimenti e approfondimenti, devi fornire l'ID organizzazione per il quale devono essere esportati i suggerimenti e gli approfondimenti. Formato parametri: "{organization_id":"<org id>"}
- data_source Origine dati da utilizzare: "6063d10f-0000-2c12-a706-f403045e6250"
- service_account_name è il nome dell'account di servizio utilizzato per
autenticare l'esportazione. L'account di servizio deve essere di proprietà dello stesso
project_id
utilizzato per la creazione del trasferimento e deve disporre di tutte le autorizzazioni richieste elencate sopra.
Gestire un'esportazione esistente tramite UI o riga di comando BigQuery:
Nota: l'esportazione viene eseguita come l'utente che ha configurato l'account, indipendentemente da chi aggiorna la configurazione di esportazione in futuro. Ad esempio, se l'esportazione viene impostata utilizzando un account di servizio e in seguito un utente umano aggiorna la configurazione dell'esportazione tramite l'interfaccia utente di BigQuery Data Transfer Service, l'esportazione continuerà a essere eseguita come account di servizio. In questo caso, il controllo delle autorizzazioni per "recommender.resources.export" viene eseguito per l'account di servizio ogni volta che viene eseguita l'esportazione.