Menggunakan pemberitahuan untuk memicu runbook Azure Automation
Anda dapat menggunakan Azure Monitor untuk memantau metrik dan log tingkat dasar untuk sebagian besar layanan di Azure. Anda dapat memanggil runbook Azure Automation menggunakan grup tindakan untuk mengotomatiskan tugas berdasarkan peringatan. Artikel ini memperlihatkan cara mengonfigurasi dan menjalankan runbook dengan menggunakan peringatan.
Prasyarat
- Akun Azure Automation dengan setidaknya satu identitas terkelola yang ditetapkan pengguna. Untuk informasi selengkapnya, lihat Menggunakan identitas terkelola yang ditetapkan pengguna untuk akun Azure Automation.
- Modul Az:
Az.Accounts
danAz.Compute
diimpor ke akun Azure Automation. Untuk informasi selengkapnya, lihat Impor modul Az. - komputer virtual Azure.
- Modul Azure Az PowerShell terinstal di mesin Anda. Jika Anda perlu menginstal atau melakukan peningkatan, lihat Cara menginstal modul Azure Az PowerShell.
- Keakraban umum dengan Runbook Azure Automation.
Jenis pemberitahuan
Anda dapat menggunakan runbook otomatisasi dengan tiga jenis pemberitahuan:
- Pemberitahuan paling umum
- Pemberitahuan log aktivitas
- Pemberitahuan metrik yang mendekati real-time
Catatan
Skema pemberitahuan umum menstandarkan pengalaman konsumsi untuk notifikasi pemberitahuan di Azure. Secara historis, tiga jenis pemberitahuan di Azure (metrik, log, dan log aktivitas) telah memiliki templat emailnya sendiri, skema webhook, dll. Untuk mempelajari selengkapnya, lihat Skema pemberitahuan umum.
Saat pemberitahuan memanggil runbook, panggilan sebenarnya adalah permintaan HTTP POST ke webhook. Isi permintaan POST berisi objek berformat JSON yang memiliki sifat berguna yang terkait dengan pemberitahuan. Tabel berikut ini mencantumkan tautan ke skema muatan untuk setiap jenis peringatan:
Peringatan | Deskripsi | Skema payload |
---|---|---|
Pemberitahuan umum | Skema pemberitahuan umum yang menstandarkan pengalaman penggunaan untuk notifikasi pemberitahuan di Azure saat ini. | Skema payload pemberitahuan umum. |
Pemberitahuan log aktivitas | Mengirim pemberitahuan saat peristiwa baru di log aktivitas Azure cocok dengan kondisi tertentu. Misalnya, saat operasi Delete VM terjadi di myProductionResourceGroup atau saat acara Azure Service Health baru dengan status Aktif muncul. |
Skema payload pemberitahuan log aktivitas |
Pemberitahuan metrik yang mendekati real-time | Mengirim pemberitahuan lebih cepat daripada pemberitahuan metrik saat satu atau beberapa metrik tingkat platform memenuhi kondisi yang ditentukan. Misalnya, ketika nilai untuk CPU % pada VM lebih besar dari 90, dan nilai untuk Network In lebih besar dari 500 MB selama 5 menit terakhir. | Skema payload pemberitahuan metrik mendekati real-time |
Karena data yang disediakan oleh setiap jenis pemberitahuan berbeda, setiap jenis pemberitahuan juga ditangani secara berbeda. Di bagian berikutnya, Anda mempelajari cara membuat runbook untuk menangani berbagai jenis pemberitahuan.
Tetapkan izin untuk identitas terkelola
Tetapkan izin untuk identitas terkelola yang sesuai untuk memungkinkannya menghentikan mesin virtual. Runbook dapat menggunakan identitas terkelola yang ditetapkan sistem akun Automation atau identitas terkelola yang ditetapkan pengguna. Langkah-langkah disediakan untuk menetapkan izin untuk setiap identitas. Langkah-langkah di bawah ini menggunakan PowerShell. Jika Anda lebih suka menggunakan Portal, lihat Menetapkan peran Azure menggunakan portal Microsoft Azure.
Masuk ke Azure secara interaktif menggunakan cmdlet Connect-AzAccount dan ikuti instruksinya.
# Sign in to your Azure subscription $sub = Get-AzSubscription -ErrorAction SilentlyContinue if(-not($sub)) { Connect-AzAccount } # If you have multiple subscriptions, set the one to use # Select-AzSubscription -SubscriptionId <SUBSCRIPTIONID>
Berikan nilai yang sesuai untuk variabel di bawah ini dan kemudian jalankan skrip.
$resourceGroup = "resourceGroup" $automationAccount = "AutomationAccount" $userAssignedManagedIdentity = "userAssignedManagedIdentity"
Gunakan cmdlet PowerShell New-AzRoleAssignment untuk menetapkan peran ke identitas terkelola yang ditetapkan sistem.
$SAMI = (Get-AzAutomationAccount -ResourceGroupName $resourceGroup -Name $automationAccount).Identity.PrincipalId New-AzRoleAssignment ` -ObjectId $SAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "DevTest Labs User"
Menetapkan peran ke identitas terkelola yang ditetapkan pengguna.
$UAMI = (Get-AzUserAssignedIdentity -ResourceGroupName $resourceGroup -Name $userAssignedManagedIdentity) New-AzRoleAssignment ` -ObjectId $UAMI.PrincipalId ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "DevTest Labs User"
Untuk identitas terkelola yang ditetapkan sistem, tunjukkan
ClientId
dan catat nilai untuk penggunaan nanti.$UAMI.ClientId
Membuat runbook untuk menangani pemberitahuan
Untuk menggunakan Automation dengan peringatan, Anda memerlukan runbook yang mengelola payload JSON peringatan yang diteruskan ke runbook. Contoh runbook berikut harus dipanggil dari pemberitahuan Azure.
Seperti yang dijelaskan di bagian sebelumnya, setiap jenis pemberitahuan memiliki skema yang berbeda. Skrip mengambil data webhook dari pemberitahuan di parameter input runbook WebhookData
. Kemudian, skrip mengevaluasi payload JSON untuk menentukan jenis pemberitahuan mana yang sedang digunakan.
Contoh ini menggunakan pemberitahuan dari komputer virtual (VM) Azure. Ini mengekstrak data VM dari payload, khususnya dari sumber daya target pemberitahuan yang dipicu, dan kemudian menggunakan informasi tersebut untuk menghentikan VM. Koneksi harus diatur di akun Automation tempat runbook dijalankan. Saat menggunakan pemberitahuan untuk memicu runbook, penting untuk memeriksa status pemberitahuan di runbook yang dipicu. Runbook memicu setiap kali pemberitahuan berubah status. Pemberitahuan memiliki beberapa status, dengan dua yang paling umum adalah Diaktifkan dan Diselesaikan. Periksa status dalam logika runbook Anda untuk memastikan runbook tidak berjalan lebih dari sekali. Contoh dalam artikel ini memperlihatkan cara mencari pemberitahuan dengan status Diaktifkan saja.
Runbook menggunakan akun Automation identitas terkelola yang ditetapkan sistem guna mengautentikasi dengan Azure untuk melakukan tindakan pengelolaan terhadap Mesin Virtual. Runbook dapat dengan mudah dimodifikasi untuk menggunakan identitas terkelola yang ditetapkan pengguna.
Catatan
Kami menyarankan agar Anda menggunakan akses jaringan publik karena tidak dimungkinkan untuk menggunakan pemberitahuan Azure (metrik, log, dan log aktivitas) untuk memicu webhook Automation saat akun Automation menggunakan tautan privat dan dikonfigurasi dengan Akses publik diatur ke Nonaktifkan.
Gunakan contoh ini untuk membuat runbook yang disebut Stop-AzureVmInResponsetoVMAlert. Anda dapat memodifikasi skrip PowerShell, dan menggunakannya dengan banyak sumber daya yang berbeda.
Masuk ke portal Microsoft Azure, dan navigasikan ke akun Azure Automation Anda.
Di Proses Automasi, pilih Runbook.
Pilih Buat runbook.
- Beri nama runbook
Stop-AzureVmInResponsetoVMAlert
. - Dari daftar menurun Jenis Runbook, pilih PowerShell.
- Pilih Buat.
- Beri nama runbook
Di editor runbook, tempel kode berikut:
[OutputType("PSAzureOperationResponse")] param ( [Parameter (Mandatory=$false)] [object] $WebhookData ) $ErrorActionPreference = "stop" if ($WebhookData) { # Get the data object from WebhookData $WebhookBody = (ConvertFrom-Json -InputObject $WebhookData.RequestBody) # Get the info needed to identify the VM (depends on the payload schema) $schemaId = $WebhookBody.schemaId Write-Verbose "schemaId: $schemaId" -Verbose if ($schemaId -eq "azureMonitorCommonAlertSchema") { # This is the common Metric Alert schema (released March 2019) $Essentials = [object] ($WebhookBody.data).essentials # Get the first target only as this script doesn't handle multiple $alertTargetIdArray = (($Essentials.alertTargetIds)[0]).Split("/") $SubId = ($alertTargetIdArray)[2] $ResourceGroupName = ($alertTargetIdArray)[4] $ResourceType = ($alertTargetIdArray)[6] + "/" + ($alertTargetIdArray)[7] $ResourceName = ($alertTargetIdArray)[-1] $status = $Essentials.monitorCondition } elseif ($schemaId -eq "AzureMonitorMetricAlert") { # This is the near-real-time Metric Alert schema $AlertContext = [object] ($WebhookBody.data).context $SubId = $AlertContext.subscriptionId $ResourceGroupName = $AlertContext.resourceGroupName $ResourceType = $AlertContext.resourceType $ResourceName = $AlertContext.resourceName $status = ($WebhookBody.data).status } elseif ($schemaId -eq "Microsoft.Insights/activityLogs") { # This is the Activity Log Alert schema $AlertContext = [object] (($WebhookBody.data).context).activityLog $SubId = $AlertContext.subscriptionId $ResourceGroupName = $AlertContext.resourceGroupName $ResourceType = $AlertContext.resourceType $ResourceName = (($AlertContext.resourceId).Split("/"))[-1] $status = ($WebhookBody.data).status } elseif ($schemaId -eq $null) { # This is the original Metric Alert schema $AlertContext = [object] $WebhookBody.context $SubId = $AlertContext.subscriptionId $ResourceGroupName = $AlertContext.resourceGroupName $ResourceType = $AlertContext.resourceType $ResourceName = $AlertContext.resourceName $status = $WebhookBody.status } else { # Schema not supported Write-Error "The alert data schema - $schemaId - is not supported." } Write-Verbose "status: $status" -Verbose if (($status -eq "Activated") -or ($status -eq "Fired")) { Write-Verbose "resourceType: $ResourceType" -Verbose Write-Verbose "resourceName: $ResourceName" -Verbose Write-Verbose "resourceGroupName: $ResourceGroupName" -Verbose Write-Verbose "subscriptionId: $SubId" -Verbose # Determine code path depending on the resourceType if ($ResourceType -eq "Microsoft.Compute/virtualMachines") { # This is an Resource Manager VM Write-Verbose "This is an Resource Manager VM." -Verbose # Ensures you do not inherit an AzContext in your runbook Disable-AzContextAutosave -Scope Process # Connect to Azure with system-assigned managed identity $AzureContext = (Connect-AzAccount -Identity).context # set and store context $AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext # Stop the Resource Manager VM Write-Verbose "Stopping the VM - $ResourceName - in resource group - $ResourceGroupName -" -Verbose Stop-AzVM -Name $ResourceName -ResourceGroupName $ResourceGroupName -DefaultProfile $AzureContext -Force # [OutputType(PSAzureOperationResponse")] } else { # ResourceType not supported Write-Error "$ResourceType is not a supported resource type for this runbook." } } else { # The alert status was not 'Activated' or 'Fired' so no action taken Write-Verbose ("No action taken. Alert status: " + $status) -Verbose } } else { # Error Write-Error "This runbook is meant to be started from an Azure alert webhook only." }
Jika Anda ingin runbook dijalankan dengan identitas terkelola yang ditetapkan sistem, jangan ubah kodenya. Jika Anda lebih suka menggunakan identitas terkelola yang ditetapkan pengguna:
- Dari baris 78, hapus
$AzureContext = (Connect-AzAccount -Identity).context
, - Ganti dengan
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context
, dan - Masukkan ID Klien yang Anda peroleh sebelumnya.
- Dari baris 78, hapus
Pilih Simpan, Publikasikan, lalu Ya saat diminta.
Tutup halaman Runbook untuk kembali ke halaman Akun Automation.
Membuat pemberitahuan
Pemberitahuan menggunakan grup tindakan, yang merupakan kumpulan tindakan yang dipicu oleh pemberitahuan. Runbook hanyalah salah satu dari banyak tindakan yang dapat Anda gunakan dengan grup tindakan.
Di akun Automation Anda, di bagian Pemantauan, pilih Peringatan.
Pilih + Aturan Peringatan Baru untuk membuka halaman Buat aturan peringatan.
Di bagian Cakupan, pilih Edit sumber daya.
Pada laman Pilih sumber daya, dari daftar menurun Filter menurut jenis sumber daya, pilih Mesin virtual.
Centang kotak di samping mesin virtual yang ingin Anda pantau. Kemudian pilih Selesai untuk kembali ke halaman Buat aturan peringatan.
Di bawah Kondisi, pilih Tambahkan kondisi.
Pada halaman Pilih sinyal, masukkan
Percentage CPU
dalam kotak teks pencarian, lalu pilih Persentase CPU dari hasil.Pada halaman Konfigurasikan logika sinyal, di bawah Nilai ambang batas masukkan nilai awal yang rendah untuk tujuan pengujian, seperti
5
. Anda dapat kembali dan memperbarui nilai ini setelah mengonfirmasi bahwa peringatan berfungsi seperti yang diharapkan. Kemudian pilih Selesai untuk kembali ke halaman Buat aturan peringatan.Di bagian Tindakan,pilih Tambahkan grup tindakan, lalu +Buat grup tindakan.
Pada halaman Buat grup tindakan:
Pada tab Dasar, masukkan Nama grup tindakan dan Nama tampilan.
Pada tab Tindakan, di kotak teks Nama, masukkan nama. Kemudian dari daftar menurun Jenis tindakan, pilih Runbook Automation untuk membuka halaman Konfigurasikan Runbook.
Untuk item sumber Runbook, pilih Pengguna.
Dari daftar menurun Langganan, pilih langganan Anda.
Dari daftar menurun akun Automation, pilih akun Automation Anda.
Dari daftar menurun Runbook, pilih Stop-AzureVmInResponsetoVMAlert.
Untuk item Aktifkan skema peringatan umum, pilih Ya.
Pilih OK untuk kembali ke halaman Buat grup tindakan.
Pilih Tinjau + buat lalu Buat untuk kembali ke halaman Buat aturan peringatan.
Di bawah Detail aturan Peringatan, untuk kotak teks nama aturan Peringatan.
Pilih Buat aturan pemberitahuan. Anda dapat menggunakan grup tindakan ini di pemberitahuan log aktivitas dan pemberitahuan mendekati real-time yang Anda buat.
Verifikasi
Pastikan VM Anda berjalan. Navigasikan ke runbook Stop-AzureVmInResponsetoVMAlert dan perhatikan daftar Pekerjaan Terbaru untuk diisi. Setelah pekerjaan selesai muncul, pilih pekerjaan dan tinjau output-nya. Periksa juga untuk melihat apakah VM Anda berhenti.
Operasi manajemen Azure VM umum
Azure Automation menyediakan skrip untuk operasi manajemen Azure VM umum seperti menghidupkan ulang VM, menghentikan VM, menghapus VM, meningkatkan dan menurunkan skala skenario di galeri Runbook. Skrip juga dapat ditemukan di repositori GitHub Azure Automation Anda juga dapat menggunakan skrip ini seperti yang disebutkan dalam langkah-langkah di atas.
Operasi manajemen Azure VM | Rincian |
---|---|
Stop-Azure-VM-On-Alert | Runbook ini akan menghentikan VM Azure Resource Manager sebagai respons terhadap pemicu pemberitahuan Azure. Sumber daya target dari pemberitahuan yang dipicu harus VM untuk dihentikan. Ini diteruskan dalam parameter input dari payload pemberitahuan yang dipicu. Runbook harus dipanggil dari pemberitahuan Azure melalui webhook. Versi terbaru modul Az harus ditambahkan ke akun automation. Identitas Terkelola harus diaktifkan dan akses kontributor ke akun otomatisasi harus diberikan. |
Mulai ulang-Azure-VM-On-Alert | Runbook ini akan menghentikan VM Azure Resource Manager sebagai respons terhadap pemicu pemberitahuan Azure. Sumber daya target dari pemberitahuan yang dipicu harus VM untuk memulai ulang. Ini diteruskan dalam parameter input dari payload pemberitahuan yang dipicu. Runbook harus dipanggil dari pemberitahuan Azure melalui webhook. Versi terbaru modul Az harus ditambahkan ke akun automation. Identitas Terkelola harus diaktifkan dan akses kontributor ke akun otomatisasi harus diberikan. |
Delete-Azure-VM-On-Alert | Runbook ini akan menghentikan VM Azure Resource Manager sebagai respons terhadap pemicu pemberitahuan Azure. Sumber daya target pemberitahuan yang dipicu harus VM untuk dihapus. Ini diteruskan dalam parameter input dari payload pemberitahuan yang dipicu. Runbook harus dipanggil dari pemberitahuan Azure melalui webhook. Versi terbaru modul Az harus ditambahkan ke akun automation. Identitas Terkelola harus diaktifkan dan akses kontributor ke akun otomatisasi harus diberikan. |
ScaleDown-Azure-VM-On-Alert | Runbook ini akan menghentikan VM Azure Resource Manager sebagai respons terhadap pemicu pemberitahuan Azure. Sumber daya target dari pemberitahuan yang dipicu harus VM untuk menurunkan skala. Ini diteruskan dalam parameter input dari payload pemberitahuan yang dipicu. Runbook harus dipanggil dari pemberitahuan Azure melalui webhook. Versi terbaru modul Az harus ditambahkan ke akun automation. Identitas Terkelola harus diaktifkan dan akses kontributor ke akun otomatisasi harus diberikan. |
ScaleUp-Azure-VM-On-Alert | Runbook ini akan menghentikan VM Azure Resource Manager sebagai respons terhadap pemicu pemberitahuan Azure. Sumber daya target pemberitahuan yang dipicu harus VM untuk meningkatkan skala. Ini diteruskan dalam parameter input dari payload pemberitahuan yang dipicu. Runbook harus dipanggil dari pemberitahuan Azure melalui webhook. Versi terbaru modul Az harus ditambahkan ke akun automation. Identitas Terkelola harus diaktifkan dan akses kontributor ke akun otomatisasi harus diberikan. |
Langkah berikutnya
- Pelajari selengkapnya tentang cara membuat anggaran dan mengaitkannya dengan runbook Automation.
- Temukan berbagai cara untuk memulai runbook, lihat Memulai runbook.
- Membuat pemberitahuan log aktivitas, lihat Membuat pemberitahuan log aktivitas.
- Pelajari cara membuat pemberitahuan hampir real-time, lihat Membuat aturan pemberitahuan di portal Azure.