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:

  1. Buat aplikasi logika baru.

  2. Gunakan templat "Azure Monitor - Metrics Alert Handler". Templat ini memiliki pemicu permintaan HTTP dengan skema yang sesuai yang ditentukan.

    Cuplikan layar memperlihatkan dua tombol, Aplikasi Logika Kosong dan Azure Monitor – Metrics Alert Handler.

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

Langkah berikutnya