Bagikan melalui


Pemberitahuan surel untuk penyetelan otomatis

Berlaku untuk:Azure SQL DatabaseAzure SQL Managed Instance

Rekomendasi penyetelan Azure SQL Database dihasilkan oleh setelan otomatis Azure SQL Database. Solusi ini terus memantau dan menganalisis beban kerja database yang menyediakan rekomendasi penyetelan yang dikustomisasi untuk setiap database terkait pembuatan indeks, penghapusan indeks, dan pengoptimalan rencana eksekusi kueri.

Rekomendasi penyetelan otomatis Azure SQL Database dapat dilihat di portal Microsoft Azure, diambil dengan panggilan REST API, atau dengan menggunakan perintah T-SQL dan PowerShell. Artikel ini didasarkan pada penggunaan skrip PowerShell untuk mengambil rekomendasi penyetelan otomatis.

Catatan

Artikel ini menggunakan modul Azure Az PowerShell, yang merupakan modul PowerShell yang direkomendasikan untuk berinteraksi dengan Azure. Untuk mulai menggunakan modul Az PowerShell, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Penting

Modul PowerShell Azure Resource Manager (AzureRM) tidak digunakan lagi pada 29 Februari 2024. Semua pengembangan di masa mendatang harus menggunakan modul Az.Sql. Pengguna disarankan untuk bermigrasi dari AzureRM ke modul Az PowerShell untuk memastikan dukungan dan pembaruan yang berkelanjutan. Modul AzureRM tidak lagi dipertahankan atau didukung. Argumen untuk perintah dalam modul Az PowerShell dan dalam modul AzureRM secara substansial identik. Untuk informasi selengkapnya tentang kompatibilitasnya, lihat Memperkenalkan modul Az PowerShell baru.

Mengotomatisasi pemberitahuan surel untuk rekomendasi penyetelan otomatis

Solusi berikut mengotomatisasi pengiriman notifikasi email yang berisi rekomendasi penyetelan otomatis. Solusi yang dijelaskan terdiri dari mengotomatisasi eksekusi skrip PowerShell untuk mengambil rekomendasi penyetelan menggunakan Azure Automation, dan otomatisasi penjadwalan pengiriman surel menggunakan Microsoft Power Automate.

Buat Akun Azure Automation

Untuk menggunakan Azure Automation, langkah pertama adalah membuat akun Azure Automation dan mengonfigurasinya dengan sumber daya Azure untuk mengeksekusi skrip PowerShell. Untuk mempelajari selengkapnya tentang Azure Automation dan kemampuannya, lihat Mulai menggunakan Azure Automation.

Ikuti langkah-langkah ini untuk membuat Akun Azure Automation dengan cara memilih dan mengonfigurasi aplikasi Otomatisasi dari Azure Marketplace:

  1. Masuk ke portal Microsoft Azure.

  2. Pilih + Buat sumber daya di menu sumber daya.

  3. Cari Automation.

  4. Pilih aplikasi Automation di hasil pencarian.

    Cuplikan layar dari portal Microsoft Azure yang mencari Automation.

  5. Setelah berada di dalam panel "Buat Akun Automation", pilih Buat.

  6. Pilih grup langganan dan sumber daya yang akan digunakan untuk eksekusi skrip PowerShell. Masukkan nama untuk akun otomatisasi ini.

  7. Pilih Tingkat Lanjut. Verifikasi bahwa Sistem yang ditetapkan diperiksa, sehingga identitas terkelola yang ditetapkan sistem (SAMI) akan dibuat untuk mengautentikasi ke sumber daya Azure.

  8. Pilih Tag. Pertimbangkan untuk menggunakan tag Azure. Misalnya, tag "Pemilik" atau "CreatedBy" untuk mengidentifikasi siapa yang membuat sumber daya, dan tag "Lingkungan" untuk mengidentifikasi apakah sumber daya ini dalam produksi, pengembangan, dll. Untuk informasi selengkapnya, lihat Mengembangkan strategi penamaan dan pemberian tag untuk sumber daya Azure.

  9. Pilih Tinjau+Buat.

  10. Selesaikan pembuatan akun otomatisasi dengan memilih Buat.

Menetapkan peran Azure ke akun identitas terkelola yang ditetapkan sistem

Akun Automation dapat menggunakan identitas terkelola yang ditetapkan sistemnya untuk mendapatkan token guna mengakses sumber daya lain yang dilindungi oleh ID Microsoft Entra, seperti Azure SQL Database. Token ini tidak mewakili pengguna aplikasi tertentu. Sebaliknya, mereka mewakili aplikasi yang mengakses sumber daya. Dalam hal ini, misalnya, token mewakili akun Otomatisasi.

Sebelum membuat buku panduan Azure Automation, penting untuk menetapkan tingkat izin yang tepat pada akun Automation, mengikuti prinsip pembatasan hak akses maksimal. Saat Anda menggunakan identitas terkelola yang ditetapkan sistem, menambahkan peran Kontributor SQL DB dan Kontributor SQL Server ke SAMI cukup untuk mengotomatiskan tugas Azure SQL Database. Untuk sebagian besar skenario, jika otomatisasi Anda hanya menargetkan database tertentu, gunakan cakupan tingkat grup sumber daya. Jika harus beroperasi di seluruh langganan, gunakan cakupan tingkat langganan.

Contoh berikut menggunakan Azure PowerShell untuk menetapkan peran Kontributor SQL DB dalam langganan saat ini ke akun identitas terkelola yang ditetapkan sistem.

$roleAssignmentParams = @{
     ObjectId = "<automation-Identity-object-id>"
     Scope = "/subscriptions/<subscription-id>"
     RoleDefinitionName = "SQL DB Contributor"
}

New-AzRoleAssignment @roleAssignmentParams

Untuk menambahkan peran ini ke identitas terkelola yang ditetapkan sistem dari dalam portal Microsoft Azure, ikuti langkah-langkah berikut:

  1. Masuk ke portal Microsoft Azure.
  2. Temukan akun Azure Automation yang baru dibuat.
  3. Di bawah Pengaturan Akun, pilih Identitas.
  4. Di bawah Izin, pilih kotak Penetapan peran Azure.
  5. Pilih Tambahkan penetapan peran (Pratinjau).
  6. Dalam daftar dropdown Cakupan, pilih kumpulan sumber daya yang akan diterapkan untuk penetapan peran seperti Langganan, Grup sumber daya, Peran, dan Cakupan.
  7. Di daftar dropdown Peran, pilih peran sebagai Kontributor SQL DB.
  8. Pilih Simpan.

Ulangi langkah-langkah dari langkah Tambahkan penetapan peran untuk menambahkan peran Kontributor SQL Server .

Petunjuk / Saran

Catat nama akun Azure Automation, ID langganan, dan sumber daya Anda (misal, copy-paste ke notepad) persis seperti yang dimasukkan saat membuat aplikasi Otomatisasi. Anda memerlukan informasi ini nanti.

Jika Anda memiliki beberapa langganan Azure yang ingin Anda buatkan otomatisasi yang sama, Anda perlu mengulangi proses ini untuk langganan Anda lainnya.

Memperbarui modul Azure Automation

Skrip PowerShell untuk mengambil rekomendasi penyetelan otomatis menggunakan perintah Get-AzResource dan Get-AzSqlDatabaseRecommendedAction karena diperlukan modul Azure versi 4 ke atas.

Membuat runbook Azure Automation

Langkah selanjutnya adalah membuat Runbook di Azure Automation di mana skrip PowerShell untuk mengambil rekomendasi penyetelan berada.

Ikuti langkah-langkah ini untuk membuat runbook Azure Automation yang baru:

  1. Akses akun Azure Automation yang Anda buat di langkah sebelumnya.
  2. Setelah berada di panel akun otomatisasi, pilih item menu Runbook di sisi kiri untuk membuat runbook Azure Automation baru dengan skrip PowerShell. Untuk mempelajari selengkapnya tentang membuat runbook otomatisasi, lihat Membuat runbook baru.
  3. Untuk menambahkan runbook baru, pilih opsi menu +Tambahkan runbook , lalu pilih Buat cepat – Buat runbook baru.
  4. Di panel Runbook, ketik nama runbook Anda (dalam contoh ini, AutomaticTuningEmailAutomation digunakan), pilih jenis runbook sebagai PowerShell dan tulis deskripsi runbook ini untuk menjelaskan tujuannya.
  5. Pilih Buat untuk menyelesaikan pembuatan runbook baru.

Ikuti langkah-langkah ini untuk memuat skrip PowerShell di dalam runbook yang dibuat:

  1. Di dalam panel Edit PowerShell Runbook , pilih RUNBOOKS di pohon menu dan perluas tampilan hingga Anda melihat nama runbook Anda (dalam contoh ini AutomaticTuningEmailAutomation). Pilih runbook ini.
  2. Di baris pertama "Edit PowerShell Runbook" (dimulai dengan angka 1), salin-tempel kode skrip PowerShell berikut. Skrip PowerShell ini disediakan apa adanya untuk membantu Anda memulai. Modifikasi skrip untuk memenuhi kebutuhan Anda.

Di header skrip PowerShell yang disediakan, Anda perlu menggantinya <SUBSCRIPTION_ID_WITH_DATABASES> dengan ID langganan Azure Anda. Untuk mempelajari cara mengambil ID langganan Azure Anda, lihat Mendapatkan GUID Langganan Azure Anda.

Untuk beberapa langganan, Anda dapat menambahkan langganan tersebut sebagai properti berbatas koma "$subscriptions" di header skrip.

# PowerShell script to retrieve Azure SQL Database automatic tuning recommendations.
#
# Provided "as-is" with no implied warranties or support.
# The script is released to the public domain.
#
# Replace <SUBSCRIPTION_ID_WITH_DATABASES> in the header with your Azure subscription ID.
#
# Microsoft Azure SQL Database team, 2018-01-22.

# Set subscriptions : IMPORTANT – REPLACE <SUBSCRIPTION_ID_WITH_DATABASES> WITH YOUR SUBSCRIPTION ID
$subscriptions = ("<SUBSCRIPTION_ID_WITH_DATABASES>", "<SECOND_SUBSCRIPTION_ID_WITH_DATABASES>", "<THIRD_SUBSCRIPTION_ID_WITH_DATABASES>")

# Get credentials
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint

# Define the resource types
$resourceTypes = ("Microsoft.Sql/servers/databases")
$advisors = ("CreateIndex", "DropIndex");
$results = @()

# Loop through all subscriptions
foreach ($subscriptionId in $subscriptions) {
    Select-AzSubscription -SubscriptionId $subscriptionId
    $rgs = Get-AzResourceGroup

    # Loop through all resource groups
    foreach ($rg in $rgs) {
        $rgname = $rg.ResourceGroupName;

        # Loop through all resource types
        foreach ($resourceType in $resourceTypes) {
            $resources = Get-AzResource -ResourceGroupName $rgname -ResourceType $resourceType

            # Loop through all databases
            # Extract resource groups, servers and databases
            foreach ($resource in $resources) {
                $resourceId = $resource.ResourceId
                if ($resourceId -match ".*RESOURCEGROUPS/(?<content>.*)/PROVIDERS.*") {
                    $ResourceGroupName = $matches['content']
                }
                else {
                    continue
                }
                if ($resourceId -match ".*SERVERS/(?<content>.*)/DATABASES.*") {
                    $ServerName = $matches['content']
                }
                else {
                    continue
                }
                if ($resourceId -match ".*/DATABASES/(?<content>.*)") {
                    $DatabaseName = $matches['content']
                }
                else {
                    continue
                }

                # Skip if master
                if ($DatabaseName -eq "master") {
                    continue
                }

                # Loop through all automatic tuning recommendation types
                foreach ($advisor in $advisors) {
                    $recs = Get-AzSqlDatabaseRecommendedAction -ResourceGroupName $ResourceGroupName -ServerName $ServerName  -DatabaseName $DatabaseName -AdvisorName $advisor
                    foreach ($r in $recs) {
                        if ($r.State.CurrentValue -eq "Active") {
                            $object = New-Object -TypeName PSObject
                            $object | Add-Member -Name 'SubscriptionId' -MemberType Noteproperty -Value $subscriptionId
                            $object | Add-Member -Name 'ResourceGroupName' -MemberType Noteproperty -Value $r.ResourceGroupName
                            $object | Add-Member -Name 'ServerName' -MemberType Noteproperty -Value $r.ServerName
                            $object | Add-Member -Name 'DatabaseName' -MemberType Noteproperty -Value $r.DatabaseName
                            $object | Add-Member -Name 'Script' -MemberType Noteproperty -Value $r.ImplementationDetails.Script
                            $results += $object
                        }
                    }
                }
            }
        }
    }
}

# Format and output results for the email
$table = $results | Format-List
Write-Output $table

Pilih Simpan untuk menyimpan skrip. Saat Anda puas dengan skrip, pilih Terbitkan untuk menerbitkan runbook ini.

Di panel runbook utama, Anda dapat memilih untuk memilih Mulai untuk menguji skrip. Pilih Output untuk melihat hasil skrip yang dijalankan. Output ini akan menjadi konten surel Anda.

Pastikan Anda menyesuaikan konten dengan mengkostumisasi skrip PowerShell menurut kebutuhan Anda.

Dengan langkah-langkah di atas, skrip PowerShell untuk mengambil rekomendasi penyetelan otomatis dimuat di Azure Automation. Langkah selanjutnya adalah mengotomatisasi dan menjadwalkan pengiriman email.

Mengotomatisasi pekerjaan email dengan Microsoft Power Automate

Untuk menyelesaikan solusi sebagai langkah terakhir, buat alur otomatisasi di Microsoft Power Automate, yang terdiri dari tiga tindakan (pekerjaan):

  • Azure Automation - Buat pekerjaan – digunakan untuk menjalankan skrip PowerShell untuk mengambil rekomendasi penyetelan otomatis di dalam runbook Azure Automation.
  • Azure Automation - Dapatkan output pekerjaan – digunakan untuk mengambil output dari skrip PowerShell yang dijalankan.
  • Office 365 Outlook – Mengirim email – digunakan untuk mengirim email. Email dikirim menggunakan akun kantor atau sekolah dari orang yang membuat alur.

Untuk mempelajari selengkapnya tentang kemampuan Microsoft Power Automate, lihat Mulai menggunakan Microsoft Power Automate.

Prasyarat untuk langkah ini adalah mendaftar akun Microsoft Power Automate dan masuk. Setelah berada di dalam solusi, ikuti langkah-langkah ini untuk mengatur alur baru:

  1. Akses item menu My flows.
  2. Di dalam Alur saya, pilih tautan +Buat dari kosong di bagian atas halaman.
  3. Pilih tautan Cari ratusan konektor dan pemicu.
  4. Di bidang pencarian, ketik pengulangan, dan pilih Jadwal - Pengulangan dari hasil pencarian untuk menjadwalkan pekerjaan pengiriman email yang akan dijalankan.
  5. Pada panel Pengulangan di bidang Frekuensi, pilih frekuensi penjadwalan untuk menjalankan alur ini, seperti mengirimkan email otomatis setiap Menit, Jam, Hari, Minggu, dll.

Langkah selanjutnya adalah menambahkan tiga pekerjaan (membuat, mendapatkan output, dan mengirim email) ke alur berulang yang baru dibuat. Untuk menyelesaikan penambahan tugas yang diperlukan ke alur, ikuti langkah-langkah berikut:

  1. Buat tindakan untuk menjalankan skrip PowerShell untuk mengambil rekomendasi penyetelan

    1. Pilih +Langkah baru, diikuti dengan Tambahkan tindakan di dalam panel Alur pengulangan.
    2. Di bidang pencarian, ketik otomatisasi dan pilih Azure Automation – Buat pekerjaan dari hasil pencarian.
    3. Di panel Create job, konfigurasikan properti pekerjaan. Untuk konfigurasi ini, Anda memerlukan detail ID langganan Azure, Grup Sumber Daya, dan Akun Automation yang sebelumnya direkam di panel Akun Automation. Untuk mempelajari selengkapnya tentang bagian ini, lihat Azure Automation - Create Job.
    4. Pilih Simpan alur.
  2. Buat tindakan untuk mengambil output dari skrip PowerShell yang dijalankan.

    1. Pilih +Langkah baru, diikuti dengan Tambahkan tindakan di dalam panel Alur pengulangan
    2. Di bidang pencarian, ketik otomatisasi dan pilih Azure Automation – Dapatkan output pekerjaan dari hasil pencarian. Untuk mempelajari selengkapnya tentang bagian ini, lihat Azure Automation - Get job output.
    3. Mengisi bidang yang diperlukan (mirip dengan membuat tugas sebelumnya) - isi ID langganan Azure, Grup Sumber Daya, dan Akun Otomasi Anda (seperti yang dimasukkan di panel Akun Otomatisasi).
    4. Pilih di dalam bidang ID Pekerjaan untuk menu Konten dinamis yang akan muncul. Dari dalam menu ini, pilih opsi ID Pekerjaan.
    5. Pilih Simpan alur.
  3. Membuat tindakan untuk mengirim email menggunakan integrasi Office 365

    1. Pilih +Langkah baru, diikuti dengan Tambahkan tindakan di dalam panel Alur pengulangan.
    2. Di bidang pencarian, ketik kirim email dan pilih Office 365 Outlook – Kirim email dari hasil pencarian.
    3. Di bidang Kepada , ketik alamat email tempat Anda perlu mengirim email pemberitahuan.
    4. Di bidang Subjek , ketik subjek email Anda, misalnya "Pemberitahuan email rekomendasi penyetelan otomatis".
    5. Pilih bidang Isi agar menu Konten dinamis muncul. Dari dalam menu ini, di bawah Dapatkan output pekerjaan, pilih Konten.
    6. Pilih Simpan alur.

Petunjuk / Saran

Untuk mengirim email otomatis ke penerima yang berbeda, buat alur terpisah. Dalam alur tambahan ini, ubah alamat email penerima di bidang Kepada , dan baris subjek email di bidang Subjek . Membuat runbook baru di Azure Automation dengan skrip PowerShell yang dikustomisasi (seperti dengan perubahan ID langganan Azure) memungkinkan penyesuaian skenario otomatis lebih lanjut, seperti, misalnya, mengirim email ke penerima terpisah pada Rekomendasi penyetelan otomatis untuk langganan terpisah.

Langkah-langkah sebelumnya mengonfigurasi alur kerja pekerjaan pengiriman email. Seluruh aliran yang terdiri dari tiga tindakan ditampilkan dalam gambar berikut.

Untuk menguji alur, pilih Jalankan Sekarang. Statistik menjalankan tugas otomatis, yang memperlihatkan notifikasi email yang berhasil dikirim, dapat dilihat dari panel analitik Alur.

Panel Analitik alur sangat membantu untuk memantau keberhasilan eksekusi pekerjaan, dan jika perlu untuk pemecahan masalah. Untuk pemecahan masalah, Anda juga perlu memeriksa log eksekusi skrip PowerShell yang dapat diakses melalui aplikasi Azure Automation.

Output akhir dari email otomatis terlihat mirip dengan email berikut yang diterima setelah membangun dan menjalankan solusi ini:

Tangkapan layar dari Microsoft Outlook yang menunjukkan contoh output email dari notifikasi email penyetelan otomatis.

Dengan menyesuaikan skrip PowerShell, Anda dapat menyesuaikan output dan pemformatan email otomatis dengan kebutuhan Anda.

Anda dapat mengkustomisasi solusi untuk membuat pemberitahuan email berdasarkan peristiwa penyetelan tertentu, dan ke beberapa penerima, untuk beberapa langganan atau database, tergantung skenario kustom Anda.