FinOps 樞紐會從多個來源收集建議,並將其與成本管理匯出的預留建議一同匯入 Recommendations 管理資料集 。 建議來自 Azure Resource Graph,使用可配置的查詢集,拉取 Azure Advisor 推薦,並根據資源配置識別各種優化情境。 查詢會以簡單的 JSON 檔案形式在儲存體中管理,讓你只要將查詢檔案上傳到 hub 儲存體,即可輕鬆新增你自己的自訂推薦。
先決條件
開始前,請確保您已經具備以下條件:
- 部署了一個 FinOps 中樞實例。
- 將 讀者角色指派給 Data Factory 的受控識別,範圍為您想要查詢的管理群組或訂閱。 此權限必須與 FinOps 中樞部署分開設定。
如何處理推薦內容
推薦管線每日執行,並處理儲存在 Hub 儲存體中的 config/queries 資料夾內的查詢檔案:
- queries_DailySchedule觸發器一天運行一次。
- queries_ExecuteETL 管線會遍歷 config/queries storage 資料夾中的所有查詢檔案。
- queries_ETL_ingestion 管線會對 Azure Resource Graph 執行每個查詢、將結果去除重複,並將資料以 parquet 格式儲存在 ingestion/Recommendations 資料夾中。
- 若使用 Azure Data Explorer,資料會被匯入
Recommendations_raw表格,並使用Recommendations_transform_v1_2()函式進行轉換。
Hub 的推薦與來自成本管理匯出的預留建議合併在同一 Recommendations 管理資料集中。 你可以用欄位 x_SourceType 來區分來源。
內建推薦
FinOps 中心包含以下建議。 大多數都是預設啟用的。 可選的建議在不適用的組織中可能會產生噪音,並可透過指定的範本參數在部署時啟用。
Compute
-
虛擬機器
- 解除配置已停止的虛擬機。
- 遷移到管理型硬碟。
- 可選:Use Azure Hybrid Benefit for Windows VMs。 透過選項
enableAHBRecommendations啟用。
-
SQL 虛擬機器
- 可選:SQL 虛擬機使用Azure Hybrid Benefit。 透過選項
enableAHBRecommendations啟用。
- 可選:SQL 虛擬機使用Azure Hybrid Benefit。 透過選項
-
Azure Kubernetes Service
- 可選: 使用 Spot VM 來管理 AKS 叢集。 透過選項
enableSpotRecommendations啟用。
- 可選: 使用 Spot VM 來管理 AKS 叢集。 透過選項
資料庫
- Azure SQL Database
管理及治理
- Azure Advisor
網路
- 應用程式閘道
- DDoS 保護
- ExpressRoute
- 負載平衡器
- NAT 閘道
- 網路介面
- 網路安全性群組
- 公用 IP 位址
- VPN 閘道
儲存體
網路
- 應用程式服務
要停用特定的預設建議,請從 hub 儲存的 config/queries 資料夾刪除該查詢檔案。 管線只會處理已存在的查詢檔案。
新增自訂推薦
你可以透過將查詢檔案上傳到 hub 儲存的 config/queries 資料夾來新增自訂推薦。 管線會在下次每日執行時自動偵測新的查詢檔案。
檔案命名慣例
使用以下 {dataset}-{provider}-{type}.json 格式命名查詢檔案:
-
資料集 — 目標資料集(例如,
Recommendations)。 -
Provider — 服務資料的提供者是(例如,
Microsoft,Contoso)。 -
類型 — 使用 PascalCase 的推薦類型識別碼(例如,
StoppedVMs,IdleCosmosDB)。
例如: Recommendations-Contoso-IdleCosmosDB.json
查詢檔案格式
每個查詢檔案為具有以下屬性的 JSON 檔案:
{
"dataset": "Recommendations",
"provider": "Microsoft",
"query": "<Azure Resource Graph query>",
"queryEngine": "ResourceGraph",
"scope": "Tenant",
"source": "<descriptive source name>",
"type": "<unique type identifier>",
"version": "1.0"
}
| 房產 | Description |
|---|---|
dataset |
必須是 "Recommendations"。 |
provider |
提供者名稱(例如"Microsoft")。 |
query |
要執行的 Azure Resource Graph 查詢,需以單行形式撰寫。 |
queryEngine |
必須是 "ResourceGraph"。 |
scope |
查詢範圍。 使用 "Tenant" 來查詢該租戶內 Data Factory 受控識別可存取的所有訂用帳戶。 不支援跨租戶查詢,但透過 Azure Lighthouse 委派的資源會包含在租戶範圍查詢中。 |
source |
推薦來源的描述性名稱(例如"Azure Advisor" 或 "FinOps hubs")。 |
type |
此推薦類型的程式識別碼。 使用 {provider}-{name} 僅包含字母數字和連字號的格式(例如, "Contoso-IdleCosmosDB")。 此值作為輸出檔名的一部分使用。 |
version |
結構描述版本。 請使用 "1.0"。 |
必備輸出欄位
您的查詢必須返回以下欄位:
| Column | Description |
|---|---|
ResourceId |
資源識別碼(小寫)。 |
ResourceName |
資源名稱(小寫)。 |
SubAccountId |
訂用帳戶標識碼。 |
SubAccountName |
訂用帳戶名稱。 與 resourcecontainers 結合以填入此內容。 |
x_RecommendationCategory |
推薦類別。 使用 "Cost"、 "HighAvailability"、 "OperationalExcellence"、 "Performance"或 "Security"。 |
x_RecommendationDate |
推薦日期(查詢特定時間點時,請使用 now())。 |
x_RecommendationDescription |
簡要說明問題。 |
x_RecommendationDetails |
帶有額外屬性的 JSON 字串。 包含 x_RecommendationProvider、 x_RecommendationSolution、 x_RecommendationTypeId, x_ResourceType 以及任何與建議相關的自訂屬性。 |
x_RecommendationId |
建議的唯一識別碼(例如資源識別碼 + 後綴)。 |
x_ResourceGroupName |
資源群組名稱(小寫)。 |
撰寫查詢的技巧
要填寫訂閱名稱,請在查詢末尾加入
resourcecontainers:| join kind=leftouter ( resourcecontainers | where type == 'microsoft.resources/subscriptions' | project SubAccountName=name, SubAccountId=subscriptionId ) on SubAccountId | project-away SubAccountId1透過將資源 ID 與描述性後綴(例如,
x_RecommendationId)結合來生成strcat(tolower(id), '-idle')。使用
tostring(bag_pack(...))建構x_RecommendationDetails以產生 JSON 字串。 必須以tostring()包裝,因為資料管線無法將動態物件序列化為 Parquet 格式;該值必須是字串。 你也可以使用strcat()手動建立 JSON 字串,但建議使用bag_pack(),因為它會自動處理跳脫。包含
x_RecommendationTypeId,將其作為穩定的 GUID,以便在不同執行次數之間唯一識別建議類型。
例如,請檢視 FinOps 工具包原始碼 內建的查詢檔案。
提供意見反應
請寫下您的快速評價,讓我們知道我們的表現如何。 我們會使用這些評論來改善及擴充 FinOps 工具和資源。
如果您要尋找特定專案,請投票給現有專案或建立新想法。 與其他人分享想法,以獲得更多的選票。 我們專注於擁有最多選票的想法。