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:
Vytvořte novou aplikaci logiky.
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.
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.