Поделиться через


Prepare your logic apps and runbooks for migration of classic alert rules (Подготовка приложений логики и модулей runbook для миграции классических правил генерации оповещений)

Примечание

Как было объявлено ранее, классические оповещения в Azure Monitor исключаются для пользователей общедоступного облака, хотя их ограниченное использование продолжится до 31 мая 2021 г. Классические оповещения для Azure для государственных организаций облака и Microsoft Azure под управлением 21Vianet будут прекращены 29 февраля 2024 г.

Если вы решили самостоятельно перенести классические правила генерации оповещений в новые правила генерации оповещений, существуют некоторые различия между этими двумя системами. В этой статье объясняются эти различия и способы подготовки к изменению.

Изменения API

API, которые создают классические правила генерации оповещений и управляют ими (microsoft.insights/alertrules), отличаются от API, которые создают новые оповещения о метриках (microsoft.insights/metricalerts) и управляют ими. Если вы программно создаете классические правила генерации оповещений и управляете ими уже сегодня, обновите сценарии развертывания для работы с новыми API.

В таблице ниже приведены ссылки на программные интерфейсы для классических и новых оповещений.

Тип сценария развертывания Классические оповещения Новые оповещений о метриках
REST API microsoft.insights/alertrules microsoft.insights/metricalerts
Azure CLI az monitor alert az monitor metrics alert
PowerShell Ссылки Ссылки
Шаблон Azure Resource Manager Классические оповещения Новые оповещения о метриках

Изменения полезных данных оповещений

Формат полезных данных оповещений немного отличается для классических правил генерации оповещений и новых оповещений о метриках. Если у вас есть классические правила генерации оповещений с веб-перехватчиком, приложением логики или действиями runbook, необходимо обновить целевые объекты, чтобы они принимали новый формат полезных данных.

Используйте следующую таблицу для привязки полей полезных данных веб-перехватчика из классического формата к новому формату:

Тип конечной точки уведомления Классические оповещения Новые оповещений о метриках
Было ли оповещение активировано или разрешено? status data.status
Контекстно-зависимые сведения об оповещении context data.context
Метка времени, когда оповещение было активировано или разрешено context.timestamp data.context.timestamp
Идентификатор правила генерации оповещений context.id data.context.id
Имя правила генерации оповещений context.name data.context.name
Описание правила оповещения context.description data.context.description
Условие для правила генерации оповещений context.condition data.context.condition
Имя метрики context.condition.metricName data.context.condition.allOf[0].metricName
Агрегирование по времени (как метрика агрегируется по окну оценки) context.condition.timeAggregation context.condition.timeAggregation
Период оценки context.condition.windowSize data.context.condition.windowSize
Оператор (как агрегированное значение метрики сравнивается с пороговым значением) context.condition.operator data.context.condition.operator
Пороговое значение context.condition.threshold data.context.condition.allOf[0].threshold
Значение метрики context.condition.metricValue data.context.condition.allOf[0].metricValue
Идентификатор подписки context.subscriptionId data.context.subscriptionId
Группа ресурсов затронутого ресурса context.resourceGroup data.context.resourceGroup
Имя затронутого ресурса context.resourceName data.context.resourceName
Тип затронутого ресурса context.resourceType data.context.resourceType
Идентификатор затронутого ресурса. context.resourceId data.context.resourceId
Прямая ссылка на страницу сводки по ресурсу на портале context.portalLink data.context.portalLink
Настраиваемые поля полезных данных, передаваемые веб-перехватчику или приложению логики properties data.properties

Как можно видеть, полезные данные похожи. Следующие раздел содержит:

  • Сведения об изменении приложений логики для работы с новым форматом.
  • Пример модуля runbook, который анализирует полезные данные новых оповещений.

Изменение приложения логики для получения уведомлений об оповещениях на основе метрик

Если вы используете приложения логики с классическими оповещениями, необходимо изменить код логики приложения, чтобы проанализировать новые полезные данные оповещений о метриках. Выполните следующие действия.

  1. Создайте новое приложение логики.

  2. Используйте шаблон "Azure Monitor — обработчик оповещений о метриках". Этот шаблон содержит триггер HTTP-запроса с заданной соответствующей схемой.

    Снимок экрана: две кнопки: Пустое приложение логики и Azure Monitor — обработчик оповещений метрик.

  3. Добавьте действие для размещения логики обработки.

Использование модуля runbook службы автоматизации, который получает уведомление об оповещении на основе метрики

В следующем примере показан код PowerShell для использования в модуле runbook. Этот код может анализировать полезные данные для классических и новых правил генерации оповещений о метриках.

## 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."
}

Полный пример модуля Runbook, который останавливает виртуальную машину при активации оповещения, см. в разделе служба автоматизации Azure documenation.

Интеграция партнеров через веб-перехватчики

Большинство наших партнеров, которые интегрируются с классическими оповещениями, уже поддерживают новые оповещения о метриках с помощью их интеграций. Известные интеграции, которые уже работают с новыми оповещениями метрик:

Если вы используете интеграцию с партнером, не указанную здесь, выясните у поставщика, что он работает с новыми оповещениями о метриках.

Дальнейшие действия