Udostępnij za pośrednictwem


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:

  1. Utwórz nową aplikację logiki.

  2. Użyj szablonu "Azure Monitor — procedura obsługi alertów metryk". Ten szablon ma wyzwalacz żądania HTTP z odpowiednim zdefiniowanym schematem.

    Zrzut ekranu przedstawia dwa przyciski: Pustą aplikację logiki i usługę Azure Monitor — procedura obsługi alertów metryk.

  3. 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.

Następne kroki