Partager via


Modèle de hub FinOps

Ce document fournit un résumé détaillé des éléments inclus dans le modèle de déploiement FinOps Hubs. Vous pouvez l’utiliser comme guide pour paramétrer votre déploiement ou pour informer les personnalisations que vous pouvez apporter au modèle pour répondre aux besoins de votre organisation. Ce document explique les conditions préalables requises pour déployer le modèle, les paramètres d’entrée que vous pouvez personnaliser, les ressources qui seront déployées et les sorties du modèle. Les sorties de modèle peuvent être utilisées pour se connecter à vos instances hub dans Power BI, l’Explorateur de données ou d’autres outils.

Les hubs FinOps incluent de nombreuses ressources pour offrir une plateforme FinOps sécurisée et évolutive. Les principales ressources avec lesquelles vous allez interagir sont les suivantes :

  • Explorateur de données (Kusto) en tant que magasin de données scalable pour l’analytique avancée (facultatif).
  • Compte de stockage (Data Lake Storage Gen2) en tant que zone intermédiaire pour l’ingestion de données.
  • Instance de Data Factory pour gérer l’ingestion et le nettoyage des données.

Important

Pour utiliser le modèle, vous devez créer des exportations Cost Management pour publier des données dans le conteneur msexports dans le compte de stockage inclus. Pour plus d’informations, consultez Créer un hub.


Prérequis

Vérifiez que les conditions préalables suivantes sont remplies avant de déployer le modèle :

  • Vous devez disposer des autorisations suivantes pour créer les ressources déployées.

    Ressource Minimum Azure RBAC
    Déployer et configurer Data Factory¹ Contributeurs de fabrique de données
    Déployer Key Vault¹ Contributeur Key Vault
    Configurer les secrets Key Vault¹ Administrateur Key Vault
    Créer une identité managée¹ Contributeur d’identités gérées
    Déployer et configurer le stockage¹ Contributeur de compte de stockage
    Affecter une identité managée aux ressources¹ Opérateur d’identités gérées
    Créer des scripts de déploiement¹ Rôle personnalisé contenant uniquement les autorisations et Microsoft.Resources/deploymentScripts/write les Microsoft.ContainerInstance/containerGroups/write actions autorisées ou, alternativement, Contributeur, qui inclut ces autorisations et tous les rôles ci-dessus
    Attribuer des autorisations à des identités managées¹ Administrateur du contrôle d’accès en fonction du rôle ou, alternativement, propriétaire, qui inclut ce rôle et tous les rôles ci-dessus
    Créer un abonnement ou un coût de groupe de ressources export² Contributeur Cost Management
    Créer une exportation de coût de facturation EA² Lecteur d’entreprise, Lecteur du service ou Propriétaire du compte d’inscription (En savoir plus)
    Créer une exportation de coût de facturation MCA² Contributeur
    Lire les données d’objet blob dans le stockage³ Contributeur aux données Blob du stockage

    ¹ Il suffit d’attribuer des autorisations de déploiement de ressources hubs sur l’étendue du groupe de ressources.
    Les autorisations Cost Management doivent être attribuées sur l’étendue à partir de laquelle vous souhaitez exporter vos coûts.
    Les autorisations de données blob sont requises pour accéder aux données de coût exportées à partir de Power BI ou d’autres outils clients.

  • Le fournisseur de ressources Microsoft.EventGrid doit être inscrit dans votre abonnement. Pour plus d’informations, consultez Inscrire un fournisseur de ressources.

    Important

    Si vous oubliez cette étape, le déploiement réussit, mais le déclencheur de pipeline ne sera pas démarré et les données ne seront pas prêtes. Pour plus d’informations, consultez Résolution des problèmes liés aux rapports Power BI.


Paramètres

Voici les paramètres que vous pouvez utiliser pour personnaliser le déploiement :

Paramètre Type Description Valeur par défaut
hubName Chaîne facultatif. Nom du hub. Permet de garantir des noms de ressources uniques. « finops-hub »
location Chaîne facultatif. Emplacement Azure où toutes les ressources doivent être créées. Consultez l’article https://aka.ms/azureregions. Identique au déploiement
storageSku Chaîne facultatif. Référence SKU de stockage à utiliser. LRS = Coût le plus bas, ZRS = Haute disponibilité. Notez que les références SKU Standard ne sont pas disponibles pour le stockage Data Lake gen2. Autorisé : Premium_LRS, Premium_ZRS. « Premium_LRS »
nomExplorateurDonnées Chaîne facultatif. Nom du cluster Azure Data Explorer à utiliser pour l’analytique avancée. S’il est vide, Azure Data Explorer ne sera pas déployé. Obligatoire à utiliser avec Power BI si vous avez plus de 2 à 5 millions de dollars/mo dans les coûts surveillés. Valeur par défaut : « » (n’utilisez pas).
nomExplorateurDonnéesSku Chaîne facultatif. Nom de la référence SKU Azure Data Explorer. Valeur par défaut : « Dev(Pas de SLA)_Standard_E2a_v4 ».
niveauExplorateurDonnéesSku Chaîne facultatif. Niveau de référence SKU pour le cluster Azure Data Explorer. Utilisez Basic pour le coût le plus bas sans contrat SLA (en raison d’un seul nœud). Utilisez Standard pour une haute disponibilité et des performances améliorées. Valeurs autorisées : De base, Standard. Valeur par défaut : « De base ».
capacitéExplorateurDonnéesSku Int facultatif. Nombre de nœuds à utiliser dans le cluster. Valeurs autorisées : 1 pour le niveau de référence SKU de base et 2-1000 pour Standard. Valeur par défaut : 1.
balises Objet facultatif. Balises à appliquer à toutes les ressources. Nous ajouterons également la balise cm-resource-parent pour améliorer les cumuls de coûts dans Cost Management.
tagsByResource Objet facultatif. Balises à appliquer aux ressources en fonction de leur type de ressource. Les balises spécifiques au type de ressource sont fusionnées avec des balises pour toutes les ressources.
scopesToMonitor Tableau facultatif. Liste des ID d’étendue pour surveiller et ingérer les coûts.
exportRetentionInDays Int facultatif. Nombre de jours de conservation des données dans le conteneur msexports. 0
ingestionRetentionInMonths Int facultatif. Nombre de mois de données à conserver dans le conteneur d’ingestion. 13
rétentionJournauxExplorateurDonnéesEnJours Int facultatif. Nombre de jours de conservation des données dans les tables *_log de l’Explorateur de données. 0
rétentionFinaleExplorateurDonnéesEnMois Int facultatif. Nombre de mois de données à conserver dans les tables *_final_v* de l’Explorateur de données. 13
remoteHubStorageUri Chaîne facultatif. Compte de stockage vers lequel envoyer des données pour l’ingestion dans un hub distant.
remoteHubStorageKey Chaîne facultatif. Clé de compte de stockage à utiliser lors de l’envoi de données vers un hub distant.
activerAccèsPublic string facultatif. Désactivez l’accès public au datalake (pare-feu de stockage). Faux
préfixeAdresseRéseauVirtuel Chaîne facultatif. Plage d’adresses IP pour le réseau virtuel privé utilisé par les hubs FinOps. /26 est recommandé pour éviter de perdre des adresses IP. En interne, les sous-réseaux suivants sont créés : /28 pour les points de terminaison privés, un autre sous-réseau /28 pour les scripts de déploiement temporaire (instances de conteneur) et /27 pour Azure Data Explorer, s’il est activé. '10.20.30.0/26'

Ressources

Les ressources suivantes sont créées dans le groupe de ressources cible pendant le déploiement.

Les ressources utilisent la convention d’affectation de noms suivante : <hubName>-<purpose>-<unique-suffix>. Les noms sont ajustés pour tenir compte des restrictions de longueur et de caractère. Permet <unique-suffix> de s’assurer que les noms de ressources sont globalement uniques si nécessaire.

  • <hubName>store<unique-suffix> compte de stockage (Data Lake Storage Gen2)
    • Conteneurs d’objets blob :
      • msexports : stocke temporairement les exportations Cost Management.
      • ingestion : stocke les données ingérées.

        Remarque

        À l’avenir, nous allons utiliser ce conteneur pour mettre en scène des données externes en dehors de Cost Management.- config : stocke les métadonnées et les paramètres de configuration du hub. Fichiers :

        • settings.json – Paramètres du hub.
        • schemas/focuscost_1.0.json – Définition de schéma FOCUS 1.0 pour la conversion parquet.
        • schemas/focuscost_1.0-preview(v1).json – Définition de schéma focus 1.0-preview pour la conversion Parquet.
        • schemas/pricesheet_2023-05-01_ea.json – Définition de schéma EA de la fiche de prix version 2023-05-01 pour conversion vers format parquet.
        • schemas/pricesheet_2023-05-01_mca.json – Définition du schéma MCA pour la fiche de prix version 2023-05-01 pour la conversion en parquet.
        • schemas/reservationdeatils_2023-03-01.json – Définition du schéma des détails de réservation, version 2023-03-01, pour la conversion au format Parquet.
        • schemas/reservationrecommendations_2023-05-01_ea.json – Suggestion de réservation : définition de schéma EA version 2023-05-01 pour la conversion parquet.
        • schemas/reservationrecommendations_2023-05-01_mca.json – Suggestions de réservation : définition de schéma MCA version 2023-05-01 pour la conversion parquet.
        • schemas/reservationtransactions_2023-05-01_ea.json – Définition du schéma EA des transactions de réservation pour la version 2023-05-01, destinée à la conversion au format Parquet.
        • schemas/reservationtransactions_2023-05-01_mca.json – Définition de schéma MCA des transactions de réservation version 2023-05-01 pour conversion au format Parquet.
  • <hubName>script<unique-suffix> compte de stockage (Data Lake Storage Gen2) pour les scripts de déploiement.
  • <hubName>-engine-<unique-suffix> Instance Data Factory
    • Pipelines:
      • config_InitializeHub : initialise (ou met à jour) l’instance du hub FinOps après le déploiement.
      • config_ConfigureExports : crée des exportations Cost Management pour toutes les étendues.
      • config_StartBackfillProcess : exécute le travail de remplissage pour chaque mois en fonction des paramètres de rétention.
      • config_RunBackfillJob : crée et déclenche des exportations pour toutes les étendues définies pour la plage de dates spécifiée.
      • config_StartExportProcess : obtient la liste de toutes les exportations Cost Management configurées pour ce hub en fonction des étendues définies dans settings.json, puis exécute chaque exportation à l’aide du pipeline config_RunExportJobs.
      • config_RunExportJobs : exécute les exportations Cost Management spécifiées.
      • msexports_ExecuteETL : met en file d’attente le msexports_ETL_ingestion pipeline pour prendre en compte les limites de déclencheur de pipeline Data Factory.
      • msexports_ETL_ingestion : convertit les exportations Cost Management en parquet et supprime les données historiques dupliquées dans l’exportation de chaque jour.
      • ingestion_ExecuteETL : met en file d’attente le ingestion_ETL_dataExplorer pipeline pour prendre en compte les limites de déclencheur de pipeline Data Factory.
      • ingestion_ETL_dataExplorer – Ingère des données Parquet dans un cluster Azure Data Explorer.
    • Déclenche:
      • config_SettingsUpdated : déclenche le config_ConfigureExports pipeline lorsque settings.json est mis à jour.
      • config_DailySchedule : déclenche le config_RunExportJobs pipeline quotidiennement pour les données de coût du mois en cours.
      • config_MonthlySchedule : déclenche le config_RunExportJobs pipeline mensuel pour les données de coût du mois précédent.
      • msexports_ManifestAdded : déclenche le msexports_ExecuteETL pipeline lorsque les exportations Cost Management sont terminées.
      • ingestion_ManifestAdded : déclenche le pipeline ingestion_ExecuteETL lorsque des fichiers manifest.json sont ajoutés (gérés par le pipeline msexports_ETL_ingestion).
    • Points de terminaison privés managés
      • <hubName>store<unique-suffix> - Point de terminaison privé managé pour le compte de stockage.
      • <hubName>-vault-<unique-suffix> - Point de terminaison privé managé pour Azure Key Vault.
  • <hubName>-vault-<unique-suffix> Instance Key Vault
    • Secrets :
      • Identité managée du système Data Factory
  • <dataExplorerName>Clusters de l’Explorateur de données
    • Hub base de données : fonctions accessibles au public pour extraire des éléments internes.
      • Inclut 2 ensembles de fonctions :
        • Fonctions spécifiques au jeu de données pour la dernière version de FOCUS prise en charge (par exemple, Costs, Prices).
        • Fonctions spécifiques au jeu de données pour chaque version FOCUS prise en charge (par exemple, Costs_v1_0 pour FOCUS 1.0). Ces fonctions sont fournies pour la compatibilité descendante. Toutes les fonctions renvoient toutes les données alignées sur la version FOCUS ciblée.
      • Les jeux de données sont les suivants : Costs, Prices.
      • Les versions FOCUS prises en charge sont les suivantes : v1_0.
    • base de données Ingestion : stocke les données ingérées.
      • Paramètres:
        • HubSettingsLog table : stocke un historique des modifications de configuration de haut niveau (par exemple, les versions, les étendues).
        • HubSettings fonction : obtient la dernière version des paramètres d’instance du hub.
        • HubScopes fonction : obtient les étendues actuellement configurées pour cette instance de hub.
      • Ouvrir des données :
        • PricingUnitsTableau – fichier de mappage Unités de Prix de la boîte à outils FinOps. Utilisé pour la normalisation et le nettoyage des données.
        • RegionsTableau – fichier de correspondance des régions du kit de ressources FinOps. Utilisé pour la normalisation et le nettoyage des données.
        • ResourceTypestableau – Fichier de mappage ResourceTypes à partir du kit de ressources FinOps. Utilisé pour la normalisation et le nettoyage des données.
        • Servicestableau – Fichier de mappage services de la boîte à outils FinOps. Utilisé pour la normalisation et le nettoyage des données.
      • Ensembles de données
        • <dataset>_rawtableau – données brutes directement à partir de la source d’ingestion. Utilise un schéma d’union pour les données provenant de plusieurs sources.
        • <dataset>_transform_vX_Y fonction : normalise et nettoie les données brutes pour s’aligner sur la version focus ciblée à l’aide de tables de données ouvertes si nécessaire.
        • La table <dataset>_final_vX_Y : la version nettoyée de la table brute correspondante alignée sur la version cible FOCUS. Rempli via une stratégie de mise à jour qui utilise la fonction de transformation correspondante lorsque les données sont ingérées dans des tableaux bruts.

Outre les informations précédentes, les ressources suivantes sont créées pour automatiser le processus de déploiement. Les scripts de déploiement doivent être supprimés automatiquement. Toutefois, ne supprimez pas les identités managées, car cela peut entraîner des erreurs lors de la mise à niveau vers la prochaine version.

  • Identités managées :
    • <storage>_blobManager(Contributeur aux données blob de stockage) : charge le fichier settings.json.
    • <datafactory>_triggerManager (Contributeur Data Factory) : arrête les déclencheurs avant le déploiement et les démarre après le déploiement.
  • Scripts de déploiement (supprimés automatiquement après un déploiement réussi) :
    • <datafactory>_deleteOldResources : supprime les ressources inutilisées des déploiements FinOps hubs précédents.
    • <datafactory>_stopTriggers : arrête tous les déclencheurs dans le hub à l’aide de l’identité triggerManager.
    • <datafactory>_startTriggers : démarre tous les déclencheurs dans le hub à l’aide de l’identité triggerManager.
    • <storage>_uploadSettings : charge le fichier settings.json à l’aide de l’identité blobManager.

Outputs

Voici les sorties générées par le déploiement :

Sortie Type Description Valeur
nom Chaîne Nom du groupe de ressources.
location Chaîne Les ressources d’emplacement des ressources Azure ont été déployées sur.
dataFactorytName Chaîne Nom de Data Factory.
storageAccountId Chaîne ID de ressource du compte de stockage déployé.
storageAccountName Chaîne Nom du compte de stockage créé pour l’instance hub. Cela doit être utilisé lors de la connexion des rapports Power BI du Toolkit FinOps à vos données.
storageUrlForPowerBI Chaîne URL à utiliser lors de la connexion de rapports Power BI personnalisés à vos données.
clusterId Chaîne ID de ressource du cluster Data Explorer.
clusterUri Chaîne URI du cluster Explorateur de données.
NomDbingestion Chaîne Nom de la base de données de l'explorateur de données utilisée pour l’ingestion de données.
NomDbhub Chaîne Nom de la base de données De l’Explorateur de données utilisée pour interroger des données.
managedIdentityId Chaîne ID d’objet de l’identité managée Data Factory. Cela sera nécessaire lors de la configuration des exportations managées.
managedIdentityTenantId Chaîne ID de locataire Azure AD. Cela sera nécessaire lors de la configuration des exportations managées.