Konfigurasikan rekomendasi hub FinOps

hub FinOps mengumpulkan rekomendasi dari beberapa sumber dan memasukkannya ke dalam set data terkelola Recommendations bersama dengan rekomendasi reservasi dari ekspor Cost Management. Rekomendasi bersumber dari Azure Resource Graph menggunakan serangkaian kueri yang dapat dikonfigurasi yang menarik rekomendasi Azure Advisor dan mengidentifikasi berbagai skenario pengoptimalan berdasarkan konfigurasi sumber daya. Kueri dikelola dalam file JSON sederhana di penyimpanan, sehingga memudahkan untuk menambahkan rekomendasi kustom Anda sendiri dengan mengunggah file kueri ke penyimpanan hub.


Prerequisites

Sebelum memulai, Anda harus:

  • Telah menyebarkan instans hub FinOps.
  • Tetapkan peran Reader kepada identitas terkelola Data Factory pada grup manajemen atau langganan yang ingin Anda kueri. Izin ini harus dikonfigurasi secara terpisah dari penyebaran hub FinOps.

Bagaimana rekomendasi diproses

Alur rekomendasi berjalan setiap hari dan memproses file kueri yang disimpan di folder konfigurasi/kueri di penyimpanan hub:

  1. Pemicu queries_DailySchedule berjalan sekali per hari.
  2. Alur queries_ExecuteETL berulang melalui semua file kueri di folder penyimpanan konfigurasi/kueri .
  3. Pipeline queries_ETL_ingestion menjalankan setiap kueri pada Azure Resource Graph, menghapus duplikasi hasil, dan menyimpan data sebagai parquet di folder ingestion/Recommendations.
  4. Jika menggunakan Azure Data Explorer, data diserap ke dalam tabel Recommendations_raw dan diubah menggunakan fungsi Recommendations_transform_v1_2().

Rekomendasi hub dikombinasikan dengan rekomendasi reservasi dari ekspor Cost Management dalam himpunan data terkelola Rekomendasi yang sama. Anda dapat membedakan antara sumber menggunakan x_SourceType kolom .


Rekomendasi bawaan

Hub FinOps menyertakan rekomendasi berikut. Sebagian besar diaktifkan secara default. Rekomendasi opsional dapat menimbulkan gangguan bagi organisasi yang tidak memerlukannya dan dapat diaktifkan saat penerapan melalui parameter templat yang telah ditentukan.

Compute

Database

Manajemen dan Tata Kelola

Jaringan

Storage

Web

Untuk menonaktifkan rekomendasi default tertentu, hapus file kuerinya dari folder konfigurasi/kueri di penyimpanan hub. Alur hanya memproses file kueri yang ada.


Menambahkan rekomendasi kustom

Anda dapat menambahkan rekomendasi kustom dengan mengunggah file kueri ke folder konfigurasi/kueri di penyimpanan hub. Alur mengambil file kueri baru secara otomatis pada eksekusi harian berikutnya.

Konvensi penamaan file

Beri nama file kueri menggunakan {dataset}-{provider}-{type}.json format :

  • Himpunan data — Himpunan data target (misalnya, Recommendations).
  • Provider — Penyedia data layanan adalah untuk (misalnya, Microsoft, Contoso).
  • Jenis — Pengidentifikasi jenis rekomendasi menggunakan PascalCase (misalnya, StoppedVMs, IdleCosmosDB).

Sebagai contoh: Recommendations-Contoso-IdleCosmosDB.json

Format berkas kueri

Setiap file kueri adalah file JSON dengan properti berikut:

{
  "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 Harus berupa "Recommendations" .
provider Nama penyedia (misalnya, "Microsoft").
query Kueri Azure Resource Graph yang akan dijalankan, dalam satu baris.
queryEngine Harus berupa "ResourceGraph" .
scope Cakupan kueri. Gunakan "Tenant" untuk membuat kueri semua langganan yang dapat diakses oleh identitas terkelola Data Factory dalam tenant. Kueri lintas penyewa tidak didukung tetapi sumber daya yang didelegasikan melalui Azure Lighthouse disertakan dalam kueri cakupan penyewa.
source Nama deskriptif untuk sumber rekomendasi (misalnya, "Azure Advisor" atau "FinOps hubs").
type Pengidentifikasi terprogram untuk jenis rekomendasi ini. {provider}-{name} Gunakan format dengan karakter alfanumerik dan tanda hubung saja (misalnya, "Contoso-IdleCosmosDB"). Nilai ini digunakan sebagai bagian dari nama file output.
version Versi skema. Gunakan "1.0".

Kolom keluaran yang diperlukan

Kueri Anda harus mengembalikan kolom berikut:

Kolom Description
ResourceId ID sumber daya (huruf kecil).
ResourceName Nama sumber daya (huruf kecil).
SubAccountId ID Langganan.
SubAccountName Nama langganan. Gabungkan dengan resourcecontainers untuk mengisi bagian ini.
x_RecommendationCategory Kategori rekomendasi. Gunakan "Cost", "HighAvailability", "OperationalExcellence", "Performance", atau "Security".
x_RecommendationDate Tanggal rekomendasi (gunakan now() untuk kueri pada satu titik waktu).
x_RecommendationDescription Deskripsi singkat tentang masalah ini.
x_RecommendationDetails String JSON dengan properti tambahan. Sertakan x_RecommendationProvider, x_RecommendationSolution, x_RecommendationTypeId, dan x_ResourceType bersama dengan properti kustom apa pun khusus untuk rekomendasi.
x_RecommendationId Pengidentifikasi unik untuk rekomendasi (misalnya, ID sumber daya + akhiran).
x_ResourceGroupName Nama grup sumber daya (huruf kecil).

Tips untuk menulis kueri

  • Untuk mengisi nama langganan, gabungkan dengan resourcecontainers di akhir kueri Anda:

    | join kind=leftouter (
        resourcecontainers
        | where type == 'microsoft.resources/subscriptions'
        | project SubAccountName=name, SubAccountId=subscriptionId
    ) on SubAccountId
    | project-away SubAccountId1
    
  • Hasilkan x_RecommendationId dengan menggabungkan ID sumber daya dengan akhiran deskriptif (misalnya, strcat(tolower(id), '-idle')).

  • Buat x_RecommendationDetails menggunakan tostring(bag_pack(...)) untuk menghasilkan string JSON. Membungkus dengan tostring() diperlukan karena alur data tidak dapat menyerialkan objek dinamis ke Parquet; nilainya harus berupa string. Anda juga dapat menggunakan strcat() untuk membangun string JSON secara manual, tetapi bag_pack() disarankan karena menangani pelepasan secara otomatis.

  • Sertakan x_RecommendationTypeId sebagai GUID yang stabil untuk mengidentifikasi jenis rekomendasi secara unik di seluruh eksekusi.

Misalnya, tinjau file kueri bawaan di kode sumber toolkit FinOps.


Berikan umpan balik

Beri tahu kami bagaimana kinerja kami melalui ulasan singkat. Kami menggunakan ulasan ini untuk meningkatkan dan memperluas alat dan sumber daya FinOps.

Jika Anda mencari sesuatu yang spesifik, pilih yang sudah ada atau buat ide baru. Bagikan ide dengan orang lain untuk mendapatkan lebih banyak suara. Kami fokus pada ide-ide dengan suara terbanyak.