Crea reglas de alertas desde tu proyecto

Crea grupos que contengan las reglas de alerta para las métricas o los registros de tu proyecto en la consola de GDC. Las reglas de métricas envían alertas basadas en datos de métricas, y las reglas de registros envían alertas basadas en datos de registros. Debes ingresar la expresión del lenguaje de consultas que determina si la alerta debe pasar a un estado pendiente. Además, puedes incluir valores opcionales, como etiquetas y anotaciones.

Las etiquetas te permiten diferenciar las características de una alerta como un mapa de pares clave-valor. Usa etiquetas para agregar o reemplazar información, como el nivel de gravedad (error, crítico, advertencia o información), el código de alerta y un nombre corto para identificar el recurso.

Por otro lado, usa anotaciones para agregar metadatos que no identifiquen las alertas. Por ejemplo, puedes incluir valores para los mensajes y las expresiones que se muestran en los campos de la interfaz de usuario (IU) o las URLs de los runbooks para ayudar con las acciones resolutivas.

Como alternativa, puedes crear reglas de alertas con la API de Observability para interactuar directamente con un recurso personalizado y actualizar los cambios en el espacio de nombres de tu proyecto.

Antes de comenzar

Antes de continuar, asegúrate de tener los siguientes permisos necesarios:

Crea reglas de alertas basadas en registros

Para obtener los permisos que necesitas para crear o ver reglas de alertas basadas en registros, pídele al administrador de IAM del proyecto que te otorgue uno de los siguientes roles en el espacio de nombres de tu proyecto:

  • Logging Rule Creator: Crea recursos personalizados LoggingRule. Solicita el rol de creador de reglas de Logging (loggingrule-creator).
  • Editor de reglas de registro: Edita o modifica recursos personalizados LoggingRule. Solicita el rol de editor de reglas de Logging (loggingrule-editor).
  • Logging Rule Viewer: Visualiza recursos personalizados de LoggingRule. Solicita el rol de visualizador de reglas de Logging (loggingrule-viewer).

Crea reglas de alertas basadas en métricas

Para obtener los permisos que necesitas para crear o ver reglas de alertas basadas en métricas, pídele al administrador de IAM del proyecto que te otorgue uno de los siguientes roles en el espacio de nombres de tu proyecto:

  • Editor de reglas de supervisión: Edita o modifica recursos personalizados MonitoringRule. Solicita el rol de editor de reglas de Monitoring (monitoringrule-editor).
  • Visualizador de reglas de Monitoring: Visualiza recursos personalizados de MonitoringRule. Solicita el rol de Visualizador de reglas de Monitoring (monitoringrule-viewer).

Para obtener más información sobre las asignaciones de roles, consulta Descripciones de roles predefinidos.

Cómo crear reglas

Puedes crear reglas de alertas con la consola de GDC, que es el método preferido, o bien implementar un recurso personalizado con la API de Observability en el espacio de nombres de tu proyecto.

Console

Sigue estos pasos para crear reglas de alertas desde la consola de GDC:

  1. En la consola de GDC, selecciona un proyecto.
  2. En el menú de navegación, haz clic en Operations > Alerting.
  3. Haz clic en la pestaña Política de alertas.
  4. Haz clic en Crear grupo de reglas.
  5. Selecciona si deseas crear un grupo para Métricas o Registros. Las reglas de métricas envían alertas basadas en datos de supervisión del sistema, y las reglas de registro envían alertas basadas en datos de registro del sistema.
  6. En el campo Nombre del grupo de reglas de alerta, ingresa un nombre para el grupo.
  7. En el campo Intervalo de evaluación de reglas, ingresa la cantidad de segundos para cada intervalo.
  8. En el campo Límite, ingresa la cantidad máxima de alertas. Ingresa 0 para recibir alertas ilimitadas.
  9. En la sección Reglas de alertas, haz clic en Crear regla de alerta.
  10. Ingresa un nombre para la regla de alerta.
  11. Ingresa una expresión para la regla de alerta:

    • Para una regla de registro del sistema, ingresa una expresión de LogQL (lenguaje de consultas de registros).
    • Para una regla de supervisión del sistema, ingresa una expresión de PromQL (lenguaje de consulta de Prometheus).

    Esta expresión debe evaluarse como una declaración verdadera o falsa, que determina si la alerta debe pasar a un estado pendiente o no.

  12. En el campo Duración, ingresa la cantidad de segundos para definir cuándo una alerta activa pasa del estado pendiente al estado abierto. Nota: Si estableces la duración en un valor de 0, el sistema de Observabilidad enviará la alerta inmediatamente después de que se cumpla la condición.

  13. En el campo Gravedad, elige el nivel de gravedad, como Error o Advertencia.

  14. Ingresa un nombre corto para identificar el recurso relacionado, como AIS o DHCP.

  15. Ingresa un código de alerta para identificarla.

  16. Ingresa una URL o información del runbook para ayudar a resolver el problema.

  17. Ingresa un mensaje o una descripción de la alerta.

  18. Opcional: Haz clic en Agregar etiqueta para agregar etiquetas como pares clave-valor.

  19. Opcional: Haz clic en Agregar anotación para agregar anotaciones como pares clave-valor.

  20. Haz clic en Guardar para crear la regla.

  21. Haz clic en Crear para crear el grupo de reglas. El grupo de reglas aparece en la lista Grupo de reglas de alerta.

API

Puedes crear reglas de supervisión y registro del sistema en GDC con la API de Observability implementando recursos personalizados. Un recurso personalizado MonitoringRule o LoggingRule consta de una o más consultas y expresiones para formar una condición, la frecuencia de evaluación y, de manera opcional, la duración durante la cual se cumple la condición.

Sigue estos pasos para crear reglas de alertas implementando un recurso personalizado en el espacio de nombres de tu proyecto:

  1. Crea un archivo YAML para el recurso personalizado con las siguientes plantillas para las reglas de alertas de supervisión o registro:
  2. En el campo namespace del recurso personalizado, ingresa el espacio de nombres de tu proyecto.
  3. En el campo name, ingresa un nombre para la configuración de la regla de alertas.
  4. Opcional: Si configuras el recurso personalizado LoggingRule para las reglas de registro, puedes elegir la fuente de registro para las alertas en el campo source. Por ejemplo, ingresa un valor como operational o audit.
  5. En el campo interval, ingresa la cantidad de segundos para la duración del intervalo de evaluación de la regla.
  6. Opcional: En el campo limit, ingresa la cantidad máxima de alertas. Ingresa 0 para recibir alertas ilimitadas.
  7. Opcional: Si también deseas calcular métricas y configurar reglas de grabación, ingresa la siguiente información en el campo recordRules:

    • En el campo record, ingresa el nombre de la grabación. Este valor define la serie temporal en la que se escribirá la regla de grabación y debe ser un nombre de métrica válido.
    • En el campo expr, ingresa una expresión para la regla de grabación:

      • Para una regla de registro del sistema, ingresa una expresión de LogQL (lenguaje de consultas de registros).
      • Para una regla de supervisión del sistema, ingresa una expresión de PromQL (lenguaje de consulta de Prometheus).

      Esta expresión debe resolverse en un valor numérico para registrarse como una métrica nueva.

    • Opcional: En el campo labels, define las etiquetas que deseas agregar o reemplazar como pares clave-valor.

  8. En el campo alertRules, ingresa la siguiente información para configurar reglas de alertas:

    • En el campo alert, ingresa el nombre de la alerta.
    • En el campo expr, ingresa una expresión para la regla de alerta:

      • En el caso de una regla de registro del sistema, ingresa una expresión de LogQL.
      • Para una regla de supervisión del sistema, ingresa una expresión de PromQL.

      Esta expresión debe evaluarse como una declaración verdadera o falsa, que determina si la alerta debe pasar a un estado pendiente o no.

    • Opcional: En el campo for, ingresa la duración en segundos durante la cual se debe cumplir la condición especificada para que la alerta pase del estado pendiente al estado abierta. La duración predeterminada si no especificas otro valor es de 0 segundos.

    • En el campo labels, define las etiquetas que deseas agregar o reemplazar como pares clave-valor. Se requieren las siguientes etiquetas:

      • severity: Elige el nivel de gravedad, como error, critical, warning o info.
      • code: Ingresa el código de alerta para identificarla.
      • resource: Ingresa un nombre corto para identificar el recurso relacionado, como AIS o DHCP.
    • Opcional: En el campo annotations, agrega anotaciones como pares clave-valor.

  9. Guarda el archivo YAML del recurso personalizado.

  10. Implementa el recurso personalizado en el espacio de nombres del proyecto del clúster de administrador para crear las reglas de alerta.

Configura reglas de registro y supervisión del sistema a partir de recursos personalizados

En esta sección, se incluyen las plantillas de YAML que debes usar para crear reglas de alertas implementando recursos personalizados. Si creas alertas desde la consola de GDC, puedes omitir esta sección.

El recurso personalizado MonitoringRule

Para crear reglas de supervisión del sistema, debes crear un recurso personalizado MonitoringRule. Un MonitoringRule consta de reglas de registro y reglas de alerta que describen las condiciones para enviar una alerta.

En el siguiente archivo YAML, se muestra una plantilla del recurso personalizado MonitoringRule:

# Configures either an alert or a target record for precomputation
apiVersion: monitoring.gdc.goog/v1
kind: MonitoringRule
metadata:
  # Choose namespace that matches the project namespace
  # Note: The alert or record will be produced in the same namespace
  namespace: PROJECT_NAMESPACE
  name: alerting-config
spec:
  # Rule evaluation interval
  interval: 60s

  # Configure limit for number of alerts (0: no limit)
  # Optional. Default: 0 (no limit)
  limit: 0

  # Configure recording rules to generate new metrics based on pre-existing metrics.
  # Recording rules precompute expressions that are frequently needed or computationally expensive.
  # These rules save their result as a new set of time series.
  recordRules:
    # Define which timeseries to write to. The value must be a valid metric name.
  - record: MyMetricsName

    # Define PromQL expression to evaluate for this rule
    expr: rate({service_name="bob-service"} [1m])

    # Define labels to add or overwrite
    # Optional. Map of key-value pairs
    labels:
      <label_key>: <label_value>

  # Configure alert rules
  alertRules:
    # Define alert name 
  - alert: <string>

    # Define PromQL expression to evaluate for this rule
    # https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/
    expr: rate({service_name="bob-service"} [1m])

    # Define when an active alert moves from pending to open
    # Optional. Default: 0s
    for: 0s

    # Define labels to add or overwrite
    # Required, Map of key-value pairs
    # Required labels:
    #     severity: [error, critical, warning, info]
    #     code:
    #     resource: component/service/hardware related to the alert
    #     additional labels are optional
    labels:
      severity: error
      code: 202
      resource: AIS
      <label_key>: <label_value>

    # Define annotations to add
    # Optional. Map of key-value pairs
    # Recommended annotations:
    #     message: value of Message field in UI
    #     expression: value of Rule field in UI
    #     runbookurl: URL for link in Actions to take field in UI
    annotations:
      <label_key>: <label_value>

Reemplaza PROJECT_NAMESPACE por el espacio de nombres de tu proyecto.

El recurso personalizado LoggingRule

Para crear reglas de registro del sistema, debes crear un recurso personalizado LoggingRule. Un LoggingRule consta de reglas de registro y reglas de alerta que describen las condiciones para enviar una alerta.

# Configures either an alert or a target record for precomputation
apiVersion: logging.gdc.goog/v1
kind: LoggingRule
metadata:
  # Choose namespace that matches the project namespace
  # Note: The alert or record will be produced in the same namespace
  namespace: PROJECT_NAMESPACE
  name: alerting-config
spec:
  # Choose which log source to base alerts on (Operational/Audit Logs)
  # Optional. Default: Operational
  source: operational

  # Rule evaluation interval
  interval: 60s

  # Configure limit for number of alerts (0: no limit)
  # Optional. Default: 0 (no limit)
  limit: 0

  # Configure recording rules to generate new metrics based on pre-existing logs.
  # Recording rules generate metrics based on logs.
  # Use recording rules for complex alerts, which query the same expression repeatedly every time they are evaluated.
  recordRules:
    # Define which timeseries to write to. The value must be a valid metric name.
  - record: MyMetricsName

    # Define LogQL expression to evaluate for this rule
    # https://grafana.com/docs/loki/latest/rules/
    expr: rate({service_name="bob-service"} [1m])

    # Define labels to add or overwrite
    # Optional. Map of key-value pairs
    labels:
      <label_key>: <label_value>

  # Configure alert rules
  alertRules:
    # Define alert name
  - alert: <string>

    # Define LogQL expression to evaluate for this rule
    expr: rate({service_name="bob-service"} [1m])

    # Define when an active alert moves from pending to open
    # Optional. Default: 0s
    for: 0s

    # Define labels to add or overwrite
    # Required, Map of key-value pairs
    # Required labels:
    #     severity: [error, critical, warning, info]
    #     code:
    #     resource: component/service/hardware related to alert
    #     additional labels are optional
    labels:
      severity: warning
      code: 202
      resource: AIS
      <label_name>: <label_value>

    # Define annotations to add
    # Optional. Map of key-value pairs
    # Recommended annotations:
    #     message: value of Message field in UI
    #     expression: value of Rule field in UI
    #     runbookurl: URL for link in Actions to take field in UI
    annotations:
      <label_name>: <label_value>

Reemplaza PROJECT_NAMESPACE por el espacio de nombres de tu proyecto.