Menyiapkan aplikasi logika dan runbook Anda untuk migrasi aturan pemberitahuan klasik
Catatan
Seperti yang diumumkan sebelumnya, pemberitahuan klasik di Azure Monitor dihentikan untuk pengguna cloud publik, meskipun masih dalam penggunaan terbatas hingga 31 Mei 2021. Pemberitahuan klasik untuk cloud Azure Government dan Microsoft Azure yang dioperasikan oleh 21Vianet akan dihentikan pada 29 Februari 2024.
Jika Anda memilih untuk secara sukarela memigrasikan aturan pemberitahuan klasik Anda ke aturan pemberitahuan yang baru, ada beberapa perbedaan antara kedua sistem tersebut. Artikel ini menjelaskan perbedaan tersebut dan bagaimana Anda dapat melakukan persiapan untuk perubahan tersebut.
Perubahan API
API yang membuat dan mengelola aturan pemberitahuan klasik (microsoft.insights/alertrules
) berbeda dari API yang membuat dan mengelola pemberitahuan metrik baru (microsoft.insights/metricalerts
). Jika Anda secara terprogram membuat dan mengelola aturan pemberitahuan klasik hari ini, perbarui skrip penyebaran untuk bekerja dengan API baru.
Tabel berikut ini adalah referensi ke antarmuka terprogram untuk pemberitahuan klasik dan baru:
Jenis skrip penyebaran | Pemberitahuan klasik | Pemberitahuan metrik baru |
---|---|---|
REST API | microsoft.insights/alertrules | microsoft.insights/metricalerts |
Azure CLI | az monitor alert |
pemberitahuan metrik az monitor |
PowerShell | Referensi | Referensi |
Templat Azure Resource Manager | Untuk pemberitahuan klasik | Untuk pemberitahuan metrik baru |
Perubahan payload pemberitahuan
Format payload notifikasi sedikit berbeda antara aturan pemberitahuan klasik dan pemberitahuan metrik baru. Jika Anda memiliki aturan pemberitahuan klasik dengan tindakan webhook, aplikasi logika, atau runbook, Anda harus memperbarui target agar menerima format payload baru.
Gunakan tabel berikut ini untuk memetakan bidang payload webhook dari format klasik ke format baru:
Jenis titik akhir pemberitahuan | Pemberitahuan klasik | Pemberitahuan metrik baru |
---|---|---|
Apakah pemberitahuan diaktifkan atau diselesaikan? | status | data.status |
Informasi kontekstual tentang pemberitahuan | context | data.context |
Tanda waktu di mana pemberitahuan diaktifkan atau diselesaikan | context.timestamp | data.context.timestamp |
ID aturan pemberitahuan | context.id | data.context.id |
Nama aturan pemberitahuan | context.name | data.context.name |
Deskripsi aturan pemberitahuan | context.description | data.context.description |
Kondisi aturan pemberitahuan | context.condition | data.context.condition |
Nama metrik | context.condition.metricName | data.context.condition.allOf[0].metricName |
Agregasi waktu (bagaimana metrik diagregasi selama jendela evaluasi) | context.condition.timeAggregation | context.condition.timeAggregation |
Periode evaluasi | context.condition.windowSize | data.context.condition.windowSize |
Operator (bagaimana nilai metrik yang diagregasi dibandingkan dengan ambang) | context.condition.operator | data.context.condition.operator |
Ambang | context.condition.threshold | data.context.condition.allOf[0].threshold |
Nilai metrik | context.condition.metricValue | data.context.condition.allOf[0].metricValue |
ID Langganan | context.subscriptionId | data.context.subscriptionId |
Grup sumber daya dari sumber daya yang terpengaruh | context.resourceGroup | data.context.resourceGroup |
Nama sumber daya yang terpengaruh | context.resourceName | data.context.resourceName |
Jenis sumber daya yang terpengaruh | context.resourceType | data.context.resourceType |
ID sumber daya dari sumber daya yang terpengaruh | context.resourceId | data.context.resourceId |
Tautan langsung ke halaman ringkasan sumber daya portal | context.portalLink | data.context.portalLink |
Bidang payload kustom yang akan diteruskan ke webhook atau aplikasi logika | properties | data.properties |
Payload-nya mirip, seperti yang Anda lihat. Bagian berikut ini menawarkan:
- Detail tentang memodifikasi aplikasi logika agar berfungsi dengan format baru.
- Contoh runbook yang menguraikan payload notifikasi untuk pemberitahuan baru.
Mengubah aplikasi logika untuk menerima notifikasi pemberitahuan metrik
Jika menggunakan aplikasi logika dengan pemberitahuan klasik, Anda harus memodifikasi kode aplikasi logika untuk mengurai payload pemberitahuan metrik baru. Ikuti langkah-langkah berikut:
Buat aplikasi logika baru.
Gunakan templat "Azure Monitor - Metrics Alert Handler". Templat ini memiliki pemicu permintaan HTTP dengan skema yang sesuai yang ditentukan.
Tambahkan tindakan untuk menghosting logika pemrosesan Anda.
Menggunakan runbook otomatisasi yang menerima notifikasi pemberitahuan metrik
Contoh berikut ini menyediakan kode PowerShell untuk digunakan dalam runbook Anda. Kode ini dapat mengurai payload untuk aturan pemberitahuan metrik klasik dan aturan pemberitahuan metrik baru.
## Example PowerShell code to use in a runbook to handle parsing of both classic and new metric alerts.
[OutputType("PSAzureOperationResponse")]
param
(
[Parameter (Mandatory=$false)]
[object] $WebhookData
)
$ErrorActionPreference = "stop"
if ($WebhookData)
{
# Get the data object from WebhookData.
$WebhookBody = (ConvertFrom-Json -InputObject $WebhookData.RequestBody)
# Determine whether the alert triggering the runbook is a classic metric alert or a new metric alert (depends on the payload schema).
$schemaId = $WebhookBody.schemaId
Write-Verbose "schemaId: $schemaId" -Verbose
if ($schemaId -eq "AzureMonitorMetricAlert") {
# This is the new metric alert schema.
$AlertContext = [object] ($WebhookBody.data).context
$status = ($WebhookBody.data).status
# Parse fields related to alert rule condition.
$metricName = $AlertContext.condition.allOf[0].metricName
$metricValue = $AlertContext.condition.allOf[0].metricValue
$threshold = $AlertContext.condition.allOf[0].threshold
$timeAggregation = $AlertContext.condition.allOf[0].timeAggregation
}
elseif ($schemaId -eq $null) {
# This is the classic metric alert schema.
$AlertContext = [object] $WebhookBody.context
$status = $WebhookBody.status
# Parse fields related to alert rule condition.
$metricName = $AlertContext.condition.metricName
$metricValue = $AlertContext.condition.metricValue
$threshold = $AlertContext.condition.threshold
$timeAggregation = $AlertContext.condition.timeAggregation
}
else {
# The schema is neither a classic metric alert nor a new metric alert.
Write-Error "The alert data schema - $schemaId - is not supported."
}
# Parse fields related to resource affected.
$ResourceName = $AlertContext.resourceName
$ResourceType = $AlertContext.resourceType
$ResourceGroupName = $AlertContext.resourceGroupName
$ResourceId = $AlertContext.resourceId
$SubId = $AlertContext.subscriptionId
## Your logic to handle the alert here.
}
else {
# Error
Write-Error "This runbook is meant to be started from an Azure alert webhook only."
}
Untuk contoh lengkap runbook yang menghentikan komputer virtual saat pemberitahuan dipicu, lihat dokumentasi Azure Automation.
Integrasi mitra melalui webhook
Sebagian besar mitra kami yang terintegrasi dengan pemberitahuan klasik sudah mendukung pemberitahuan metrik yang lebih baru melalui integrasi mereka. Integrasi yang diketahui yang sudah berfungsi dengan pemberitahuan metrik baru meliputi:
Jika Anda menggunakan integrasi mitra yang tidak tercantum di sini, konfirmasikan dengan penyedia bahwa integrasi tersebut berfungsi dengan pemberitahuan metrik baru.