Preparar las aplicaciones lógicas y los runbooks para la migración de las reglas de alertas clásicas
Nota
Como se ha anunciado antes, se retiran las alertas clásicas de Azure Monitor para los usuarios de la nube pública, aunque se seguirán usando de forma limitada hasta el 31 de mayo de 2021. Las alertas clásicas para la nube de Azure Government y Microsoft Azure operado por 21Vianet se retirarán el 29 de febrero de 2024.
Si decide realizar la migración voluntaria de las reglas de alerta clásicas a las nuevas, tenga en cuenta que existen algunas diferencias entre los dos sistemas. En este artículo se explican esas diferencias y cómo puede prepararse para el cambio.
Cambios de API
Las API que crean y administran las reglas de alertas clásicas (microsoft.insights/alertrules
) son diferentes de las API que crean y administran las nuevas alertas de métricas (microsoft.insights/metricalerts
). Si crea y administra mediante programación reglas de alertas clásicas hoy, actualice los scripts de implementación para trabajar con las nuevas API.
La tabla siguiente es una referencia a las interfaces de programación para las alertas clásicas y nuevas:
Tipo de script de implementación | Alertas clásicas | Nuevas alertas de métricas |
---|---|---|
API DE REST | microsoft.insights/alertrules | microsoft.insights/metricalerts |
Azure CLI | az monitor alert |
az monitor metrics alert |
PowerShell | Referencia | Referencia |
Plantilla del Administrador de recursos de Azure | Para alertas clásicas | Para nuevas alertas de métricas |
Cambios de carga de notificación
El formato de carga de notificación es ligeramente diferente entre las reglas de alertas clásicas y las nuevas alertas de métricas. Si tiene reglas de alerta clásicas con acciones de webhook, aplicación lógica o runbook, debe actualizar los destinos para que acepten el nuevo formato de carga.
Utilice la tabla siguiente para asignar los campos de carga de webhook del formato clásico al nuevo formato:
Tipo de punto de conexión de notificaciones | Alertas clásicas | Nuevas alertas de métricas |
---|---|---|
¿Se activó o resolvió la alerta? | status | data.status |
Información contextual sobre la alerta | contextoo | data.context |
Marca de tiempo en que se activó o resolvió la alerta | context.timestamp | data.context.timestamp |
Id. de regla de alerta | context.id | data.context.id |
Nombre de regla de alerta | context.name | data.context.name |
Descripción de la regla de alerta | context.description | data.context.description |
Condición de regla de alerta | context.condition | data.context.condition |
Nombre de métrica | context.condition.metricName | data.context.condition.allOf[0].metricName |
Agregación de tiempo (cómo se agrega la métrica en la ventana de evaluación) | context.condition.timeAggregation | context.condition.timeAggregation |
Período de evaluación | context.condition.windowSize | data.context.condition.windowSize |
Operador (cómo se compara el valor de métrica agregado con el umbral) | context.condition.operator | data.context.condition.operator |
Umbral | context.condition.threshold | data.context.condition.allOf[0].threshold |
Valor de métrica | context.condition.metricValue | data.context.condition.allOf[0].metricValue |
Id. de suscripción | context.subscriptionId | data.context.subscriptionId |
Grupo de recursos del recurso afectado | context.resourceGroup | data.context.resourceGroup |
Nombre del recurso afectado | context.resourceName | data.context.resourceName |
Tipo del recurso afectado | context.resourceType | data.context.resourceType |
Id. del recurso afectado | context.resourceId | data.context.resourceId |
Vínculo directo a la página de resumen de recursos del portal | context.portalLink | data.context.portalLink |
Campos de carga personalizada que se deben pasar a la aplicación lógica o webhook | properties | data.properties |
Las cargas son similares, como puede ver. En la siguiente sección se ofrece:
- Detalles acerca de cómo modificar las aplicaciones lógicas para trabajar con el nuevo formato.
- Un ejemplo de runbook que analiza la carga de notificación para las alertas nuevas.
Modificar una aplicación lógica para recibir una notificación de alerta de métrica
Si usa aplicaciones lógicas con alertas clásicas, debe modificar el código de aplicación de lógica para analizar la nueva carga de alertas de métricas. Siga estos pasos:
Cree una nueva aplicación lógica.
Use la plantilla "Azure Monitor - Metrics Alert Handler" (Azure Monitor: controlador de alertas de métricas). Esta plantilla tiene un desencadenador de solicitud HTTP con el esquema apropiado definido.
Agregue una acción para hospedar la lógica de procesamiento.
Usar un runbook de automatización que reciba una notificación de alerta de métrica
En el ejemplo siguiente se proporciona código de PowerShell para usar en el runbook. Este código puede analizar las cargas para reglas de alertas de métricas clásicas y nuevas reglas de alertas 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 obtener un ejemplo completo de un runbook que detiene una máquina virtual cuando se desencadena una alerta, consulte la Azure Automation la enumeración.
Integración de asociados a través de webhooks
La mayoría de nuestros asociados que se integran con las alertas clásicas ya son compatibles con las nuevas alertas de métricas a través de sus integraciones. Entre las integraciones conocidas que ya funcionan con nuevas alertas de métricas se incluyen las siguientes:
Si usa una integración de asociados que no aparece aquí, confirme con el proveedor que funciona con las nuevas alertas de métricas.