Share via


Förbered dina logikappar och runbooks för migrering av klassiska aviseringsregler

Anteckning

Som tidigare meddelats dras klassiska aviseringar i Azure Monitor tillbaka för offentliga molnanvändare, även om de fortfarande är i begränsad användning fram till den 31 maj 2021. Klassiska aviseringar för Azure Government moln och Microsoft Azure som drivs av 21Vianet upphör den 29 februari 2024.

Om du väljer att frivilligt migrera dina klassiska aviseringsregler till nya aviseringsregler finns det vissa skillnader mellan de två systemen. Den här artikeln förklarar dessa skillnader och hur du kan förbereda dig för ändringen.

API-ändringar

API:erna som skapar och hanterar klassiska aviseringsregler (microsoft.insights/alertrules) skiljer sig från DE API:er som skapar och hanterar nya måttaviseringar (microsoft.insights/metricalerts). Om du skapar och hanterar klassiska aviseringsregler programmatiskt i dag uppdaterar du distributionsskripten så att de fungerar med de nya API:erna.

Följande tabell är en referens till de programmatiska gränssnitten för både klassiska och nya aviseringar:

Typ av distributionsskript Klassiska aviseringar Nya måttaviseringar
REST-API microsoft.insights/alertrules microsoft.insights/metricalerts
Azure CLI az monitor alert az monitor metrics alert
PowerShell Referens Referens
Azure Resource Manager-mall För klassiska aviseringar För nya måttaviseringar

Ändringar av meddelandenyttolast

Formatet för meddelandenyttolasten skiljer sig något mellan klassiska aviseringsregler och nya måttaviseringar. Om du har klassiska aviseringsregler med webhook-, logikapp- eller runbook-åtgärder måste du uppdatera målen för att acceptera det nya nyttolastformatet.

Använd följande tabell för att mappa webhook-nyttolastfälten från det klassiska formatet till det nya formatet:

Typ av meddelandeslutpunkt Klassiska aviseringar Nya måttaviseringar
Aktiverades eller löstes aviseringen? Status data.status
Sammanhangsberoende information om aviseringen Sammanhang data.context
Tidsstämpel där aviseringen aktiverades eller löstes context.timestamp data.context.timestamp
Aviseringsregel-ID context.id data.context.id
Namn på aviseringsregel context.name data.context.name
Beskrivning av aviseringsregeln context.description data.context.description
Villkor för aviseringsregel context.condition data.context.condition
Måttnamn context.condition.metricName data.context.condition.allOf[0].metricName
Tidsaggregering (hur måttet aggregeras över utvärderingsfönstret) context.condition.timeAggregation context.condition.timeAggregation
Utvärderingsperiod context.condition.windowSize data.context.condition.windowSize
Operator (hur det aggregerade måttvärdet jämförs mot tröskelvärdet) context.condition.operator data.context.condition.operator
Tröskelvärde context.condition.threshold data.context.condition.allOf[0].threshold
Måttvärde context.condition.metricValue data.context.condition.allOf[0].metricValue
Prenumerations-ID:t context.subscriptionId data.context.subscriptionId
Resursgruppen för den berörda resursen context.resourceGroup data.context.resourceGroup
Namn på berörd resurs context.resourceName data.context.resourceName
Typ av berörd resurs context.resourceType data.context.resourceType
Resurs-ID för den berörda resursen context.resourceId data.context.resourceId
Direktlänk till portalens resurssammanfattningssida context.portalLink data.context.portalLink
Anpassade nyttolastfält som ska skickas till webhooken eller logikappen Egenskaper data.properties

Nyttolasterna är liknande, som du kan se. Följande avsnitt erbjuder:

  • Information om hur du ändrar logikappar så att de fungerar med det nya formatet.
  • Ett runbook-exempel som parsar meddelandenyttolasten för nya aviseringar.

Ändra en logikapp för att få ett måttaviseringsmeddelande

Om du använder logikappar med klassiska aviseringar måste du ändra logikappkoden för att parsa nyttolasten för nya måttaviseringar. Följ de här stegen:

  1. Skapa en ny logikapp.

  2. Använd mallen "Azure Monitor – Metrics Alert Handler". Den här mallen har en HTTP-begärandeutlösare med rätt schema definierat.

    Skärmbild som visar två knappar: Tom logikapp och Azure Monitor – Måttaviseringshanterare.

  3. Lägg till en åtgärd som värd för bearbetningslogik.

Använda en Automation-runbook som tar emot ett måttaviseringsmeddelande

I följande exempel finns PowerShell-kod som ska användas i din runbook. Den här koden kan parsa nyttolasten för både klassiska måttaviseringsregler och nya måttaviseringsregler.

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

Ett fullständigt exempel på en runbook som stoppar en virtuell dator när en avisering utlöses finns i Azure Automation-dokumentationen.

Partnerintegrering via webhooks

De flesta av våra partner som integreras med klassiska aviseringar stöder redan nyare måttaviseringar via deras integreringar. Kända integreringar som redan fungerar med nya måttaviseringar är:

Om du använder en partnerintegrering som inte finns med här kontrollerar du med leverantören att de arbetar med nya måttaviseringar.

Nästa steg