Verarbeitung von Daten in FinOps-Hubs
FinOps-Hubs führen viele Datenverarbeitungsaktivitäten aus, um Daten zu bereinigen, zu normalisieren und zu optimieren. In den folgenden Abschnitten wird gezeigt, wie Daten aus Kostenverwaltung in eine Hubinstanz fließen.
Bereichseinrichtung
Ein Bereich ist eine Ebene innerhalb der Cloudressourcen- und Kontohierarchie, die Zugriff auf Kosten-, Nutzungs- und Co2-Daten bietet. Für FinOps-Hubs empfehlen wir in der Regel die Verwendung von Konzernvertrag (EA)-Abrechnungskonten oder Microsoft-Kundenvereinbarung (MCA)-Abrechnungsprofilen, jedoch reicht jeder Cloudumfang für die grundlegende Analyse aus. Das Hauptproblem besteht darin, ob Preis- und Reservierungsdaten erforderlich sind, da die Kostenverwaltung nur die Daten für EA-Abrechnungskonten und MCA-Abrechnungsprofile verfügbar macht.
FinOps-Hubs unterstützen die Konfiguration von Bereichen durch manuelle Konfiguration von Kostenverwaltungsexporten oder durch Gewähren des Zugriffs auf FinOps-Hubs zum Verwalten von Bereichen in Ihrem Auftrag. Verwaltete Bereiche werden in der Config/settings.json-Datei im Hubspeicher konfiguriert. In den Informationen wird beschrieben, was passiert, wenn in dieser Datei ein neuer verwalteter Bereich hinzugefügt wird. Nicht verwaltete Bereiche, bei denen Kostenverwaltungsexporte manuell konfiguriert werden, erfordern keine andere Einrichtung.
- Der config_SettingsUpdated Trigger wird ausgeführt, wenn die settings.json Datei aktualisiert wird.
- Die config_ConfigureExports Pipeline erstellt neue Exporte für alle neuen Bereiche, die hinzugefügt wurden.
Datenerfassung
Im Folgenden wird der End-to-End-Datenaufnahmeprozess innerhalb von FinOps-Hubs dargestellt:
- (Optional) Bei Verwendung von verwalteten Exporten:
- Die config_DailySchedule und config_MonthlySchedule Trigger laufen auf ihren jeweiligen Zeitplänen aus, um die Datenaufnahme zu starten.
- Die config_StartExportProcess Pipeline ruft die entsprechenden Exporte für den ausgeführten Zeitplan ab.
- Die config_RunExportJobs Pipeline führt jeden der ausgewählten Exporte aus.
- Kostenverwaltung exportiert Rohkostendetails in den Msexports-Container . Weitere Informationen
- Die msexports_ExecuteETL-Pipeline reiht die ETL-Pipeline (Extrahieren, Transformieren und Laden) in die Warteschlange ein, wenn dem msexports-Container Dateien hinzugefügt werden.
- Die msexports_ETL_ingestion Pipeline transformiert die Daten in das Parkettformat und verschiebt sie mithilfe einer skalierbaren Dateistruktur in den Aufnahmecontainer . Weitere Informationen
- (Optional) Bei Verwendung von Azure Data Explorer:
- Die ingestion_ExecuteETL-Pipeline reiht die Data Explorer-Erfassungspipeline in die Warteschlange ein, wenn dem ingestion-Container manifest.json-Dateien hinzugefügt werden.
- Wenn Sie benutzerdefinierte Datasets außerhalb der Cost Management-Exporte erfassen, erstellen Sie im Zielerfassungsordner eine leere manifest.json-Datei, wenn alle anderen Dateien vollständig bereit sind. (Fügen Sie diese Datei nicht hinzu, wenn Dateien noch hochgeladen werden.) Die manifest.json Datei wird nicht analysiert und kann leer sein. Der einzige Zweck besteht darin, anzugeben, dass alle Dateien für diesen Erfassungsauftrag hinzugefügt wurden.
- Die ingestion_ETL_dataExplorer-Pipeline erfasst Daten in der
{dataset}_raw
-Tabelle in Data Explorer.- Der Datasetname ist der erste Ordner im ingestion-Container.
- Alle raw-Tabellen befinden sich in der Ingestion-Datenbank in Data Explorer.
- Wenn Daten in raw-Tabellen in Data Explorer aufgenommen werden, kopiert eine Updaterichtlinie die Daten mithilfe der
{dataset}_transform_v1_0()
-Funktion in die entsprechende{dataset}_final_v1_0
-Tabelle, um alle Daten so zu normalisieren, dass sie FOCUS 1.0 entsprechen. - Nach der Erfassung führt die ingestion_ETL_dataExplorer-Pipeline einige Bereinigungen durch, einschließlich der Löschung von Daten in der endgültigen Tabelle, deren Aufbewahrungszeitraum abgelaufen ist.
- Seit Version 0.7 werden Daten von Data Explorer automatisch in raw-Tabellen aufbewahrt, die Datenaufbewahrung in endgültigen Tabellen wird jedoch nur angewendet, wenn eine Datenerfassung erfolgt. Wenn die Datenaufnahme beendet wird, werden historische Daten nicht gelöscht.
- Die Datenaufbewahrung kann während der Vorlagenbereitstellung oder manuell in der Config/settings.json Datei im Speicher konfiguriert werden.
- Die ingestion_ExecuteETL-Pipeline reiht die Data Explorer-Erfassungspipeline in die Warteschlange ein, wenn dem ingestion-Container manifest.json-Dateien hinzugefügt werden.
- Berichte und andere Tools wie Power BI lesen Daten aus Data Explorer oder dem ingestion-Container.
- In Data Explorer können Daten aus der Hub-Datenbank gelesen werden.
- Verwenden Sie die
{dataset}()
-Funktion, um das neueste Schema zu nutzen.- Dies ist nützlich für schnelle Untersuchungen, kann aber Breaking Changes verursachen, wenn die FinOps-Hubinstanz aktualisiert wird.
- Verwenden Sie die
{dataset}_v1_0()
-Funktion, um das FOCUS 1.0-Schema zu nutzen.- Versionierte Funktionsschemata sollten sich nicht im Laufe der Zeit ändern, aber Werte dürfen sich ändern, wenn die Datenquelle diese verändert.
- Die Ingestion-Datenbank sollte nicht für Abfragen verwendet werden. Dies ist zwar nicht explizit verboten, diese Datenbank sollte jedoch hauptsächlich als interner Bereich für die Staging und Datenaufbereitung angesehen werden.
- Verwenden Sie die
- Daten im Speicher können aus
ingestion/<dataset>/<year>/<month>/<scope-path>
gelesen werden.- Daten sollten rekursiv aus dem Datasetordner gelesen werden, wobei bei Bedarf weitere Ordner für eine höhere Genauigkeit eingeschlossen werden sollten.
- Dateien in jedem Datasetordner verfügen möglicherweise über unterschiedliche Schemas basierend auf der Datenquelle und dem Kontotyp. Seien Sie darauf vorbereitet, Daten zu transformieren, wenn sie in anderen Systemen wie Microsoft Fabric erfasst werden.
- Das Lesen aus dem Speicher wird im Allgemeinen aus Leistungsgründen nicht empfohlen.
- In Data Explorer können Daten aus der Hub-Datenbank gelesen werden.
Informationen zur Erfassung in Data Explorer
Wenn Daten in Data Explorer erfasst werden, finden in den jeweiligen {dataset}_transform_v1_0()
-Funktionen der Ingestion-Datenbank verschiedene Transformationen statt. Jedes Dataset verfügt über einen anderen Satz von Transformationsregeln, die in den folgenden Abschnitten behandelt werden.
Eine Liste der angeforderten Änderungen, in Betracht gezogener Ideen und offenen Fragen zu den zugrunde liegenden Cost Management-Datasets finden Sie in Issue Nr. 1111. Bitte hinterlassen Sie Kommentare zu diesem Problem, wenn Sie Möglichkeiten finden, zusätzliche Bedenken zu beheben oder Ihre Unterstützung für alle spezifischen Probleme zu äußern.
Transformationen von Kostendaten
Unterstützte Datensätze:
- Microsoft FocusCost:
1.0r2
,1.0
,1.0-preview(v1)
Die folgenden Datasets wurden im Design berücksichtigt, wurden jedoch nicht getestet. Um diese Datasets zu erfassen, erstellen Sie eine Datenpipeline (oder einen externen Prozess), die (bzw. der) die Parquet-Dateien in den ingestion/Costs/yyyy/mm/{scope-path}
-Ordner im Speicher verschiebt. {scope-path}
kann ein beliebiger eindeutiger Pfad wie aws/123
oder gcp/projects/foo
sein. Die einzige Anforderung besteht darin, sicherzustellen, dass sich jeder Bereich in einem separaten Ordner befindet. Erstellen Sie nach dem Kopieren externer Inhalte auch eine manifest.json-Datei, um die Erfassung in Data Explorer auszulösen.
- AWS FOCUS 1.0
- GCP FOCUS 1.0
- OCI FOCUS 1.0
Transformationen:
- Richten Sie die Spaltennamen an FOCUS 1.0 aus.
- Enthält die Konvertierung der FOCUS 1.0-Vorschau auf 1.0.
- Fügen Sie
x_IngestionTime
hinzu, um anzugeben, wann die Zeile zuletzt aktualisiert wurde. - Fügen Sie
x_SourceChanges
hinzu, um zu ermitteln, wann die Daten in einer Zeile in den Hubs geändert wurden. - Aktualisieren Sie
ProviderName
undPublisherName
, wenn sie nicht angegeben sind. - Fügen Sie
x_SourceName
,x_SourceProvider
,x_SourceType
undx_SourceVersion
hinzu, um das ursprünglich erfasste Dataset zu ermitteln. - Füllen Sie die fehlenden
ListCost
-,ListUnitPrice
-,ContractedCost
- undContractedUnitPrice
-Werte auf Basis des Preisblatts auf.- Bei diesem Prozess müssen die Preise vor den Kosten exportiert werden. Dies kann dazu führen, dass die Preise für den ersten Tag des Monats fehlen, bis die Preise erfasst werden.
- Beheben Sie
ContractedCost
, wenn sie aufgrund eines Fehlers in der Kostenverwaltung falsch festgelegt wurde. - Setzen Sie
ResourceName
undx_ResourceGroupName
in Kleinbuchstaben, um Probleme mit der Einheitlichkeit von Groß- und Kleinschreibung zu beheben, die das Gruppieren und Filtern beeinträchtigen. - Fügen Sie
x_BillingAccountAgreement
basierend auf dem Kontotyp hinzu.
Transformationen von Preisdaten
Unterstützte Datensätze:
- Microsoft PriceSheet:
2023-05-01
(EA und MCA)
Transformationen:
- Richten Sie die Spaltennamen an FOCUS 1.0 aus.
- Umfasst die Erzwingung der Einheitlichkeit von EA- und MCA-Spaltennamen.
- Ändert nicht die zugrunde liegenden Werte, die sich zwischen EA und MCA unterscheiden können.
- Konvertieren Sie die ISO-Dauer von
x_SkuTerm
in Monate, sodass sie den Kostendetails entspricht.- Wir warten darauf, dass FOCUS bestimmt, wie die Dauer definiert wird, bevor wir dies in das ISO-Format oder ein anderes Format ändern.
- Ersetzen Sie
ContractedUnitPrice
für die Nutzung des Sparplans durch das On-Demand-Äquivalent. - Setzen Sie
ListUnitPrice
für das Sparplanverbrauchsset auf das On-Demand-Äquivalent fest. - Fügen Sie
SkuPriceIdv2
als genauerenSkuPriceId
-Wert als den hinzu, der derzeit in den Kostendetails enthalten ist. - Fügen Sie
x_IngestionTime
hinzu, um anzugeben, wann die Zeile zuletzt aktualisiert wurde. - Fügen Sie
x_CommitmentDiscountSpendEligibility
undx_CommitmentDiscountUsageEligibility
hinzu. - Teilen Sie
x_PricingUnitDescription
inPricingUnit
undx_PricingBlockSize
auf. - Fügen Sie
x_BillingAccountAgreement
basierend auf dem Kontotyp hinzu. - Ändern Sie
x_EffectivePeriodEnd
zu einem exklusiven Enddatum. - Fügen Sie
x_EffectiveUnitPriceDiscount
,x_ContractedUnitPriceDiscount
undx_TotalUnitPriceDiscount
hinzu, um verfügbare Rabatte pro SKU zusammenzufassen. - Fügen Sie
x_EffectiveUnitPriceDiscountPercent
,x_ContractedUnitPriceDiscountPercent
undx_TotalUnitPriceDiscountPercent
hinzu, um den Prozentsatz des Rabatts pro SKU zusammenzufassen. - Fügen Sie
x_SourceName
,x_SourceProvider
,x_SourceType
undx_SourceVersion
hinzu, um das ursprünglich erfasste Dataset zu ermitteln.
Transformationen von Empfehlungsdaten
Unterstützte Datasets:
- Microsoft ReservationRecommendations:
2023-05-01
(EA und MCA)
Transformationen:
- Richten Sie die Spaltennamen an FOCUS 1.0 aus.
- Umfasst die Erzwingung der Einheitlichkeit von EA- und MCA-Spaltennamen.
- Ändert nicht die zugrunde liegenden Werte, die sich bei EA und MCA unterscheiden können.
- Fügen Sie
x_SourceName
,x_SourceProvider
,x_SourceType
undx_SourceVersion
hinzu, um das ursprünglich erfasste Dataset zu ermitteln.
Transformationen von Transaktionsdaten
Unterstützte Datasets:
- Microsoft ReservationTransactions:
2023-05-01
(EA und MCA)
Transformationen:
- Richten Sie die Spaltennamen an FOCUS 1.0 aus.
- Umfasst die Erzwingung der Einheitlichkeit von EA- und MCA-Spaltennamen.
- Ändert nicht die zugrunde liegenden Werte, die sich zwischen EA und MCA unterscheiden können.
- Fügen Sie
x_SourceName
,x_SourceProvider
,x_SourceType
undx_SourceVersion
hinzu, um das ursprünglich erfasste Dataset zu ermitteln.
Transformation von Verpflichtungsrabattnutzungsdaten
Unterstützte Datasets:
- Microsoft ReservationDetails:
2023-03-01
(EA und MCA)
Transformationen:
- Richten Sie die Spaltennamen an FOCUS 1.0 aus.
- Umfasst die Erzwingung der Einheitlichkeit von EA- und MCA-Spaltennamen.
- Ändert nicht die zugrunde liegenden Werte, die je nach EA und MCA unterschiedlich sein können.
- Fügen Sie die
ResourceType
-Spalte mit dem Anzeigenamen des Ressourcentyps hinzu. - Fügen Sie Spalten
ServiceName
,ServiceCategory
undx_ServiceModel
hinzu. - Ersetzen Sie „NA“ für
x_CommitmentDiscountNormalizedGroup
durch NULL. - Fügen Sie
x_CommitmentDiscountQuantity
basierend auf FOCUS 1.1 hinzu.
Informationen zum Erfassungscontainer
FinOps-Hubs basieren auf einem bestimmten Format für Ordnerpfade und Dateinamen im ingestion-Speichercontainer.
ingestion/{dataset}/{date-folder-path}/{scope-id-path}/{ingestion-id}__{original-file-name}.parquet
ingestion
ist der Container, in dem die Datenpipeline Daten speichert.{dataset}
ist der exportierte Datasettyp. Bei der Erfassung in Azure Data Explorer muss eine entsprechende „_raw“-Tabelle vorliegen, bei deren Name die Groß-/Kleinschreibung beachtet wird (z. B. „Costs_raw“). FinOps-Hubs unterstützen die folgenden Datasets in dieser Version:- CommitmentDiscountUsage: Export von Cost Management-Reservierungsdetails.
- Kosten – FOCUS-Kosten- und Nutzungsdaten.
- Prices: Export des Cost Management-Preisblatts.
- Recommendations: Export von Cost Management-Reservierungsempfehlungen.
- Transactions: Export von Cost Management-Reservierungstransaktionen.
- Um benutzerdefinierte Datasets zu erfassen, erstellen Sie eine entsprechende
{dataset}_raw
-Tabelle und Parquet-Erfassungszuordnung in der Ingestion-Datenbank.
{date-folder-path}
kann aus einem oder mehreren Verzeichnissen bestehen, die angeben, wie viele ingestierte Datensätze aufbewahrt werden sollen. Beispieleall
(oder ein beliebiger Platzhalter), um den Verlauf des Datasets nicht nachzuverfolgen. Bei jeder Erfassung werden die vorherigen Daten ersetzt. In speicherbasierten Power BI-Berichten wird dies nicht unterstützt.{yyyy}
als vierstellige Jahreszahl des exportierten Datasets, damit pro Jahr nur die neueste Erfassung aufbewahrt wird. In speicherbasierten Power BI-Berichten wird dies nicht unterstützt.{yyyy}/{mm}
als vierstellige Jahreszahl und zweistelliger Monat des exportierten Datasets, damit pro Monat nur die aktuelle Erfassung aufbewahrt wird.{yyyy}/{mm}/{dd}
als vierstellige Jahreszahl, zweistelliger Monat und zweistelliger Tag des exportierten Datasets, damit pro Tag nur die aktuelle Erfassung aufbewahrt wird. In speicherbasierten Power BI-Berichten wird dies nicht unterstützt.
{scope-id-path}
ist die vollqualifizierte Ressourcen-ID des Bereichs, aus dem die Daten stammen. Wenn Nicht-Azure-Daten aufgenommen werden, empfehlen wir die Verwendung einer logischen Hierarchie basierend auf dem Umfang der Daten (z. B. "aws/{account-id}", "gcp/{project-name}", "oci/{component-id}/{component-id}").{ingestion-id}
ist eine eindeutige ID für den aufgenommenen Datensatz. Dabei kann es sich um eine GUID, einen Zeitstempel oder einen beliebigen Wert handeln, sofern er für alle Dateien des importierten Datensatzes konsistent ist. Dieser Wert wird verwendet, um zuvor aufgenommene Daten im selben Ordnerpfad zu entfernen.{original-file-name}
ist der ursprüngliche Dateiname oder ein anderer Bezeichner, der angibt, wo die Daten in der Datei stammen. Dieser Wert dient nur zu Zwecken der Problembehandlung.
Der vollständige Ordnerpfad und die Erfassungs-ID werden beide verwendet, um sicherzustellen, dass Daten nicht im Speicher oder im Azure-Daten-Explorer dupliziert werden. Der ursprüngliche Dateiname wird für Problembehandlungszwecke zu Azure Data Explorer-Shards hinzugefügt, aber nicht anderweitig von FinOps-Hubs nachverfolgt oder verwendet.
Wenn Sie Hubs für die Überwachung von Nicht-Azure-Daten verwenden müssen, konvertieren Sie die Daten in FOCUS, und legen Sie sie gemäß der obigen Anleitung im Ingestion-Container ab. Bitte beachten Sie, dass dies in der neuesten Version nicht explizit getestet wurde. Wenn Probleme auftreten, erstellen Sie ein Issue.
Informationen zu Exporten
FinOps Hubs nutzen Kostenmanagementexporte, um Kostendaten zu erhalten. Cost Management steuert die Ordnerstruktur der exportierten Daten im msexports-Speichercontainer. Ein typischer Pfad sieht wie folgt aus:
{container}/{path}/{date-range}/{export-name}/{export-time}/{guid}/{file}
FinOps-Hubs verwenden die Manifestdatei, um den Bereich, das Dataset, den Monat usw. zu ermitteln. Der einzige für Hubs wichtige Pfadteil ist der Container, der msexportslauten muss.
Warnung
Exportieren Sie keine Daten in den ingestion-Container. Exportierte CSVs müssen im Msexports-Container veröffentlicht werden, damit sie vom Hubmodul verarbeitet werden.
Um benutzerdefinierte Daten aufzunehmen, speichern Sie FOCUS-ausgerichtete Parkettdateien im Aufnahmecontainer für das FinOps-Toolkit Power BI-Berichte so, dass sie wie erwartet funktionieren.
Exportmanifeste können sich mit API-Versionen ändern. Hier ist ein Beispiel mit API-Version 2023-07-01-preview
:
{
"exportConfig": {
"exportName": "<export-name>",
"resourceId": "/<scope>/providers/Microsoft.CostManagement/exports/<export-name>",
"dataVersion": "<dataset-version>",
"apiVersion": "<api-version>",
"type": "<dataset-type>",
"timeFrame": "OneTime|TheLastMonth|MonthToDate",
"granularity": "Daily"
},
"deliveryConfig": {
"partitionData": true,
"dataOverwriteBehavior": "CreateNewReport|OverwritePreviousReport",
"fileFormat": "Csv",
"containerUri": "<storage-resource-id>",
"rootFolderPath": "<path>"
},
"runInfo": {
"executionType": "Scheduled",
"submittedTime": "2024-02-03T18:33:03.1032074Z",
"runId": "af754a8e-30fc-4ef3-bfc6-71bd1efb8598",
"startDate": "2024-01-01T00:00:00",
"endDate": "2024-01-31T00:00:00"
},
"blobs": [
{
"blobName": "<path>/<export-name>/<date-range>/<export-time>/<guid>/<file-name>.csv",
"byteCount": ###
}
]
}
FinOps-Hubs nutzen die folgenden Eigenschaften:
eportConfig.resourceId
um den Bereich zu identifizieren.eportConfig.type
um den Datasettyp zu identifizieren.eportConfig.dataVersion
um die Datasetversion zu identifizieren.runInfo.startDate
um den exportierten Monat zu identifizieren.
FinOps-Hubs unterstützen die folgenden Datasettypen, Versionen und API-Versionen:
- FocusCost:
1.0r2
,1.0
,1.0-preview(v1)
- PriceSheet:
2023-05-01
- Reservierungsdetails:
2023-03-01
- ReservationRecommendations:
2023-05-01
- ReservationTransactions:
2023-05-01
- API-Versionen:
2023-07-01-preview
FinOps Hubs v0.6
In den folgenden Abschnitten wird der Datenprozess in FinOps Hubs 0.6 erläutert.
Bereichssetup in v0.6
Die folgenden Schritte werden ausgeführt, wenn einer Hubinstanz ein neuer verwalteter Bereich hinzugefügt wird. Nicht verwaltete Bereiche (bei denen Kostenverwaltungsexporte manuell konfiguriert werden) erfordern keine Einrichtung in Hubs.
- Der config_SettingsUpdated Trigger wird ausgeführt, wenn die settings.json Datei aktualisiert wird.
- Die config_ConfigureExports Pipeline erstellt neue Exporte für alle neuen Bereiche, die hinzugefügt wurden.
Datenübernahme in v0.6
Die Datenaufnahme kann in zwei Teile unterteilt werden:
- Exportiert Pushdaten in den Speicher.
- Hubs verarbeitet und erfasst Daten.
Für verwaltete Bereiche führen Hubs die folgenden Schritte aus:
- Die config_DailySchedule und config_MonthlySchedule Trigger laufen auf ihren jeweiligen Zeitplänen aus, um die Datenaufnahme zu starten.
- Die config_StartExportProcess Pipeline ruft die entsprechenden Exporte für den ausgeführten Zeitplan ab.
- Die config_RunExportJobs Pipeline führt jeden der ausgewählten Exporte aus.
- Kostenverwaltung exportiert Rohkostendetails in den Msexports-Container . Weitere Informationen
- Die msexports_ExecuteETL-Pipeline reiht die ETL-Pipeline (Extrahieren, Transformieren und Laden) in die Warteschlange ein, wenn dem msexports-Container Dateien hinzugefügt werden.
- Die msexports_ETL_ingestion Pipeline transformiert die Daten in das Parkettformat und verschiebt sie mithilfe einer skalierbaren Dateistruktur in den Aufnahmecontainer . Weitere Informationen
- Power BI oder andere Tools lesen Daten aus dem Aufnahmecontainer .
Hinweis
Power BI-Unterstützung für Azure Data Explorer wird in einem zukünftigen Update bereitgestellt.
Nachdem Exporte ausgeführt wurden, unabhängig davon, ob verwaltet oder nicht verwaltet, führen Hubs die folgenden Schritte aus:
- Die msexports_ExecuteETL Pipeline startet den ETL-Prozess (Extract-Transform-Load), wenn Dateien zum Speicher hinzugefügt werden.
- Die msexports_ETL_ingestion Pipeline transformiert die Daten in das Parkettformat und verschiebt sie mithilfe einer skalierbaren Dateistruktur in den Aufnahmecontainer . Weitere Informationen
- Power BI oder andere Tools lesen Daten aus dem Aufnahmecontainer .
Informationen zur Erfassung in v0.6
FinOps-Hubs basieren auf einem bestimmten Format für Ordnerpfade und Dateinamen im ingestion-Container.
ingestion/{dataset}/{date-folder-path}/{scope-id-path}/{ingestion-id}__{original-file-name}.parquet
ingestion
ist der Container, in dem die Datenpipeline Daten speichert.{dataset}
ist der exportierte Datasettyp. Bei der Erfassung in Azure Data Explorer muss eine entsprechende „_raw“-Tabelle vorliegen, bei deren Name die Groß-/Kleinschreibung beachtet wird (z. B. „Costs_raw“). FinOps-Hubs unterstützen die folgenden Datasets in dieser Version:- CommitmentDiscountUsage: Export von Cost Management-Reservierungsdetails.
- Costs: FOCUS-Kosten- und -Nutzungsdaten.
- Prices: Export des Cost Management-Preisblatts.
- Recommendations: Export von Cost Management-Reservierungsempfehlungen.
- Transactions: Export von Cost Management-Reservierungstransaktionen.
- Um benutzerdefinierte Datasets zu erfassen, erstellen Sie eine entsprechende
{dataset}_raw
-Tabelle und Parquet-Erfassungszuordnung in der Ingestion-Datenbank.
{date-folder-path}
kann einen oder mehrere Ordner umfassen, die angeben, wie viele aufgenommene Datensätze aufbewahrt werden sollen. Beispiele:all
(oder ein beliebiger Platzhalter), um den Verlauf des Datasets nicht nachzuverfolgen. Bei jeder Erfassung werden die vorherigen Daten ersetzt. In speicherbasierten Power BI-Berichten wird dies nicht unterstützt.{yyyy}
als vierstellige Jahreszahl des exportierten Datasets, damit pro Jahr nur die neueste Erfassung aufbewahrt wird. In speicherbasierten Power BI-Berichten wird dies nicht unterstützt.{yyyy}/{mm}
als vierstellige Jahreszahl und zweistelliger Monat des exportierten Datasets, damit pro Monat nur die aktuelle Erfassung aufbewahrt wird.{yyyy}/{mm}/{dd}
als vierstellige Jahreszahl, zweistelliger Monat und zweistelliger Tag des exportierten Datasets, damit pro Tag nur die aktuelle Erfassung aufbewahrt wird. Nicht unterstützt in speicherbasierten Power BI-Berichten.
{scope-id-path}
ist die vollqualifizierte Ressourcen-ID des Bereichs, aus dem die Daten stammen. Wenn Nicht-Azure-Daten aufgenommen werden, empfehlen wir die Verwendung einer logischen Hierarchie basierend auf dem Umfang der Daten (z. B. "aws/{account-id}", "gcp/{project-name}", "oci/{component-id}/{component-id}").{ingestion-id}
ist eine eindeutige ID für den aufgenommenen Datensatz. Dabei kann es sich um eine GUID, einen Zeitstempel oder einen beliebigen Wert handeln, sofern er für alle Dateien des importierten Datensatzes konsistent ist. Dieser Wert wird verwendet, um zuvor aufgenommene Daten im selben Ordnerpfad zu entfernen.{original-file-name}
ist der ursprüngliche Dateiname oder ein anderer Bezeichner, der angibt, wo die Daten in der Datei stammen. Dieser Wert dient nur Ihren Problemlösungszwecken.
Der vollständige Ordnerpfad und die Erfassungs-ID werden beide verwendet, um sicherzustellen, dass Daten nicht im Speicher oder im Azure-Daten-Explorer dupliziert werden. Der ursprüngliche Dateiname wird für Problembehandlungszwecke zu Azure Data Explorer-Shards hinzugefügt, aber nicht anderweitig von FinOps-Hubs nachverfolgt oder verwendet.
Wenn Sie Hubs für die Überwachung von Nicht-Azure-Daten verwenden müssen, konvertieren Sie die Daten in FOCUS, und legen Sie sie gemäß der obigen Anleitung im Ingestion-Container ab. Bitte beachten Sie, dass dies in der neuesten Version nicht explizit getestet wurde. Wenn Probleme auftreten, erstellen Sie ein Issue.
Informationen zu Exporten in v0.6
FinOps-Hubs verwenden Kostenverwaltungsexporte, um Kostendaten zu erhalten. Die Kostenverwaltung steuert die Ordnerstruktur für die exportierten Daten im Msexports-Container . Ein typischer Pfad sieht wie folgt aus:
{container}/{path}/{date-range}/{export-name}/{export-time}/{guid}/{file}
Ab 0.4 verlassen sich FinOps-Hubs nicht auf Dateipfade. Hubs verwenden die Manifestdatei, um den Bereich, das Dataset, den Monat usw. zu identifizieren. Der einzige wichtige Teil des Pfads für Hubs ist der Container, der msexports sein muss.
Warnung
- Exportieren Sie keine Daten in den Aufnahmecontainer . Exportierte CSVs müssen im Msexports-Container veröffentlicht werden, damit sie vom Hubmodul verarbeitet werden.
- Um benutzerdefinierte Daten aufzunehmen, speichern Sie FOCUS-ausgerichtete Parkettdateien im Aufnahmecontainer für das FinOps-Toolkit Power BI-Berichte so, dass sie wie erwartet funktionieren.
Exportmanifeste können sich mit API-Versionen ändern. Hier ist ein Beispiel mit API-Version 2023-07-01-preview
:
{
"exportConfig": {
"exportName": "<export-name>",
"resourceId": "/<scope>/providers/Microsoft.CostManagement/exports/<export-name>",
"dataVersion": "<dataset-version>",
"apiVersion": "<api-version>",
"type": "<dataset-type>",
"timeFrame": "OneTime|TheLastMonth|MonthToDate",
"granularity": "Daily"
},
"deliveryConfig": {
"partitionData": true,
"dataOverwriteBehavior": "CreateNewReport|OverwritePreviousReport",
"fileFormat": "Csv",
"containerUri": "<storage-resource-id>",
"rootFolderPath": "<path>"
},
"runInfo": {
"executionType": "Scheduled",
"submittedTime": "2024-02-03T18:33:03.1032074Z",
"runId": "af754a8e-30fc-4ef3-bfc6-71bd1efb8598",
"startDate": "2024-01-01T00:00:00",
"endDate": "2024-01-31T00:00:00"
},
"blobs": [
{
"blobName": "<path>/<export-name>/<date-range>/<export-time>/<guid>/<file-name>.<file-type>",
"byteCount": ###
}
]
}
FinOps-Hubs verwenden die folgenden Eigenschaften:
exportConfig.resourceId
um den Bereich zu identifizieren.exportConfig.type
um den Datasettyp zu identifizieren.exportConfig.dataVersion
um die Datasetversion zu identifizieren.runInfo.startDate
um den exportierten Monat zu identifizieren.
FinOps-Hubs unterstützen die folgenden Datasettypen, Versionen und API-Versionen:
- FocusCost:
1.0
,1.0-preview(v1)
- PriceSheet:
2023-05-01
- Reservierungsdetails:
2023-03-01
- ReservationRecommendations:
2023-05-01
- ReservationTransactions:
2023-05-01
- API-Versionen:
2023-07-01-preview
FinOps Hubs v0.4-0.5
Die folgenden Informationen beschreiben, wie Daten in FinOps Hubs v0.4 und v0.5 verarbeitet werden.
Bereichssetup in v0.4-0.5
- Der config_SettingsUpdated Trigger wird ausgeführt, wenn die settings.json Datei aktualisiert wird.
- Die config_ConfigureExports Pipeline erstellt neue Exporte für alle neuen Bereiche, die hinzugefügt wurden.
Datenaufnahme in v0.4-0.5
Für verwaltete Bereiche:
- Die config_DailySchedule und config_MonthlySchedule Trigger laufen auf ihren jeweiligen Zeitplänen aus, um die Datenaufnahme zu starten.
- Die config_ExportData Pipeline ruft die entsprechenden Exporte für den ausgeführten Zeitplan ab.
- Die config_RunExports Pipeline führt jeden der ausgewählten Exporte aus.
- Kostenverwaltung exportiert Rohkostendetails in den Msexports-Container . Weitere Informationen finden Sie unter "Informationen zu Exporten" in v04-05.
Nach Abschluss der Exporte für verwaltete und nicht verwaltete Bereiche:
- Die msexports_ExecuteETL Pipeline startet den ETL-Prozess (Extract-Transform-Load), wenn Dateien zum Speicher hinzugefügt werden.
- Die msexports_ETL_ingestion Pipeline transformiert die Daten in ein Standardschema und speichert die Rohdaten im Parkettformat im Aufnahmecontainer . Weitere Informationen finden Sie unter "Informationen zur Aufnahme in v04-05".
- Power BI liest Kostendaten aus dem Aufnahmecontainer vor.
Informationen zur Aufnahme in v0.4-0.5
FinOps-Hubs basieren auf einem bestimmten Ordnerpfad im Aufnahmecontainer :
ingestion/{dataset}/{yyyy}/{mm}/{scope-id}
ingestion
ist der Container, in dem die Datenpipeline Daten speichert.{dataset}
ist der exportierte Datasettyp.{month}
ist das Jahr und der Monat der exportierten Daten, die alsyyyyMM
formatiert sind.{scope-id}
es wird erwartet, dass es sich um die vollqualifizierte Ressourcen-ID des Bereichs handelt, von dem die Daten stammen.
Wenn Sie Hubs verwenden müssen, um Nicht-Azure-Daten zu überwachen, konvertieren Sie die Daten in FOCUS , und legen Sie sie in den Aufnahmecontainer ab. Dieser Prozess wurde in der neuesten Version nicht explizit getestet. Wenn Probleme auftreten, erstellen Sie ein Problem.
Informationen zu Exporten in v0.4-0.5
FinOps-Hubs verwenden Kostenverwaltungsexporte, um Kostendaten zu erhalten. Die Kostenverwaltung steuert die Ordnerstruktur für die exportierten Daten im Msexports-Container . Ein typischer Pfad sieht wie folgt aus:
{container}/{path}/{date-range}/{export-name}/{export-time}/{guid}/{file}
Ab 0.4 verlassen sich FinOps-Hubs nicht auf Dateipfade. Hubs verwenden die Manifestdatei, um den Bereich, das Dataset, den Monat usw. zu identifizieren. Der einzige wichtige Teil des Pfads für Hubs ist der Container, der msexports sein muss.
Hinweis
Exportieren Sie keine Daten in den Aufnahmecontainer . Exportierte CSVs müssen im Msexports-Container veröffentlicht werden, damit sie vom Hubmodul verarbeitet werden.
Um benutzerdefinierte Daten aufzunehmen, speichern Sie FOCUS-ausgerichtete Parkettdateien im Aufnahmecontainer für das FinOps-Toolkit Power BI-Berichte so, dass sie wie erwartet funktionieren.
Exportmanifeste können sich mit API-Versionen ändern. Hier ist ein Beispiel mit API-Version 2023-07-01-preview
:
{
"exportConfig": {
"exportName": "<export-name>",
"resourceId": "/<scope>/providers/Microsoft.CostManagement/exports/<export-name>",
"dataVersion": "<dataset-version>",
"apiVersion": "<api-version>",
"type": "<dataset-type>",
"timeFrame": "OneTime|TheLastMonth|MonthToDate",
"granularity": "Daily"
},
"deliveryConfig": {
"partitionData": true,
"dataOverwriteBehavior": "CreateNewReport|OverwritePreviousReport",
"fileFormat": "Csv",
"containerUri": "<storage-resource-id>",
"rootFolderPath": "<path>"
},
"runInfo": {
"executionType": "Scheduled",
"submittedTime": "2024-02-03T18:33:03.1032074Z",
"runId": "af754a8e-30fc-4ef3-bfc6-71bd1efb8598",
"startDate": "2024-01-01T00:00:00",
"endDate": "2024-01-31T00:00:00"
},
"blobs": [
{
"blobName": "<path>/<export-name>/<date-range>/<export-time>/<guid>/<file-name>.csv",
"byteCount": ###
}
]
}
FinOps-Hubs verwenden die folgenden Eigenschaften:
exportConfig.resourceId
um den Bereich zu identifizieren.exportConfig.type
um den Datasettyp zu identifizieren.exportConfig.dataVersion
um die Datasetversion zu identifizieren.runInfo.startDate
um den exportierten Monat zu identifizieren.
FinOps-Hubs unterstützen die folgenden Datasettypen, Versionen und API-Versionen:
- FocusCost:
1.0
,1.0-preview(v1)
- PriceSheet:
2023-05-01
- Reservierungsdetails:
2023-03-01
- ReservationRecommendations:
2023-05-01
- ReservationTransactions:
2023-05-01
- API-Versionen:
2023-07-01-preview
FinOps Hubs v0.2-0.3
In den folgenden Schritten wird der Prozess zum Exportieren und Verarbeiten von Kostendaten mithilfe der FinOps Hubs-Versionen 0.2-0.3 beschrieben:
- Kostenverwaltung exportiert Rohkostendetails in den Msexports-Container .
- Die msexports_ExecuteETL Pipeline startet den ETL-Prozess (Extract-Transform-Load), wenn Dateien zum Speicher hinzugefügt werden.
- Die msexports_ETL_ingestion Pipeline speichert exportierte Daten im Parkettformat im Aufnahmebehälter .
- Power BI liest Kostendaten aus dem Aufnahmecontainer vor.
FinOps Hubs 0.2-0.3 verwenden den Exportpfad, um den exportierten Bereich und monat zu bestimmen. Dieser Punkt ist wichtig, da Aktualisierungen des Pfads die Datenpipelinen unterbrechen können. Um dieses Problem zu vermeiden, empfehlen wir, auf FinOps Hubs 0.4 zu aktualisieren. Der erwartete Pfad sollte imitieren:
msexports/{scope-id}/{export-name}/{date-range}/{export-time}/{guid}/{file}
msexports
ist der im Export angegebene Container.{scope-id}
ist der im Export angegebene Ordnerpfad.Hubs 0.3 und früher verwenden diese, um zu ermitteln, aus welchem Bereich die Daten stammen. Es wird empfohlen, die Bereichs-ID zu verwenden, aber jeder Wert kann verwendet werden. Beispiele für Bereichs-IDs:
Bereichstyp Beispielswert Subscription /subscriptions/###
Resource group /subscriptions/###/resourceGroups/###
Abrechnungskonto /providers/Microsoft.Billing/billingAccounts/###
Abrechnungsprofil /providers/Microsoft.Billing/billingAccounts/###/billingProfiles/###
{export-name}
ist der Name des Exports.Hubs ignorieren diesen Ordner.
{date-range}
ist die Datumsbereichsdaten, die exportiert werden.Hubs 0.3 und früher verwenden diese, um den Monat zu identifizieren. Format für diesen Ordner ist
yyyyMMdd-yyyyMMdd
. Hubs 0.4 verwendet stattdessen das Manifest.{export-time}
ist ein Zeitstempel des Zeitpunkts, zu dem der Export ausgeführt wurde.Hubs ignorieren dies. Format für diesen Ordner ist
yyyyMMddHHmm
.{guid}
ist eine eindeutige GUID und ist nicht immer vorhanden.Hubs ignorieren dies. Die Kostenverwaltung enthält diesen Ordner nicht immer. Ob sie enthalten ist, hängt von der API-Version ab, die zum Erstellen des Exports verwendet wird.
{file}
ist entweder ein Manifest oder exportierte Daten.Version 0.3 und früher ignorieren Manifestdateien und überwachen nur *.csv Dateien. In einer zukünftigen Version überwachen Hubs das Manifest.
FinOps Hubs v0.1
Die folgenden Schritte beschreiben den Prozess zum Exportieren und Verarbeiten von Kostendaten mithilfe von FinOps Hubs Version 0.1:
- Kostenverwaltung exportiert Rohkostendetails in den Msexports-Container .
- Die msexports_transform Pipeline speichert die Rohdaten im Parkettformat im Aufnahmebehälter .
- Power BI liest Kostendaten aus dem Aufnahmecontainer vor.