Aanbevelingen voor FinOps-hubs configureren

FinOps-hubs verzamelen aanbevelingen uit meerdere bronnen en nemen deze op in de beheerde gegevensset Recommendations, samen met reserveringsaanbevelingen uit Cost Management-exports. Aanbevelingen worden afkomstig uit Azure Resource Graph met behulp van een configureerbare set query's die Azure Advisor aanbevelingen ophalen en verschillende optimalisatiescenario's identificeren op basis van resourceconfiguratie. Query's worden beheerd in eenvoudige JSON-bestanden in de opslag, waardoor u eenvoudig uw eigen aangepaste aanbevelingen kunt toevoegen door querybestanden te uploaden naar hubopslag.


Prerequisites

Voordat u begint, moet u het volgende hebben:

  • Een FinOps Hub-exemplaar geïmplementeerd.
  • Wijs de rol Lezer toe aan de beheerde identiteit van Data Factory voor de beheergroepen of abonnementen die u wilt opvragen. Deze machtiging moet afzonderlijk van de FinOps-hubimplementatie worden geconfigureerd.

Hoe aanbevelingen worden verwerkt

De pijplijn voor aanbevelingen wordt dagelijks uitgevoerd en verwerkt querybestanden die zijn opgeslagen in de map config/queries in de hubopslag:

  1. De queries_DailySchedule-trigger wordt één keer per dag uitgevoerd.
  2. De queries_ExecuteETL pipeline doorloopt alle querybestanden in de opslagmap config/queries.
  3. De pijplijn queries_ETL_ingestion voert elke query uit op Azure Resource Graph, ontdubbelt resultaten en slaat gegevens op als parquet in de map ingestion/Recommendations.
  4. Als u Azure Data Explorer gebruikt, worden gegevens opgenomen in de tabel Recommendations_raw en getransformeerd met behulp van de functie Recommendations_transform_v1_2().

Hubs-aanbevelingen worden gecombineerd met reserveringsaanbevelingen uit Cost Management-exports in dezelfde dataset met beheerde aanbevelingen. U kunt onderscheid maken tussen bronnen met behulp van de x_SourceType kolom.


Ingebouwde aanbevelingen

FinOps-hubs bevatten de volgende aanbevelingen. De meeste zijn standaard ingeschakeld. Optionele aanbevelingen kunnen ruis genereren voor organisaties waarvoor ze niet van toepassing zijn en kunnen worden ingeschakeld tijdens de implementatie via de opgegeven sjabloonparameter.

Compute

Databases

Beheer en bestuur

Netwerken

Storage

Web

Om een specifieke standaaraanbeveling uit te schakelen, verwijdert u het bijbehorende querybestand uit de map config/queries in de hubopslag. De pijplijn verwerkt alleen querybestanden die aanwezig zijn.


Aangepaste aanbevelingen toevoegen

U kunt aangepaste aanbevelingen toevoegen door querybestanden te uploaden naar de map configuratie/query's in hubopslag. De pijplijn haalt automatisch nieuwe querybestanden op bij de volgende dagelijkse uitvoering.

Naamgevingsconventie voor bestanden

Geef querybestanden een naam met behulp van de {dataset}-{provider}-{type}.json indeling:

  • Gegevensset : de doelgegevensset (bijvoorbeeld Recommendations).
  • Provider — De provider van de servicegegevens is bijvoorbeeld voor (bijvoorbeeld Microsoft, Contoso).
  • Type — de id van het aanbevelingstype met PascalCase (bijvoorbeeld StoppedVMs, IdleCosmosDB).

Bijvoorbeeld: Recommendations-Contoso-IdleCosmosDB.json

Querybestandsindeling

Elk querybestand is een JSON-bestand met de volgende eigenschappen:

{
  "dataset": "Recommendations",
  "provider": "Microsoft",
  "query": "<Azure Resource Graph query>",
  "queryEngine": "ResourceGraph",
  "scope": "Tenant",
  "source": "<descriptive source name>",
  "type": "<unique type identifier>",
  "version": "1.0"
}
Property Description
dataset Moet "Recommendations"zijn.
provider Providernaam (bijvoorbeeld "Microsoft").
query De Azure Resource Graph query die moet worden uitgevoerd, op één regel.
queryEngine Moet "ResourceGraph"zijn.
scope Zoekbereik. Gebruik "Tenant" dit om query's uit te voeren op alle abonnementen waar de beheerde Identiteit van Data Factory toegang toe heeft binnen de tenant. Tenantoverschrijdende query's worden niet ondersteund, maar resources die via Azure Lighthouse zijn gedelegeerd, worden meegenomen in query's met tenantbereik.
source Beschrijvende naam voor de aanbevelingsbron (bijvoorbeeld "Azure Advisor" of "FinOps hubs").
type Programmeerbare identifier voor dit aanbevelingstype. Gebruik een {provider}-{name} notatie met alleen alfanumerieke tekens en afbreekstreepjes (bijvoorbeeld "Contoso-IdleCosmosDB"). Deze waarde wordt gebruikt als onderdeel van de naam van het uitvoerbestand.
version Schemaversie. Gebruik "1.0".

Vereiste uitvoerkolommen

Uw query moet de volgende kolommen retourneren:

Kolom Description
ResourceId Resource-id (kleine letter).
ResourceName Resourcenaam (kleine letter).
SubAccountId Abonnements-id.
SubAccountName Abonnementsnaam. resourcecontainers Neem deel om dit te vullen.
x_RecommendationCategory Aanbevelingscategorie. Gebruik "Cost", "HighAvailability", , "OperationalExcellence", of "Performance""Security".
x_RecommendationDate Aanbevelingsdatum (gebruik now() voor punt-in-time-query's).
x_RecommendationDescription Korte beschrijving van het probleem.
x_RecommendationDetails JSON-tekenreeks met extra eigenschappen. Neem x_RecommendationProvider, x_RecommendationSolution, en x_RecommendationTypeIdx_ResourceType samen met eventuele aangepaste eigenschappen op die specifiek zijn voor de aanbeveling.
x_RecommendationId Unieke id voor de aanbeveling (bijvoorbeeld resource-id en achtervoegsel).
x_ResourceGroupName Naam van de resourcegroep (in kleine letters).

Tips voor het schrijven van query's

  • Om de abonnementsnaam in te vullen, voegt u resourcecontainers toe aan het einde van uw query:

    | join kind=leftouter (
        resourcecontainers
        | where type == 'microsoft.resources/subscriptions'
        | project SubAccountName=name, SubAccountId=subscriptionId
    ) on SubAccountId
    | project-away SubAccountId1
    
  • Genereer x_RecommendationId door de resource-id te combineren met een beschrijvend achtervoegsel (bijvoorbeeld strcat(tolower(id), '-idle')).

  • Bouw x_RecommendationDetails met tostring(bag_pack(...)) om een JSON-string te produceren. Verpakken met tostring() is vereist omdat de gegevenspijplijn dynamische objecten niet kan serialiseren naar Parquet. De waarde moet een tekenreeks zijn. U kunt ook strcat() gebruiken om handmatig een JSON-string samen te stellen, maar bag_pack() wordt aanbevolen omdat deze escaping automatisch afhandelt.

  • Neem x_RecommendationTypeId op als een stabiele GUID om het type aanbeveling tussen uitvoeringen uniek te identificeren.

Bekijk voor voorbeelden de ingebouwde querybestanden in de broncode van de FinOps-toolkit.


Feedback geven

Laat ons weten hoe we het doen met een korte recensie. We gebruiken deze beoordelingen om FinOps-hulpprogramma's en -resources te verbeteren en uit te breiden.

Als u op zoek bent naar iets specifieks, stem dan op een bestaande of maak een nieuw idee. Deel ideeën met anderen om meer stemmen te krijgen. We richten ons op ideeën met de meeste stemmen.