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 masih didukung oleh Azure SQL Database, tetapi semua pengembangan di masa mendatang adalah untuk modul Az.Sql. Untuk cmdlet ini, lihat AzureRM.Sql. Argumen untuk perintah dalam modul Az dan dalam modul AzureRm secara substansial identik.

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 Azure.

  2. Klik "+Create a resource"di sudut kiri atas.

  3. Cari "Automation" (tekan enter).

  4. Klik aplikasi Otomatisasi di hasil pencarian.

    Adding Azure automation

  5. Setelah berada di dalam panel "Create an Automation Account", klik "Create".

  6. Mengisi informasi yang diperlukan: masukkan nama untuk akun otomatisasi ini, pilih ID langganan Azure dan sumber daya Azure yang akan Anda gunakan untuk menjalankan skrip PowerShell.

  7. Untuk opsi "Create Azure Run As account",pilih Yes untuk mengonfigurasi jenis akun di mana skrip PowerShell berjalan dengan bantuan Azure Automation. Untuk mempelajari selengkapnya tentang jenis akun, lihat Menjalankan Sebagai akun.

  8. Akhiri pembuatan akun otomatisasi dengan mengklik Create.

Tip

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, klik item menu"Runbooks"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, klik opsi menu "+Add a runbook",lalu klik"Quick Create - Create a new runbook".

  4. Di panel Runbook, ketik nama runbook Anda ( contoh,"AutomaticTuningEmailAutomation"), pilih jenis runbook sebagai PowerShell dan tulis deskripsi runbook ini untuk menjelaskan tujuannya.

  5. Klik tombol create untuk menyelesaikan pembuatan runbook baru.

    Add Azure automation runbook

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

  1. Dalam panel"Edit PowerShell Runbook",pilih"RUNBOOKS"pada pohon menu dan perluas tampilan hingga Anda melihat nama runbook Anda (dalam contoh ini "AutomaticTuningEmailAutomation"). Pilih runbook ini.
  2. Pada 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

Klik tombol"Save"di sudut kanan atas untuk menyimpan skrip. Ketika Anda puas dengan skrip, klik tombol"Terbitkan"untuk menerbitkan runbook ini.

Di panel utama runbook, Anda dapat memilih untuk mengklik tombol "Start" untuk menguji skrip. Klik "Output"untuk melihat hasil skrip yang dijalankan. Output ini akan menjadi konten surel Anda. Contoh output dari skrip dapat dilihat pada cuplikan layar berikut.

Run view automatic tuning recommendations with Azure Automation

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- Get job output" - digunakan untuk mengambil output dari skrip PowerShell yang dijalankan.
  • "Office 365 Outlook - Send an 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 mendaftarkan akun Microsoft Power Automate dan masuk. Setelah berada di dalam solusi, ikuti langkah-langkah ini untuk mengatur alur baru:

  1. Akses item menu "Alur saya".
  2. Pada menu Alur saya, pilih tautan "+Buat dari kosong" di bagian atas halaman.
  3. Klik tautan "Cari ratusan konektor dan pemicu "di bagian bawah halaman.
  4. Di bidang pencarian ketik "pengulangan ",dan pilih "Jadwal - Pengulangan"dari hasil pencarian untuk menjadwalkan pengaktifan pengiriman email.
  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

    • Pilih "+New step", kemudian" Add an action"di dalam panel alur Pengulangan.
    • Di bidang pencarian ketik "automation" dan pilih "Azure Automation - Create job" dari hasil pencarian.
    • Di panel Create job, konfigurasikan properti pekerjaan. Untuk konfigurasi ini, Anda memerlukan detail ID langganan Azure, Grup Sumber Daya, dan Akun Otomatisasi yang sebelumnya tercatat di panel Akun Otomatisasi. Untuk mempelajari selengkapnya tentang bagian ini, lihat Azure Automation - Create Job.
    • Selesaikan pembuatan tindakan ini dengan mengklik "Save flow".
  2. Membuat tindakan untuk mengambil output dari skrip PowerShell yang dijalankan

    • Pilih "+New step", kemudian" Add an action"di dalam panel alur Pengulangan
    • Di bidang pencarian ketik "automation" dan pilih "Azure Automation - Get job output" dari hasil pencarian. Untuk mempelajari selengkapnya tentang bagian ini, lihat Azure Automation - Get job output.
    • 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).
    • Klik di dalam bidang "Job ID" agar menu "Konten dinamis" muncul. Dari dalam menu ini, pilih opsi "Job ID".
    • Selesaikan pembuatan tindakan ini dengan mengklik "Save flow".
  3. Membuat tindakan untuk mengirim email menggunakan integrasi Office 365

    • Pilih "+New step", kemudian" Add an action"di dalam panel alur Pengulangan.
    • Di bidang pencarian, ketik "send an email" dan pilih "Office 365 Outlook - Send an email"dari hasil pencarian.
    • Di bidang "To", ketik alamat email penerima email pemberitahuan.
    • Di bidang"Subject",ketik subjek email Anda, misalnya "Pemberitahuan email rekomendasi penyetelan otomatis".
    • Klik di dalam bidang "Body" agar menu "Konten dinamis" muncul. Dari dalam menu ini, di bawah "Get job output", pilih "Content".
    • Selesaikan pembuatan tindakan ini dengan mengklik "Save flow".

Tip

Untuk mengirim email otomatis ke penerima yang berbeda, buat alur terpisah. Dalam alur tambahan ini, ubah alamat email penerima di bidang "To", 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 kustomisasi skenario otomatisasi lebih lanjut, seperti misalnya mengirim email kepada penerima terpisah pada rekomendasi penyetelan otomatis untuk langganan terpisah.

Langkah di atas mengakhiri langkah-langkah yang diperlukan untuk mengonfigurasi alur kerja pengiriman email. Seluruh aliran yang terdiri dari tiga tindakan ditampilkan dalam gambar berikut.

View automatic tuning email notifications flow

Untuk menguji alur, klik"Jalankan Sekarang"di sudut kanan atas di dalam panel alur.

Statistik menjalankan tugas otomatis, yang memperlihatkan notifikasi email yang berhasil dikirim, dapat dilihat dari panel analitik Alur.

Running flow for automatic tuning email notifications

Panel Analitik aliran sangat membantu untuk memantau keberhasilan pekerjaan dan 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:

Sample email output from automatic tuning email notifications

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.

Langkah berikutnya