Partilhar via


Preparar as suas aplicações lógicas e runbooks para a migração de regras de alerta clássicas

Nota

Conforme anunciado anteriormente, os alertas clássicos no Azure Monitor são descontinuados para os utilizadores da cloud pública, embora ainda estejam em utilização limitada até 31 de maio de 2021. Os alertas clássicos para Azure Government cloud e o Microsoft Azure operado pela 21Vianet serão descontinuados a 29 de fevereiro de 2024.

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

Alterações à API

As APIs que criam e gerem regras de alerta clássicas (microsoft.insights/alertrules) são diferentes das APIs que criam e gerem novos alertas de métricas (microsoft.insights/metricalerts). Se criar e gerir programaticamente regras de alerta clássicas hoje, atualize os scripts de implementação para funcionarem com as novas APIs.

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

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

Alterações ao payload de notificação

O formato payload de notificação é ligeiramente diferente entre as regras de alerta clássicas e os novos alertas de métricas. Se tiver regras de alerta clássicas com ações de webhook, aplicação lógica ou runbook, tem de atualizar os destinos para aceitar o novo formato de payload.

Utilize a tabela seguinte para mapear os campos de payload do webhook do formato clássico para o novo formato:

Tipo de ponto final de notificação Alertas clássicos Novos alertas de métricas
O alerta foi ativado ou resolvido? estado data.status
Informações contextuais sobre o alerta contexto data.context
Carimbo de data/hora no qual 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 da 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 na 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 de métrica agregado é comparado com o limiar) 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 subscrição context.subscriptionId data.context.subscriptionId
Grupo de recursos do recurso afetado context.resourceGroup data.context.resourceGroup
Indique o nome do recurso afetado context.resourceName data.context.resourceName
Tipo do recurso afetado context.resourceType data.context.resourceType
ID de recurso do recurso afetado context.resourceId data.context.resourceId
Ligação direta para a página de resumo de recursos do portal context.portalLink data.context.portalLink
Campos de payload personalizados a serem transmitidos para o webhook ou aplicação lógica propriedades data.properties

Os payloads são semelhantes, como pode ver. A secção seguinte oferece:

  • Detalhes sobre como modificar aplicações lógicas para funcionarem com o novo formato.
  • Um exemplo de runbook que analisa o payload de notificação para novos alertas.

Modificar uma aplicação lógica para receber uma notificação de alerta de métrica

Se estiver a utilizar aplicações lógicas com alertas clássicos, tem de modificar o código da aplicação lógica para analisar o novo payload de alertas de métricas. Siga estes passos:

  1. Criar uma nova aplicação lógica.

  2. Utilize o modelo "Azure Monitor - Processador de Alertas de Métricas". Este modelo tem um acionador de pedido HTTP com o esquema adequado definido.

    Captura de ecrã a mostrar dois botões, a Aplicação Lógica em Branco e o Azure Monitor – Processador de Alertas de Métricas.

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

Utilizar um runbook de automatização que recebe uma notificação de alerta de métrica

O exemplo seguinte fornece código do PowerShell para utilizar no runbook. Este código pode analisar os payloads das regras de alerta de métricas clássicas e das novas regras de alerta de métricas.

## 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 para uma máquina virtual quando um alerta é acionado, veja o Automatização do Azure documenation.

Integração de parceiros através de webhooks

A maioria dos nossos parceiros que se integram com alertas clássicos já suportam alertas de métricas mais recentes através das respetivas integrações. As integrações conhecidas que já funcionam com novos alertas de métricas incluem:

Se estiver a utilizar uma integração de parceiros que não está listada aqui, confirme junto do fornecedor que estes funcionam com novos alertas de métricas.

Passos seguintes