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:
Skapa en ny logikapp.
Använd mallen "Azure Monitor – Metrics Alert Handler". Den här mallen har en HTTP-begärandeutlösare med rätt schema definierat.
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.