Modello di hub FinOps
Questo documento fornisce un riepilogo dettagliato degli elementi inclusi nel modello di distribuzione hub FinOps. È possibile usarlo come guida per ottimizzare la distribuzione o per informare le personalizzazioni che è possibile apportare al modello per soddisfare le esigenze dell'organizzazione. Questo documento illustra i prerequisiti necessari per distribuire il modello, i parametri di input che è possibile personalizzare, le risorse che verranno distribuite e gli output del modello. Gli output dei modelli possono essere usati per connettersi alle istanze dell'hub in Power BI, Data Explorer o altri strumenti.
Gli hub FinOps includono molte risorse per offrire una piattaforma FinOps sicura e scalabile. Le risorse principali con cui interagirai includono:
- Esplora dati (Kusto) come archivio dati scalabile per l'analisi avanzata (facoltativo).
- Account di archiviazione (Data Lake Storage Gen2) come area di gestione temporanea per l'inserimento dati.
- Istanza di Data Factory per gestire l'inserimento e la pulizia dei dati.
Importante
Per usare il modello, è necessario creare esportazioni di Gestione costi per pubblicare i dati nel contenitore msexports
nell'account di archiviazione incluso. Per altre informazioni, vedere Creare un nuovo hub.
Prerequisiti
Verificare che i prerequisiti seguenti siano soddisfatti prima di distribuire il modello:
Per creare le risorse distribuite, è necessario disporre delle autorizzazioni seguenti.
Conto risorse Controllo degli accessi in base al ruolo minimo di Azure Distribuire e configurare Data Factory¹ Collaboratore Data Factory Distribuire Key Vault¹ Collaboratore di Key Vault Configurare i segreti di Key Vault¹ Amministratore Key Vault Creare un'identità gestita¹ Managed Identity Contributor (Collaboratore per identità gestita) Distribuire e configurare storage¹ Collaboratore account di archiviazione Assegnare l'identità gestita alle risorse¹ Managed Identity Operator (Operatore per identità gestita) Creare script di distribuzione¹ Ruolo personalizzato contenente solo le Microsoft.Resources/deploymentScripts/write
autorizzazioni eMicrosoft.ContainerInstance/containerGroups/write
come azioni consentite o, in alternativa, Collaboratore, che include queste autorizzazioni e tutti i ruoli precedentiAssegnare autorizzazioni alle identità gestite¹ Ruolo basato su Controllo di accesso amministratore o, in alternativa, proprietario, che include questo ruolo e tutti i ruoli precedenti Creare una sottoscrizione o un'esportazione dei costi del gruppo di risorse² Collaboratore Gestione costi Creare un'esportazione dei costi di fatturazione EA² Lettore aziendale, lettore reparto o proprietario dell'account di registrazione (altre informazioni) Creare un'esportazione dei costi di fatturazione mca Collaboratore Leggere i dati BLOB in storage² Collaboratore dati BLOB di archiviazione ¹ È sufficiente assegnare le autorizzazioni di distribuzione delle risorse hub nell'ambito del gruppo di risorse.
Le autorizzazioni di Gestione costi ² devono essere assegnate nell'ambito da cui si desidera esportare i costi.
Per accedere ai dati dei costi esportati da Power BI o da altri strumenti client, sono necessarie autorizzazioni per i dati dei dati BLOB.Il provider di risorse Microsoft.EventGrid deve essere registrato nella sottoscrizione. Per altre informazioni, vedere Registrare un provider di risorse.
Importante
Se si dimentica questo passaggio, la distribuzione avrà esito positivo, ma il trigger della pipeline non verrà avviato e i dati non saranno pronti. Per altre informazioni, vedere Risoluzione dei problemi dei report di Power BI.
Parametri
Ecco i parametri che è possibile usare per personalizzare la distribuzione:
Parametro | Tipo | Descrizione | Default value |
---|---|---|---|
hubName | String | Facoltativo. Nome dell'hub. Usato per garantire nomi di risorse univoci. | "finops-hub" |
location | String | Facoltativo. Località di Azure in cui devono essere create tutte le risorse. Vedere https://aka.ms/azureregions. | Uguale alla distribuzione |
storageSku | String | Facoltativo. SKU di archiviazione da usare. Archiviazione con ridondanza locale = Costo minimo, ZRS = Disponibilità elevata. Nota: Gli SKU Standard non sono disponibili per l'archiviazione di Data Lake Gen2. Consentito: Premium_LRS , Premium_ZRS . |
"Premium_LRS" |
dataExplorerName | String | Facoltativo. Nome del cluster di Esplora dati di Azure da usare per l'analisi avanzata. Se è vuoto, Azure Data Explorer non verrà distribuito. Obbligatorio per l'uso con Power BI se sono stati monitorati più di 2-5 milioni di dollari al mese. Impostazione predefinita: "" (non usare). | |
dataExplorerSkuName | String | Facoltativo. Nome dello SKU dell'Esplora Dati di Azure. Impostazione predefinita: "Dev(No SLA)_Standard_E2a_v4". | |
dataExplorerSkuTier | String | Facoltativo. Livello SKU per il cluster di Azure Data Explorer. Usa Basic per ottenere il costo più basso senza un accordo sul livello di servizio (poiché è composto da un singolo nodo). Utilizzare Standard per garantire un'elevata disponibilità e migliori prestazioni. Valori consentiti: Basic, Standard. Impostazione predefinita: "Basic". | |
dataExplorerSkuCapacity | Int | Facoltativo. Numero di nodi da usare nel cluster. Valori consentiti: 1 per il livello SKU Basic e 2-1000 per Standard. Impostazione predefinita: 1. | |
tag | Oggetto | Facoltativo. Tag da applicare a tutte le risorse. Aggiungeremo anche il tag cm-resource-parent per migliorare i roll-up dei costi in Gestione dei costi. |
|
tagsByResource | Oggetto | Facoltativo. Tag da applicare alle risorse in base al tipo di risorsa. I tag specifici del tipo di risorsa verranno uniti ai tag per tutte le risorse. | |
scopesToMonitor | Array | Facoltativo. Elenco di ID ambito per il monitoraggio e l'inserimento dei costi. | |
exportRetentionInDays | Int | Facoltativo. Numero di giorni di conservazione dei dati nel contenitore msexports. | 0 |
ingestionRetentionInMonths | Int | Facoltativo. Numero di mesi di dati da conservare nel contenitore di inserimento. | 13 |
dataExplorerConservazioneLogInGiorni | Int | Facoltativo. Numero di giorni di conservazione dei dati nelle tabelle *_log di Esplora Dati. | 0 |
dataExplorerFinalRetentionInMonths | Int | Facoltativo. Numero di mesi di dati da conservare nelle tabelle di Esplora Dati *_final_v*. | 13 |
remoteHubStorageUri | String | Facoltativo. Account di archiviazione in cui eseguire il push dei dati per l'inserimento in un hub remoto. | |
remoteHubStorageKey | String | Facoltativo. Chiave dell'account di archiviazione da usare per il push dei dati in un hub remoto. | |
abilitaAccessoPubblico | string | Facoltativo. Disabilitare l'accesso pubblico al datalake (firewall di archiviazione). | Falso |
virtualNetworkAddressPrefix | String | Facoltativo. Intervallo di indirizzi IP per la rete virtuale privata usata dagli hub FinOps.
/26 è consigliato per evitare di sprecare indirizzi IP. Internamente verranno create le subnet seguenti: /28 per gli endpoint privati, un'altra subnet /28 per gli script di distribuzione temporanei (istanze del contenitore) e /27 per Esplora dati di Azure, se abilitata. |
'10.20.30.0/26' |
Risorse
Durante la distribuzione vengono create le risorse seguenti nel gruppo di risorse di destinazione.
Le risorse usano la convenzione di denominazione seguente: <hubName>-<purpose>-<unique-suffix>
. I nomi vengono modificati in base alle restrizioni relative alla lunghezza e ai caratteri. Viene <unique-suffix>
usato per garantire che i nomi delle risorse siano univoci a livello globale, se necessario.
-
<hubName>store<unique-suffix>
account di archiviazione (Data Lake Storage Gen2)- Contenitori BLOB:
-
msexports
: archivia temporaneamente le esportazioni di Gestione costi. -
ingestion
: archivia i dati inseriti.Nota
In futuro, questo contenitore verrà usato per preparare i dati esterni all'esterno di Gestione costi. -
config
: archivia i metadati e le impostazioni di configurazione dell'hub. File:-
settings.json
: impostazioni dell'hub. -
schemas/focuscost_1.0.json
: definizione dello schema FOCUS 1.0 per la conversione parquet. -
schemas/focuscost_1.0-preview(v1).json
– Focus 1.0-preview schema definition for parquet conversion.– Focus 1.0-preview schema definition for parquet conversion. -
schemas/pricesheet_2023-05-01_ea.json
: definizione dello schema EA elenco prezzi versione 2023-05-01 per la conversione parquet. -
schemas/pricesheet_2023-05-01_mca.json
- Definizione della struttura MCA del listino prezzi versione 2023-05-01 per la conversione a parquet. -
schemas/reservationdeatils_2023-03-01.json
: definizione dello schema dei dettagli della prenotazione versione 2023-03-01 per la conversione parquet. -
schemas/reservationrecommendations_2023-05-01_ea.json
– Raccomandazioni per la prenotazione definizione dello schema EA versione 2023-05-01 per la conversione parquet. -
schemas/reservationrecommendations_2023-05-01_mca.json
– Suggerimenti di prenotazione per la definizione dello schema MCA versione 2023-05-01 per la conversione in formato Parquet. -
schemas/reservationtransactions_2023-05-01_ea.json
– transazioni di prenotazione definizione dello schema EA versione 2023-05-01 per la conversione in parquet. -
schemas/reservationtransactions_2023-05-01_mca.json
: transazioni di prenotazione per la definizione dello schema MCA versione 2023-05-01 per la conversione parquet.
-
-
- Contenitori BLOB:
-
<hubName>script<unique-suffix>
account di archiviazione (Data Lake Storage Gen2) per gli script di distribuzione. -
<hubName>-engine-<unique-suffix>
Istanza di Data Factory- Condutture:
-
config_InitializeHub
: inizializza (o aggiorna) l'istanza dell'hub FinOps dopo la distribuzione. -
config_ConfigureExports
: crea esportazioni di Gestione costi per tutti gli ambiti. -
config_StartBackfillProcess
: esegue il processo di backfill per ogni mese in base alle impostazioni di conservazione. -
config_RunBackfillJob
: crea e attiva le esportazioni per tutti gli ambiti definiti per l'intervallo di date specificato. -
config_StartExportProcess
: ottiene un elenco di tutte le esportazioni di Gestione costi configurate per questo hub in base agli ambiti definiti in settings.json, quindi esegue ogni esportazione usando la pipeline di config_RunExportJobs. -
config_RunExportJobs
: esegue le esportazioni di Gestione costi specificate. -
msexports_ExecuteETL
: accoda lamsexports_ETL_ingestion
pipeline per tenere conto dei limiti dei trigger della pipeline di Data Factory. -
msexports_ETL_ingestion
– Converte le esportazioni di Gestione costi in parquet e rimuove i dati cronologici duplicati nell'esportazione di ogni giorno. -
ingestion_ExecuteETL
: accoda laingestion_ETL_dataExplorer
pipeline per tenere conto dei limiti dei trigger della pipeline di Data Factory. -
ingestion_ETL_dataExplorer
: carica dati parquet in un cluster di Esplora Dati di Azure.
-
- Trigger:
-
config_SettingsUpdated
: attiva laconfig_ConfigureExports
pipeline quando settings.json viene aggiornata. -
config_DailySchedule
: attiva laconfig_RunExportJobs
pipeline ogni giorno per i dati sui costi del mese corrente. -
config_MonthlySchedule
: attiva laconfig_RunExportJobs
pipeline mensile per i dati sui costi del mese precedente. -
msexports_ManifestAdded
: attiva la pipeline al termine dellemsexports_ExecuteETL
esportazioni di Gestione costi. -
ingestion_ManifestAdded
: attiva la pipeline diingestion_ExecuteETL
quando vengono aggiunti manifest.json file (gestiti dalla pipeline dimsexports_ETL_ingestion
).
-
- Endpoint privati gestiti
-
<hubName>store<unique-suffix>
: endpoint privato gestito per l'account di archiviazione. -
<hubName>-vault-<unique-suffix>
- Endpoint privato gestito per Azure Key Vault.
-
- Condutture:
-
<hubName>-vault-<unique-suffix>
Istanza di Key Vault- Segreti:
- Identità gestita del sistema di Data Factory
- Segreti:
- cluster di Esplora dati
<dataExplorerName>
-
Hub
database: funzioni orientate al pubblico per astrarre le dinamiche interne.- Include 2 set di funzioni:
- Funzioni specifiche del set di dati per la versione più recente supportata di FOCUS (ad esempio,
Costs
,Prices
). - Funzioni specifiche del set di dati per ogni versione di FOCUS supportata (ad esempio,
Costs_v1_0
per FOCUS 1.0). Queste funzioni vengono fornite per la compatibilità con le versioni precedenti. Tutte le funzioni restituiscono l'intero set di dati allineati alla versione FOCUS di destinazione.
- Funzioni specifiche del set di dati per la versione più recente supportata di FOCUS (ad esempio,
- I set di dati includono:
Costs
,Prices
. - Le versioni FOCUS supportate includono:
v1_0
.
- Include 2 set di funzioni:
-
Ingestion
database: archivia i dati inseriti.- Impostazioni:
-
HubSettingsLog
tabella – Archivia la cronologia delle modifiche di configurazione di alto livello (ad esempio, versioni, ambiti). -
HubSettings
funzione: ottiene la versione più recente delle impostazioni dell'istanza dell'hub. -
HubScopes
funzione : ottiene gli ambiti attualmente configurati per questa istanza dell'hub.
-
- Dati aperti:
-
PricingUnits
tabella: file di mapping PricingUnits dal toolkit FinOps. Utilizzato per la normalizzazione e la pulizia dei dati. -
Regions
tabella: file di mapping delle regioni dal toolkit FinOps. Utilizzato per la normalizzazione e la pulizia dei dati. -
ResourceTypes
tabella – file di mapping ResourceTypes dal toolkit FinOps. Utilizzato per la normalizzazione e la pulizia dei dati. -
Services
tabella: Services mapping file dal toolkit FinOps. Utilizzato per la normalizzazione e la pulizia dei dati.
-
- Dataset:
-
<dataset>_raw
tabella – dati non elaborati direttamente dall'origine di acquisizione. Usa uno schema di unione per i dati di più origini. -
<dataset>_transform_vX_Y
Funzione: normalizza e pulisce i dati non elaborati per allinearli alla versione FOCUS di destinazione usando, se necessario, tabelle di dati aperte. -
<dataset>_final_vX_Y
tabella: versione pulita della tabella grezza corrispondente allineata alla versione FOCUS mirata. Popolato tramite una politica di aggiornamento che utilizza la funzione di trasformazione corrispondente quando i dati vengono inseriti in tabelle grezze.
-
- Impostazioni:
-
Oltre alle informazioni precedenti, vengono create le risorse seguenti per automatizzare il processo di distribuzione. Gli script di distribuzione devono essere eliminati automaticamente. Tuttavia, non eliminare le identità gestite perché potrebbe causare errori durante l'aggiornamento alla versione successiva.
- Identità gestite:
-
<storage>_blobManager
(Collaboratore ai dati dei BLOB di archiviazione): carica il file settings.json. -
<datafactory>_triggerManager
(Collaboratore data factory): arresta i trigger prima della distribuzione e li avvia dopo la distribuzione.
-
- Script di distribuzione (eliminati automaticamente dopo una distribuzione riuscita):
-
<datafactory>_deleteOldResources
: elimina le risorse inutilizzate dalle distribuzioni precedenti degli hub FinOps. -
<datafactory>_stopTriggers
: arresta tutti i trigger nell'hub usando l'identità triggerManager. -
<datafactory>_startTriggers
: avvia tutti i trigger nell'hub usando l'identità triggerManager. -
<storage>_uploadSettings
: carica il file settings.json usando l'identità blobManager.
-
Output
Ecco gli output generati dalla distribuzione:
Output | Tipo | Descrizione | Valore |
---|---|---|---|
name | String | Nome del gruppo di risorse. | |
location | String | Le risorse della posizione delle risorse di Azure sono state distribuite in. | |
dataFactorytName | String | Nome della data factory. | |
storageAccountId | String | ID risorsa dell'account di archiviazione distribuito. | |
storageAccountName | String | Nome dell'account di archiviazione creato per l'istanza dell'hub. Questa operazione deve essere usata quando si connettono i report di Power BI del toolkit FinOps ai dati. | |
storageUrlForPowerBI | String | URL da usare per la connessione di report personalizzati di Power BI ai dati. | |
clusterId | String | ID risorsa del cluster Data Explorer. | |
clusterUri | String | URI del cluster di esplorazione dati. | |
ingestionDbName | String | Nome del database Data Explorer utilizzato per l'ingestione dei dati. | |
hubDbName | String | Nome del database di Esplora dati utilizzato per l'esecuzione di query sui dati. | |
managedIdentityId | String | ID oggetto dell'identità gestita di Data Factory. Questa operazione sarà necessaria durante la configurazione delle esportazioni gestite. | |
managedIdentityTenantId | String | ID tenant di Azure AD. Questa operazione sarà necessaria durante la configurazione delle esportazioni gestite. |