Uw logische apps en runbooks voorbereiden voor de migratie van klassieke waarschuwingsregels
Notitie
Zoals eerder aangekondigd, worden klassieke waarschuwingen in Azure Monitor buiten gebruik gesteld voor gebruikers van de openbare cloud, maar nog steeds beperkt gebruikt tot 31 mei 2021. Klassieke waarschuwingen voor Azure Government cloud en Microsoft Azure beheerd door 21Vianet worden op 29 februari 2024 buiten gebruik gesteld.
Als u ervoor kiest om uw klassieke waarschuwingsregels vrijwillig te migreren naar nieuwe waarschuwingsregels, zijn er enkele verschillen tussen de twee systemen. In dit artikel worden deze verschillen uitgelegd en wordt uitgelegd hoe u zich kunt voorbereiden op de wijziging.
API-wijzigingen
De API's die klassieke waarschuwingsregels maken en beheren (microsoft.insights/alertrules
) verschillen van de API's waarmee nieuwe metrische waarschuwingen () worden gemaakt en beheerd.microsoft.insights/metricalerts
Als u vandaag nog programmatisch klassieke waarschuwingsregels maakt en beheert, werkt u uw implementatiescripts bij om te werken met de nieuwe API's.
De volgende tabel bevat een verwijzing naar de programmatische interfaces voor zowel klassieke als nieuwe waarschuwingen:
Type implementatiescript | Klassieke waarschuwingen | Nieuwe waarschuwingen voor metrische gegevens |
---|---|---|
REST-API | microsoft.insights/alertrules | microsoft.insights/metricalerts |
Azure CLI | az monitor alert |
waarschuwing az monitor metrics |
PowerShell | Verwijzing | Verwijzing |
Azure Resource Manager-sjabloon | Voor klassieke waarschuwingen | Voor nieuwe metrische waarschuwingen |
Wijzigingen in nettolading van meldingen
De indeling van de nettolading van meldingen verschilt enigszins tussen klassieke waarschuwingsregels en nieuwe metrische waarschuwingen. Als u klassieke waarschuwingsregels met webhook-, logische app- of runbookacties hebt, moet u de doelen bijwerken om de nieuwe nettoladingindeling te accepteren.
Gebruik de volgende tabel om de nettoladingvelden van de webhook toe te wijzen van de klassieke indeling aan de nieuwe indeling:
Type meldingseindpunt | Klassieke waarschuwingen | Nieuwe waarschuwingen voor metrische gegevens |
---|---|---|
Is de waarschuwing geactiveerd of opgelost? | status | data.status |
Contextuele informatie over de waarschuwing | Context | data.context |
Tijdstempel waarop de waarschuwing is geactiveerd of opgelost | context.timestamp | data.context.timestamp |
Waarschuwingsregel-id | context.id | data.context.id |
Naam van waarschuwingsregel | context.name | data.context.name |
Beschrijving van de waarschuwingsregel | context.description | data.context.description |
Voorwaarde voor waarschuwingsregel | context.condition | data.context.condition |
Naam van metrische gegevens | context.condition.metricName | data.context.condition.allOf[0].metricName |
Tijdaggregatie (hoe de metrische gegevens worden geaggregeerd via het evaluatievenster) | context.condition.timeAggregation | context.condition.timeAggregation |
Evaluatieperiode | context.condition.windowSize | data.context.condition.windowSize |
Operator (hoe de geaggregeerde metrische waarde wordt vergeleken met de drempelwaarde) | context.condition.operator | data.context.condition.operator |
Drempelwaarde | context.condition.threshold | data.context.condition.allOf[0].threshold |
Metrische waarde | context.condition.metricValue | data.context.condition.allOf[0].metricValue |
Abonnements-id | context.subscriptionId | data.context.subscriptionId |
Resourcegroep van de betrokken resource | context.resourceGroup | data.context.resourceGroup |
Naam van de betrokken resource | context.resourceName | data.context.resourceName |
Type van de betrokken resource | context.resourceType | data.context.resourceType |
Resource-id van de betrokken resource | context.resourceId | data.context.resourceId |
Directe koppeling naar de overzichtspagina van de portalresource | context.portalLink | data.context.portalLink |
Aangepaste nettoladingvelden die moeten worden doorgegeven aan de webhook of logische app | properties | data.properties |
De nettoladingen zijn vergelijkbaar, zoals u kunt zien. In de volgende sectie vindt u het volgende:
- Details over het wijzigen van logische apps zodat deze werken met de nieuwe indeling.
- Een runbookvoorbeeld waarmee de nettolading van de melding voor nieuwe waarschuwingen wordt geparseerd.
Een logische app wijzigen om een waarschuwing voor metrische gegevens te ontvangen
Als u logische apps met klassieke waarschuwingen gebruikt, moet u de code van de logische app wijzigen om de nieuwe nettolading voor metrische waarschuwingen te parseren. Volg deze stappen:
Maak een nieuwe logische app.
Gebruik de sjabloon Azure Monitor - Metrics Alert Handler. Deze sjabloon heeft een HTTP-aanvraagtrigger met het juiste schema gedefinieerd.
Voeg een actie toe om uw verwerkingslogica te hosten.
Een automation-runbook gebruiken dat een waarschuwingsmelding voor metrische gegevens ontvangt
In het volgende voorbeeld ziet u PowerShell-code voor gebruik in uw runbook. Met deze code kunnen de nettoladingen voor zowel klassieke waarschuwingsregels voor metrische gegevens als nieuwe metrische waarschuwingsregels worden geparseerd.
## 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."
}
Zie de Azure Automation documenation voor een volledig voorbeeld van een runbook waarmee een virtuele machine wordt gestopt wanneer een waarschuwing wordt geactiveerd.
Partnerintegratie via webhooks
De meeste van onze partners die integreren met klassieke waarschuwingen ondersteunen al nieuwere metrische waarschuwingen via hun integraties. Bekende integraties die al werken met nieuwe metrische waarschuwingen zijn:
Als u een partnerintegratie gebruikt die hier niet wordt vermeld, controleert u bij de provider of deze werkt met nieuwe metrische waarschuwingen.