Sdílet prostřednictvím


Příprava aplikací logiky a runbooků na migraci klasických pravidel upozornění

Poznámka

Jak jsme už dříve oznámili, klasická upozornění ve službě Azure Monitor se pro uživatele veřejného cloudu vyřazují z provozu, ale do 31. května 2021 se stále používají v omezeném počtu. Klasická upozornění na Azure Government cloud a Microsoft Azure provozovaná společností 21Vianet budou vyřazena 29. února 2024.

Pokud se rozhodnete dobrovolně migrovat klasická pravidla upozornění na nová pravidla upozornění, existují mezi těmito dvěma systémy určité rozdíly. Tento článek vysvětluje tyto rozdíly a vysvětluje, jak se můžete na změnu připravit.

Změny rozhraní API

Rozhraní API, která vytvářejí a spravují klasická pravidla upozornění (microsoft.insights/alertrules), se liší od rozhraní API, která vytvářejí a spravují nová upozornění metrik (microsoft.insights/metricalerts). Pokud dnes programově vytváříte a spravujete klasická pravidla upozornění, aktualizujte skripty nasazení tak, aby fungovaly s novými rozhraními API.

Následující tabulka obsahuje odkaz na programová rozhraní pro klasická i nová upozornění:

Typ skriptu nasazení Klasická upozornění Upozornění na nové metriky
REST API microsoft.insights/alertrules microsoft.insights/metricalerts
Azure CLI az monitor alert az monitor metrics alert
PowerShell Odkaz Odkaz
Šablona Azure Resource Manageru Pro klasická upozornění Upozornění na nové metriky

Změny datové části oznámení

Formát datové části oznámení se mírně liší mezi klasickými pravidly upozornění a novými upozorněními metrik. Pokud máte klasická pravidla upozornění s akcemi webhooku, aplikace logiky nebo runbooku, musíte cíle aktualizovat, aby přijímaly nový formát datové části.

Pomocí následující tabulky namapujte pole datové části webhooku z klasického formátu na nový formát:

Typ koncového bodu oznámení Klasická upozornění Upozornění na nové metriky
Bylo upozornění aktivované nebo vyřešené? Stav data.status
Kontextové informace o upozornění Kontextu data.context
Časové razítko, kdy bylo upozornění aktivováno nebo vyřešeno context.timestamp data.context.timestamp
ID pravidla upozornění context.id data.context.id
Název pravidla upozornění context.name data.context.name
Popis pravidla upozornění context.description data.context.description
Podmínka pravidla upozornění context.condition data.context.condition
Název metriky context.condition.metricName data.context.condition.allOf[0].metricName
Časová agregace (jak se metrika agreguje v okně vyhodnocení) context.condition.timeAggregation context.condition.timeAggregation
Zkušební období context.condition.windowSize data.context.condition.windowSize
Operátor (způsob porovnání agregované hodnoty metriky s prahovou hodnotou) context.condition.operator data.context.condition.operator
Prahová hodnota context.condition.threshold data.context.condition.allOf[0].threshold
Hodnota metriky context.condition.metricValue data.context.condition.allOf[0].metricValue
ID předplatného context.subscriptionId data.context.subscriptionId
Skupina prostředků ovlivněného prostředku context.resourceGroup data.context.resourceGroup
Název dotčeného prostředku context.resourceName data.context.resourceName
Typ ovlivněného prostředku context.resourceType data.context.resourceType
ID prostředku ovlivněného prostředku context.resourceId data.context.resourceId
Přímý odkaz na stránku souhrnu prostředků portálu context.portalLink data.context.portalLink
Vlastní pole datové části, která se mají předat webhooku nebo aplikaci logiky Vlastnosti data.properties

Datové části jsou podobné, jak vidíte. Následující část nabízí:

  • Podrobnosti o úpravě aplikací logiky pro práci s novým formátem
  • Příklad runbooku, který parsuje datovou část oznámení pro nová upozornění.

Úprava aplikace logiky tak, aby dostávala oznámení o upozornění na metriku

Pokud používáte aplikace logiky s klasickými upozorněními, musíte upravit kód aplikace logiky a parsovat novou datovou část upozornění na metriky. Postupujte takto:

  1. Vytvořte novou aplikaci logiky.

  2. Použijte šablonu Azure Monitor – Obslužná rutina upozornění metrik. Tato šablona má trigger požadavku HTTP s definovaným odpovídajícím schématem.

    Snímek obrazovky se dvěma tlačítky: Prázdná aplikace logiky a Azure Monitor – Obslužná rutina upozornění metrik

  3. Přidejte akci pro hostování logiky zpracování.

Použití runbooku Automation, který obdrží oznámení o upozornění na metriku

Následující příklad obsahuje kód PowerShellu, který se má použít v runbooku. Tento kód může analyzovat datové části pro klasická pravidla upozornění na metriky i nová pravidla upozornění na metriky.

## 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."
}

Úplný příklad sady Runbook, která zastaví virtuální počítač při aktivaci výstrahy, najdete v tématu Azure Automation tématu.

Integrace partnerů prostřednictvím webhooků

Většina našich partnerů, kteří se integrují s klasickými upozorněními, už prostřednictvím svých integrací podporuje novější upozornění na metriky. Mezi známé integrace, které už fungují s novými upozorněními na metriky, patří:

Pokud používáte integraci partnera, která tu není uvedená, ověřte u poskytovatele, že pracuje s novými upozorněními na metriky.

Další kroky