Przygotowywanie aplikacji logiki i elementów Runbook do migracji reguł alertów klasycznych
Uwaga
Jak wcześniej ogłoszono, alerty klasyczne w usłudze Azure Monitor są wycofane dla użytkowników chmury publicznej, choć nadal są używane do 31 maja 2021 r. Alerty klasyczne dla chmury Azure Government i platformy Microsoft Azure obsługiwanej przez firmę 21Vianet zostaną wycofane 29 lutego 2024 r.
Jeśli zdecydujesz się dobrowolnie migrować klasyczne reguły alertów do nowych reguł alertów, istnieją pewne różnice między dwoma systemami. W tym artykule wyjaśniono te różnice i sposób przygotowania do zmiany.
Zmiany interfejsu API
Interfejsy API, które tworzą klasyczne reguły alertów () i zarządzają nimi,microsoft.insights/alertrules
różnią się od interfejsów API, które tworzą nowe alerty metryk i zarządzają nimi (microsoft.insights/metricalerts
). Jeśli obecnie programowo utworzysz klasyczne reguły alertów i zarządzasz nimi, zaktualizuj skrypty wdrażania, aby pracować z nowymi interfejsami API.
Poniższa tabela zawiera odwołanie do interfejsów programowych zarówno dla alertów klasycznych, jak i nowych:
Typ skryptu wdrożenia | Alerty klasyczne | Nowe alerty metryk |
---|---|---|
Interfejs API REST | microsoft.insights/alertrules | microsoft.insights/metricalerts |
Interfejs wiersza polecenia platformy Azure | az monitor alert |
az monitor metrics alert |
PowerShell | Odwołanie | Odwołanie |
Szablon usługi Azure Resource Manager | Alerty klasyczne | W przypadku nowych alertów metryk |
Zmiany ładunku powiadomień
Format ładunku powiadomień różni się nieco między klasycznymi regułami alertów a nowymi alertami metryk. Jeśli masz klasyczne reguły alertów z elementami webhook, aplikacją logiki lub akcjami elementu Runbook, musisz zaktualizować obiekty docelowe, aby akceptowały nowy format ładunku.
Poniższa tabela umożliwia mapowanie pól ładunku elementu webhook z formatu klasycznego na nowy format:
Typ punktu końcowego powiadomień | Alerty klasyczne | Nowe alerty metryk |
---|---|---|
Czy alert został aktywowany lub rozwiązany? | Stan | data.status |
Kontekstowe informacje o alercie | Kontekście | data.context |
Sygnatura czasowa, w której alert został aktywowany lub rozwiązany | context.timestamp | data.context.timestamp |
Identyfikator reguły alertu | context.id | data.context.id |
Nazwa reguły alertu | context.name | data.context.name |
Opis reguły alertu | context.description | data.context.description |
Warunek reguły alertu | context.condition | data.context.condition |
Nazwa metryki | context.condition.metricName | data.context.condition.allOf[0].metricName |
Agregacja czasu (sposób agregowania metryki w oknie oceny) | context.condition.timeAggregation | context.condition.timeAggregation |
Okres oceny | context.condition.windowSize | data.context.condition.windowSize |
Operator (jak zagregowana wartość metryki jest porównywana z progiem) | context.condition.operator | data.context.condition.operator |
Próg | context.condition.threshold | data.context.condition.allOf[0].threshold |
Wartość metryki | context.condition.metricValue | data.context.condition.allOf[0].metricValue |
Identyfikator subskrypcji | context.subscriptionId | data.context.subscriptionId |
Grupa zasobów zasobu, którego dotyczy problem | context.resourceGroup | data.context.resourceGroup |
Nazwa zasobu, którego dotyczy problem | context.resourceName | data.context.resourceName |
Typ zasobu, którego dotyczy problem | context.resourceType | data.context.resourceType |
Identyfikator zasobu, którego dotyczy problem | context.resourceId | data.context.resourceId |
Bezpośredni link do strony podsumowania zasobów portalu | context.portalLink | data.context.portalLink |
Niestandardowe pola ładunku, które mają być przekazywane do elementu webhook lub aplikacji logiki | Właściwości | data.properties |
Ładunki są podobne, jak widać. W poniższej sekcji przedstawiono następujące oferty:
- Szczegółowe informacje o modyfikowaniu aplikacji logiki do pracy z nowym formatem.
- Przykład elementu Runbook, który analizuje ładunek powiadomień dla nowych alertów.
Modyfikowanie aplikacji logiki w celu otrzymywania powiadomienia o alertach dotyczących metryk
Jeśli używasz aplikacji logiki z alertami klasycznymi, musisz zmodyfikować kod aplikacji logiki, aby przeanalizować ładunek nowych alertów metryk. Wykonaj następujące kroki:
Utwórz nową aplikację logiki.
Użyj szablonu "Azure Monitor — procedura obsługi alertów metryk". Ten szablon ma wyzwalacz żądania HTTP z odpowiednim zdefiniowanym schematem.
Dodaj akcję do hostowania logiki przetwarzania.
Używanie elementu Runbook automatyzacji, który odbiera powiadomienie o alertach dotyczących metryk
W poniższym przykładzie przedstawiono kod programu PowerShell do użycia w elemecie Runbook. Ten kod może analizować ładunki zarówno dla reguł alertów dotyczących metryk klasycznych, jak i nowych reguł alertów dotyczących metryk.
## 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."
}
Pełny przykład elementu Runbook, który zatrzymuje maszynę wirtualną po wyzwoleniu alertu, zobacz dokumentację Azure Automation.
Integracja partnerów za pośrednictwem elementów webhook
Większość naszych partnerów, którzy integrują się z alertami klasycznymi, obsługuje już nowsze alerty metryk za pośrednictwem integracji. Znane integracje, które już działają z nowymi alertami metryk, obejmują:
Jeśli korzystasz z integracji partnera, która nie jest wymieniona w tym miejscu, potwierdź u dostawcy, że współpracuje z nowymi alertami dotyczącymi metryk.