Condividi tramite


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 e Microsoft.ContainerInstance/containerGroups/write come azioni consentite o, in alternativa, Collaboratore, che include queste autorizzazioni e tutti i ruoli precedenti
    Assegnare 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.
  • <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 la msexports_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 la ingestion_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 la config_ConfigureExports pipeline quando settings.json viene aggiornata.
      • config_DailySchedule : attiva la config_RunExportJobs pipeline ogni giorno per i dati sui costi del mese corrente.
      • config_MonthlySchedule : attiva la config_RunExportJobs pipeline mensile per i dati sui costi del mese precedente.
      • msexports_ManifestAdded : attiva la pipeline al termine delle msexports_ExecuteETL esportazioni di Gestione costi.
      • ingestion_ManifestAdded: attiva la pipeline di ingestion_ExecuteETL quando vengono aggiunti manifest.json file (gestiti dalla pipeline di msexports_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.
  • <hubName>-vault-<unique-suffix> Istanza di Key Vault
    • Segreti:
      • Identità gestita del sistema di Data Factory
  • 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.
      • I set di dati includono: Costs, Prices.
      • Le versioni FOCUS supportate includono: v1_0.
    • 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:
      • 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.

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.