Preparar seus aplicativos lógicos e runbooks para a migração de regras de alerta clássicos

Observação

Conforme anunciado anteriormente, os alertas clássicos no Azure Monitor foram desativados para os usuários da nuvem pública, embora ainda estejam em uso limitado até 31 de maio de 2021. Os alertas clássicos da nuvem do Azure Governamental e do Azure operado pela 21Vianet serão desativados no dia 29 de fevereiro de 2024.

Se você optar por migrar voluntariamente suas regras de alerta clássicas para as regras de alerta novas, haverá algumas diferenças entre os dois sistemas. Este artigo explica essas diferenças e como você pode se preparar para a alteração.

Alterações de API

As APIs que criam e gerenciam as regras de alerta clássicas (microsoft.insights/alertrules) são diferentes das que criam e gerenciam os novos alertas de métrica (microsoft.insights/metricalerts). Se você cria e gerencia regras de alerta clássicas programaticamente, atualize seus scripts de implantação para que funcionem com as novas APIs.

A seguinte tabela é uma referência às interfaces programáticas para os alertas clássicos e novos:

Tipo de script de implantação Alertas clássicos Novos alertas de métrica
API REST microsoft.insights/alertrules microsoft.insights/metricalerts
CLI do Azure az monitor alert az monitor metrics alert
PowerShell Referência Referência
Modelo do Azure Resource Manager Para alertas clássicos Para novos alertas de métrica

Alterações no conteúdo de notificação

O formato do conteúdo de notificação é ligeiramente diferente entre as regras de alerta clássicas e os novos alertas de métrica. Se você tiver regras de alerta clássicas com ações de runbook, webhook ou aplicativo lógico, deverá atualizar os destinos para aceitar o novo formato do conteúdo.

Use a seguinte tabela para mapear os campos de conteúdo do webhook do formato clássico para o novo formato:

Tipo do ponto de extremidade de notificação Alertas clássicos Novos alertas de métrica
O alerta foi ativado ou resolvido? status data.status
Informações contextuais sobre o alerta contexto data.context
Carimbo de data/hora em que o alerta foi ativado ou resolvido context.timestamp data.context.timestamp
ID da regra de alerta context.id data.context.id
Nome da regra de alerta context.name data.context.name
Descrição da regra de alerta context.description data.context.description
Condição de regra de alerta context.condition data.context.condition
Nome da métrica context.condition.metricName data.context.condition.allOf[0].metricName
Agregação de tempo (como a métrica é agregada ao longo da janela de avaliação) context.condition.timeAggregation context.condition.timeAggregation
Período de avaliação context.condition.windowSize data.context.condition.windowSize
Operador (como o valor agregado da métrica é comparado com o limite) context.condition.operator data.context.condition.operator
Limite context.condition.threshold data.context.condition.allOf[0].threshold
Valor da métrica context.condition.metricValue data.context.condition.allOf[0].metricValue
ID da assinatura context.subscriptionId data.context.subscriptionId
Grupo de recursos do recurso afetado context.resourceGroup data.context.resourceGroup
Nome do recurso afetado context.resourceName data.context.resourceName
Tipo do recurso afetado context.resourceType data.context.resourceType
A ID do recurso afetado context.resourceId data.context.resourceId
Link direto para a página de resumo de recursos do portal context.portalLink data.context.portalLink
Campos de conteúdo personalizados a serem passados para o webhook ou aplicativo lógico properties data.properties

Os conteúdos são semelhantes, como você pode ver. A seguinte seção oferece:

  • Detalhes sobre como modificar aplicativos lógicos para funcionarem com o novo formato.
  • Um exemplo de runbook que avalia o conteúdo de notificação para novos alertas.

Modificar um aplicativo lógico para receber uma notificação de alerta de métrica

Se você estiver usando aplicativos lógicos com alertas clássicos, deverá modificar o código do aplicativo lógico para analisar a o novo conteúdo dos alertas de métrica. Siga estas etapas:

  1. Criar um aplicativo lógico.

  2. Use o modelo "Azure Monitor – Manipulador de Alertas de Métricas". Esse modelo tem um gatilho de solicitação HTTP com o esquema apropriado definido.

    A captura de tela mostra dois botões, Aplicativo Lógico em Branco e Azure Monitor – Manipulador de Alertas de Métricas.

  3. Adicione uma ação para hospedar sua lógica de processamento.

Usar um runbook de automação que recebe uma notificação de alerta de métrica

O exemplo a seguir fornece o código do PowerShell a ser usado em seu runbook. Esse código pode analisar os conteúdos de regras de alerta de métrica clássicas e de novas regras de alerta de métrica.

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

Para obter um exemplo completo de um runbook que interrompe uma máquina virtual quando um alerta é disparado, consulte o Automação do Azure documenation.

Integração de parceiros por meio de webhooks

A maioria de nossos parceiros que se integram aos alertas clássicos já tem suporte para alertas de métrica mais novos por meio de suas integrações. As integrações conhecidas que já funcionam com novos alertas de métrica incluem:

Se você está usando uma integração de parceiros que não está listada aqui, confirme com o provedor que ela funciona com os novos alertas de métrica.

Próximas etapas