Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les hubs FinOps collectent des recommandations à partir de plusieurs sources et les ingèrent dans le jeu de données géré Recommendations en même temps que les recommandations de réservation des exportations Cost Management. Les recommandations sont issues de Azure Resource Graph à l’aide d’un ensemble configurable de requêtes qui extrayent des recommandations Azure Advisor et identifient différents scénarios d’optimisation en fonction de la configuration des ressources. Les requêtes sont gérées dans des fichiers JSON simples dans le stockage, ce qui facilite l’ajout de vos propres recommandations personnalisées en chargeant les fichiers de requête dans le stockage hub.
Prerequisites
Avant de commencer, vous devez disposer des éléments suivants :
- Déployé une instance de hub FinOps.
- Attribuez le rôle Lecteur à l’identité managée de Data Factory sur les groupes d’administration ou les abonnements que vous souhaitez interroger. Cette autorisation doit être configurée séparément du déploiement du hub FinOps.
Traitement des recommandations
Le pipeline de recommandations s’exécute quotidiennement et traite les fichiers de requête stockés dans le dossier config/requêtes dans le stockage hub :
- Le déclencheur queries_DailySchedule s’exécute une fois par jour.
- Le pipeline queries_ExecuteETL effectue une itération dans tous les fichiers de requête dans le dossier de stockage config/requêtes .
- Le pipeline queries_ETL_ingestion exécute chaque requête dans Azure Resource Graph, supprime les doublons des résultats et enregistre les données au format Parquet dans le dossier ingestion/Recommendations.
- Si vous utilisez Azure Data Explorer, les données sont ingérées dans la table
Recommendations_rawet transformées à l’aide de la fonctionRecommendations_transform_v1_2().
Les recommandations relatives aux hubs sont regroupées avec les recommandations de réservation issues des exportations de Cost Management dans le même jeu de données géré Recommandations. Vous pouvez faire la distinction entre les sources à l’aide de la x_SourceType colonne.
Recommandations intégrées
Les hubs FinOps incluent les recommandations suivantes. La plupart sont activées par défaut. Les recommandations facultatives peuvent générer du bruit pour les organisations où elles ne s’appliquent pas et peuvent être activées pendant le déploiement via le paramètre de modèle spécifié.
Compute
-
Machines virtuelles
- Désallouer les machines virtuelles arrêtées.
- Migrez vers des disques managés.
- Facultatif : Utilisez Azure Hybrid Benefit pour les machines virtuelles Windows. Activé via l’option
enableAHBRecommendations.
-
SQL Machines Virtuelles
- Facultatif : Utiliser Azure Hybrid Benefit pour les machines virtuelles SQL. Activé via l’option
enableAHBRecommendations.
- Facultatif : Utiliser Azure Hybrid Benefit pour les machines virtuelles SQL. Activé via l’option
-
Azure Kubernetes Service
- Facultatif : Utilisez des machines virtuelles Spot pour les clusters AKS. Activé via l’option
enableSpotRecommendations.
- Facultatif : Utilisez des machines virtuelles Spot pour les clusters AKS. Activé via l’option
Databases
- Base de données SQL Azure
Gestion et gouvernance
- Azure Advisor
Mise en réseau
- Application Gateway
- Protection DDOS
- ExpressRoute
- Équilibreur de charge
- Passerelle NAT
- Interfaces réseau
- Groupes de sécurité réseau
- Adresses IP publiques
- passerelle VPN
Stockage
- Disques managés
- Comptes de stockage
Web
- App Service
Pour désactiver une recommandation par défaut spécifique, supprimez son fichier de requête du dossier config/requêtes dans le stockage hub. Le pipeline traite uniquement les fichiers de requête présents.
Ajouter des recommandations personnalisées
Vous pouvez ajouter des recommandations personnalisées en chargeant des fichiers de requête dans le dossier config/requêtes dans le stockage hub. Le pipeline récupère automatiquement les nouveaux fichiers de requête lors de la prochaine exécution quotidienne.
Convention d’affectation de noms de fichiers
Nommez les fichiers de requête à l’aide du {dataset}-{provider}-{type}.json format suivant :
-
Jeu de données : jeu de données cible (par exemple,
Recommendations). -
Fournisseur — le fournisseur auquel les données de service sont associées (par exemple,
Microsoft,Contoso). -
Type : identificateur de type de recommandation à l’aide de PascalCase (par exemple,
StoppedVMs,IdleCosmosDB).
Par exemple : Recommendations-Contoso-IdleCosmosDB.json
Format de fichier de requête
Chaque fichier de requête est un fichier JSON avec les propriétés suivantes :
{
"dataset": "Recommendations",
"provider": "Microsoft",
"query": "<Azure Resource Graph query>",
"queryEngine": "ResourceGraph",
"scope": "Tenant",
"source": "<descriptive source name>",
"type": "<unique type identifier>",
"version": "1.0"
}
| Propriété | Description |
|---|---|
dataset |
Doit être "Recommendations". |
provider |
Nom du fournisseur (par exemple, "Microsoft"). |
query |
Requête Azure Resource Graph à exécuter, sur une seule ligne. |
queryEngine |
Doit être "ResourceGraph". |
scope |
Étendue de requête. Permet "Tenant" d’interroger tous les abonnements auxquels l’identité managée Data Factory a accès au sein du locataire. Les requêtes inter-locataires ne sont pas prises en charge, mais les ressources déléguées via Azure Lighthouse sont incluses dans les requêtes à l’échelle du locataire. |
source |
Nom descriptif de la source de recommandation (par exemple, "Azure Advisor" ou "FinOps hubs"). |
type |
Identificateur programmatique pour ce type de recommandation. Utilisez un {provider}-{name} format avec des caractères alphanumériques et des traits d’union uniquement (par exemple, "Contoso-IdleCosmosDB"). Cette valeur est utilisée dans le cadre du nom du fichier de sortie. |
version |
Version du schéma. Utilisez "1.0". |
Colonnes de sortie requises
Votre requête doit retourner les colonnes suivantes :
| Column | Description |
|---|---|
ResourceId |
Identifiant de ressource (en minuscules). |
ResourceName |
Nom de la ressource (en minuscules). |
SubAccountId |
l'ID d'abonnement. |
SubAccountName |
Nom de l’abonnement. Joignez resourcecontainers pour remplir ceci. |
x_RecommendationCategory |
Catégorie de recommandation. Utilisez "Cost", , "HighAvailability", "OperationalExcellence", "Performance"ou "Security". |
x_RecommendationDate |
Date de recommandation (utiliser now() pour les requêtes à un point dans le temps). |
x_RecommendationDescription |
Brève description du problème. |
x_RecommendationDetails |
Chaîne JSON avec des propriétés supplémentaires. Incluez x_RecommendationProvider, x_RecommendationSolution, x_RecommendationTypeIdet x_ResourceType ainsi que toutes les propriétés personnalisées spécifiques à la recommandation. |
x_RecommendationId |
Identificateur unique pour la recommandation (par exemple, ID de ressource + suffixe). |
x_ResourceGroupName |
Nom du groupe de ressources (minuscules). |
Conseils pour l’écriture de requêtes
Pour renseigner le nom de l’abonnement, effectuez une jointure avec
resourcecontainersà la fin de votre requête :| join kind=leftouter ( resourcecontainers | where type == 'microsoft.resources/subscriptions' | project SubAccountName=name, SubAccountId=subscriptionId ) on SubAccountId | project-away SubAccountId1Générez
x_RecommendationIden combinant l’ID de ressource avec un suffixe descriptif (par exemple).strcat(tolower(id), '-idle')Créez
x_RecommendationDetailsà l’aide detostring(bag_pack(...))pour produire une chaîne JSON. L’encapsulation avectostring()est nécessaire, car le pipeline de données ne peut pas sérialiser des objets dynamiques au format Parquet ; la valeur doit être une chaîne de caractères. Vous pouvez également utiliserstrcat()pour créer une chaîne JSON manuellement, mais il est recommandé d’utiliserbag_pack(), car il gère l’échappement automatiquement.Incluez
x_RecommendationTypeIden tant que GUID stable pour identifier de manière unique le type de recommandation entre les exécutions.
Pour obtenir des exemples, consultez les fichiers de requête intégrés dans le code source du kit de ressources FinOps.
Envoyer des commentaires
Faites-nous savoir ce que vous pensez de notre travail avec un petit avis. Nous utilisons ces révisions pour améliorer et développer les outils et ressources FinOps.
Si vous recherchez quelque chose de spécifique, votez pour une idée existante ou créez une nouvelle idée. Partagez des idées avec d’autres personnes pour obtenir plus de votes. Nous nous concentrons sur les idées avec le plus de votes.
Contenu connexe
- Jeu de données de recommandations géré
- Comment les données sont traitées dans des hubs FinOps
- Bibliothèque de bonnes pratiques