Todos los productos
Search
Centro de documentos

Cloud Monitor:Expresiones de reglas de alerta

Última actualización: Sep 03, 2026

Las expresiones de reglas de alerta permiten configurar condiciones complejas al crear una regla de alerta. Una expresión se compone de elementos básicos como nombres de métricas, operadores y funciones, y admite la comparación de datos históricos.

Elementos

Cloud Monitor evalúa las expresiones de reglas de alerta con base en los datos agregados de las métricas o de instancias individuales. Si los datos de monitoreo cumplen con la expresión, se activa una alerta. Una expresión consta de nombres de métricas, miembros de métricas, operadores, funciones y datos de monitoreo. Ejemplo: @cpu_total[60].$instanceId != 'i-2ze3jvsy7620giru****' && @cpu_total[60].$Average > 60.

  • Nombres de métricas

    Para obtener más información sobre las métricas de los diferentes servicios en la nube, consulte Appendix 1: Metrics for Alibaba Cloud products.

    Una expresión de métrica utiliza el formato @Metric name[Aggregation period]. Por ejemplo, para monitorear una instancia de Elastic Compute Service (ECS) con base en la métrica CPUUtilization, utilice @CPUUtilization[60].

    Nota
    • El periodo de agregación de las métricas para ECS se muestra en la columna Min Periods de la tabla en la página de lista de métricas para ECS. Para ver el periodo de agregación de métricas de otro servicio en la nube, seleccione el servicio en la lista desplegable.

    • El nombre de una métrica debe cumplir con la expresión regular [a-zA-Z][_a-zA-Z0-9]*. Si un nombre de métrica no cumple con la expresión regular, utilice el formato @(Metric name)[Aggregation period], por ejemplo, @('vm.DiskIORead')[60].

    Los nombres de métricas deben combinarse con los miembros de métricas para especificar el alcance de los datos de monitoreo.

  • Miembros de métricas

    Los miembros de métricas especifican el alcance de los datos de monitoreo para una métrica. Un miembro de métrica debe comenzar con un signo de dólar ($). Utilice el formato @Metric name[Aggregation period].$Metric member. Por ejemplo, los métodos estadísticos para la métrica CPUUtilization de ECS son Average, Minimum y Maximum. La expresión para el valor promedio es @CPUUtilization[60].$Average. Las dimensiones para la métrica CPUUtilization de ECS son userId y instanceId. La expresión para una instancia específica es @CPUUtilization[60].$instanceId.

    Nota

    Los miembros de las métricas para ECS se muestran en las columnas Dimensions y Statistics de la tabla en la página de lista de métricas para ECS. Para ver los miembros de métricas de otro servicio en la nube, seleccione el servicio en la lista desplegable.

  • Operadores

    Los operadores evalúan si los datos de monitoreo cumplen con la condición de alerta.

    • Operadores básicos

      Categoría

      Operador y descripción

      Operadores matemáticos

      • +: suma

      • -: resta

      • *: multiplicación

      • /: división

      • %: módulo

      • **: exponenciación

      Operadores de comparación

      • ==: igual a

      • ! =: diferente de

      • >: mayor que

      • >=: mayor o igual que

      • <: menor que

      • <=: menor o igual que

      Operadores lógicos

      • && o and: AND

      • || o or: OR

      • ! o not: NOT

      Ejemplo: $Average > 50 && $instanceId != 'i-not-exist'.

      Nota

      Si los valores a ambos lados de un operador matemático o de comparación no son del mismo tipo, una cadena se convierte a número; por ejemplo, '123' + 321 == 123 + '321' == 444.

    • Operadores de cadenas

      Operador de cadenas

      Descripción

      Ejemplo

      matches

      Coincide con una expresión regular.

      Utilice el operador lógico NOT con matches para negar una coincidencia de expresión regular.

      !("hello" matches "^fo.+")

      Nota

      El operador ! tiene mayor prioridad que el operador matches. Por lo tanto, debe encerrar la expresión regular entre paréntesis ().

      contains

      Contiene una cadena.

      'abcdef' contains 'cde'

      startsWith

      Comprueba si una cadena comienza con un prefijo especificado.

      'abcdef' startsWith 'abc'

      endsWith

      Comprueba si una cadena termina con un sufijo especificado.

      'abcdef' endsWith 'def'

    • Operadores de pertenencia

      Operador de pertenencia

      Descripción

      Ejemplo

      in

      Contiene

      • userld in [120886317861****, 425876]

        El valor de userld es 120886317861** o 20654616023382**.

      • "foo" in {'foo':1, 'bar':2}

        El valor de foo es foo o bar.

      not in

      No contiene

      • userld not in [120886317861****, 425876]

        El valor de userld no es 120886317861** ni 20654616023382**.

      • "foo" not in {'foo1':1, 'bar':2}

        El valor de foo no es foo1 ni bar.

    • Operadores ternarios

      ?:: Funciona igual que el operador ternario en C y Java; por ejemplo, @CPUUtilization[60].$Average > 30? "ok": "lower".

  • Operaciones de datos

    • Tipos de datos

      Tipo de dato

      Descripción

      Ejemplo

      string

      Una cadena encerrada entre comillas simples o dobles.

      "hello", 'hello'

      number

      Un número entero o de punto flotante.

      Nota

      Para números enteros, puede usar guiones bajos (_) como separadores para mejorar la legibilidad.

      • 103, 2.5, .5, 2e+6

      • 1_000_000

      array

      Un arreglo.

      [1, 2, 3]

      map o dict

      Un diccionario.

      {"foo":"bar"}

      bool

      Un valor booleano.

      true o false

      nil

      Un valor vacío.

      nil

    • Funciones integradas

      Función integrada

      Descripción

      `len(array

      map

      string)`

      Devuelve la longitud de un arreglo, mapa o cadena.

      now()

      Devuelve una marca de tiempo UTC en milisegundos.

      abs(number)

      Devuelve el valor absoluto (un número de punto flotante).

      rand()

      Devuelve un número de punto flotante entre [0, 1).

      rand(N)

      Devuelve un número de punto flotante entre [0, N).

      toLower(string)

      Convierte una cadena a minúsculas.

      toUpper(string)

      Convierte una cadena a mayúsculas.

    • Comparación

      Nota
      • Ejemplo de una métrica: @cpu_total[60].

      • Un método de agregación es una cadena. Ejemplo: '$Average'.

      • El resultado de la comparación es un valor booleano. Si el valor de la métrica del periodo actual es mayor que el valor de la métrica del periodo anterior, el resultado de la comparación es true. Si el valor de la métrica del periodo actual es menor que el valor de la métrica del periodo anterior, el resultado de la comparación es false.

      Función

      Descripción

      CompareLastPeriod(metric, aggregation method, comparison result)

      Devuelve el cambio porcentual en comparación con el periodo anterior. Ejemplo: CompareLastPeriod(@cpu_total[60], '$Average', true).

      Por ejemplo, si el valor promedio de cpu_total en el periodo actual es 20% y en el periodo anterior es 15%, el valor devuelto depende del resultado de la comparación.

      • Si el resultado de la comparación es true, esta función devuelve (20 - 15) × 100/20.

      • Si el resultado de la comparación es false, esta función devuelve (15 - 20) × 100/20.

      CompareLastHour(metric, aggregation method, comparison result)

      Devuelve el cambio porcentual en comparación con la hora anterior.

      CompareLastHour(@cpu_total[60], '$Average', true) > 10: Si el valor promedio de cpu_total aumenta un 10% en comparación con la hora anterior, se activa una alerta.

      CompareLastWeek(metric, aggregation method, comparison result)

      Obtiene los datos en comparación con el día anterior.

      CompareYesterday(@cpu_total[60], '$Average', true) > 10: Si el valor promedio de cpu_total aumenta un 10% en comparación con la semana anterior, se activa una alerta.

      CompareLastWeek(metric, aggregation method, comparison result)

      Obtiene los datos en comparación con la semana anterior.

      CompareLastWeek(@cpu_total[60], '$Average', true) > 10: Si el valor promedio de cpu_total aumenta un 10% en comparación con la semana anterior, se activa una alerta.

      ComparePast(metric, aggregation method, comparison result, seconds)

      Devuelve el cambio porcentual en comparación con el número especificado de seconds previos a la hora actual.

      Las cuatro funciones anteriores son formas simplificadas de esta función.

      • CompareLastHour(@cpu_total[60], '$Average', true) equivale a ComparePast(@cpu_total[60], '$Average', true, 3600).

      • CompareYesterday(@cpu_total[60], '$Average', true) equivale a ComparePast(@cpu_total[60], '$Average', true, 246060).

      • CompareLastWeek(@cpu_total[60], '$Average', true) equivale a ComparePast(@cpu_total[60], '$Average', true, 72460*60).

    • Funciones históricas

      Función

      Descripción

      LastPeriod(metric)

      Devuelve los datos del periodo anterior. Ejemplo: LastPeriod(@cpu_total[60]).$Average > 75. Si el valor promedio de cpu_total en el periodo anterior supera el 75%, se activa una alerta.

      LastHour(metric)

      Devuelve los datos de la hora anterior. Ejemplo: LastHour(@cpu_total[60]).$Average > 75. Si el valor promedio de cpu_total en la hora anterior supera el 75%, se activa una alerta.

      Yesterday(metric)

      Devuelve los datos del día anterior. Ejemplo: Yesterday(@cpu_total[60]).$Average > 75. Si el valor promedio de cpu_total en el día anterior supera el 75%, se activa una alerta.

      LastWeek(metric)

      Devuelve los datos de la semana anterior. Ejemplo: LastWeek(@cpu_total[60]).$Average > 75. Si el valor promedio de cpu_total en la semana anterior supera el 75%, se activa una alerta.

      Past(metric, seconds)

      Devuelve los datos correspondientes al número especificado de segundos previos a la hora actual. El número debe ser un múltiplo entero del periodo de agregación de la métrica. Las funciones anteriores son formas abreviadas de esta función. Por ejemplo, Past(@cpu_total[60], 3600) > 75 equivale a LastHour(@cpu_total[60]).$Average > 75.

Escenarios

A continuación se listan escenarios comunes para las expresiones de reglas de alerta.

Escenario

Expresión de regla de alerta

Descripción

Establecer un umbral dedicado para una instancia específica y un umbral diferente para otras instancias

@cpu_total[60].$Average > (@cpu_total[60].$instanceId == 'i-io8kfvcpp7x5****'? 80: 50)

Para la instancia i-io8kfvcpp7x5****, si el valor promedio de cpu_total supera 80, se activa una alerta. Para otras instancias, si el valor promedio de cpu_total supera 50, se activa una alerta.

Excluir una instancia específica de las alertas

@cpu_total[60].$instanceId != 'i-io8kfvcpp7x5****' && @cpu_total[60].$Average > 50

Para la instancia i-io8kfvcpp7x5****, se devuelve false y no se activa ninguna alerta. Para otras instancias, si el valor promedio de cpu_total supera 50, se activa una alerta.

Establecer una condición de alerta con base en varias métricas

@cpu_total[60].$Average > 50 && @memory_usage[60].$Average > 80

Si el valor promedio de cpu_total para una instancia supera el 50% y el valor promedio de memory_usage para la misma instancia supera el 80%, se activa una alerta.

Monitorear la latencia de reporte de métricas

now() - @heartbeat[60].$reportTime > 60_000

Si el tiempo de espera del heartbeat supera un minuto, se activa una alerta.

Nota

El parámetro reportTime indica cuándo se reportó una métrica. Es un parámetro integrado de cada métrica. La función now() devuelve una marca de tiempo UTC en milisegundos.