Crear reglas de alerta desde un proyecto

Crea grupos que contengan las reglas de alerta de 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, mientras que las reglas de registros envían alertas basadas en datos de registro. Debe introducir la expresión del lenguaje de consulta que determina si la alerta debe pasar a un estado pendiente. Además, puede incluir valores opcionales, como etiquetas y anotaciones.

Las etiquetas le permiten diferenciar las características de una alerta como un mapa de pares clave-valor. Usa etiquetas para añadir o sobrescribir 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, use anotaciones para añadir metadatos no identificativos a las alertas. Por ejemplo, puede incluir valores para mensajes y expresiones que se muestren en los campos de la interfaz de usuario o en las URLs de runbooks para ayudar con las acciones resolutivas.

También puedes crear reglas de alerta mediante la API Observability para interactuar directamente con un recurso personalizado y actualizar los cambios en el espacio de nombres de tu proyecto.

Antes de empezar

Antes de continuar, asegúrate de que tienes los siguientes permisos obligatorios:

Crear reglas de alerta basadas en registros

Para obtener los permisos que necesitas para crear o ver reglas de alertas basadas en registros, pide al administrador de gestión de identidades y accesos de tu proyecto que te conceda uno de los siguientes roles en el espacio de nombres de tu proyecto:

  • Creador de reglas de registro: crea recursos personalizados de LoggingRule. Solicita el rol Creador de reglas de Logging (loggingrule-creator).
  • Editor de reglas de registro: edita o modifica LoggingRule recursos personalizados. Solicita el rol Editor de reglas de Logging (loggingrule-editor).
  • Visor de reglas de registro: muestra los recursos personalizados de LoggingRule. Solicita el rol Visor de reglas de registro (loggingrule-viewer).

Crear reglas de alerta basadas en métricas

Para obtener los permisos que necesitas para crear o ver reglas de alertas basadas en métricas, pide al administrador de gestión de identidades y accesos de tu proyecto que te conceda uno de los siguientes roles en el espacio de nombres de tu proyecto:

  • Editor de reglas de monitorización: edita o modifica MonitoringRule recursos personalizados. Solicite el rol Editor de reglas de monitorización (monitoringrule-editor).
  • Lector de reglas de monitorización: ve recursos personalizados de MonitoringRule. Solicita el rol Lector de reglas de monitorización (monitoringrule-viewer).

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

Crear reglas

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

Consola

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 Operaciones > Alertas.
  3. Haga clic en la pestaña Alerting Policy (Política de alertas).
  4. Haz clic en Crear grupo de reglas.
  5. Selecciona si quieres crear un grupo de Métricas o de Registros. Las reglas de métricas envían alertas basadas en datos de monitorización del sistema, mientras que 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, escribe el nombre del grupo.
  7. En el campo Intervalo de evaluación de reglas, introduce el número de segundos de cada intervalo.
  8. En el campo Límite, introduce el número máximo de alertas. Introduce 0 para recibir alertas ilimitadas.
  9. En la sección Alert rules (Reglas de alerta), haz clic en Create Alert Rule (Crear regla de alerta).
  10. Da un nombre a la regla de alerta.
  11. Introduce una expresión para la regla de alerta:

    • En el caso de una regla de registro del sistema, introduce una expresión LogQL (lenguaje de consulta de registros).
    • En el caso de una regla de monitorización del sistema, introduce una expresión PromQL (lenguaje de consulta de Prometheus).

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

  12. En el campo Duración, introduce el número de segundos que deben transcurrir para que una alerta activa pase del estado pendiente al estado abierta. Nota: Si asignas el valor 0 a la duración, 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. Introduce un nombre corto para identificar el recurso relacionado, como AIS o DHCP.

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

  16. Introduce una URL o información de un runbook para resolver el problema.

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

  18. Opcional: Haz clic en Añadir etiqueta para añadir etiquetas como pares clave-valor.

  19. Opcional: Haz clic en Añadir anotación para añadir 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 monitorización y registro del sistema en GDC mediante la API Observability desplegando recursos personalizados. Un recurso personalizado de MonitoringRule o LoggingRule consta de una o varias consultas y expresiones para formar una condición, la frecuencia de evaluación y, opcionalmente, la duración durante la cual se cumple la condición.

Sigue estos pasos para crear reglas de alerta 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 de reglas de alertas de monitorización o de registro:
  2. En el campo namespace del recurso personalizado, introduce el espacio de nombres de tu proyecto.
  3. En el campo name, introduce un nombre para la configuración de la regla de alerta.
  4. Opcional: Si está configurando el recurso personalizado LoggingRule para las reglas de registro, puede elegir la fuente de registro de las alertas en el campo source. Por ejemplo, introduzca un valor como operational o audit.
  5. En el campo interval, introduce el número de segundos que durará el intervalo de evaluación de la regla.
  6. Opcional: En el campo limit, introduce el número máximo de alertas. Introduce 0 para recibir alertas ilimitadas.
  7. Opcional: Si también quiere calcular métricas y configurar reglas de registro, introduzca la siguiente información en el campo recordRules:

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

      • En el caso de una regla de registro del sistema, introduce una expresión LogQL (lenguaje de consulta de registros).
      • En el caso de una regla de monitorización del sistema, introduce una expresión PromQL (lenguaje de consulta de Prometheus).

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

    • Opcional: En el campo labels, defina las etiquetas que quiera añadir o sobrescribir como pares clave-valor.

  8. En el campo alertRules, introduce la siguiente información para configurar las reglas de alerta:

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

      • En el caso de una regla de registro del sistema, introduce una expresión LogQL.
      • En el caso de una regla de monitorización del sistema, introduce una expresión PromQL.

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

    • Opcional: En el campo for, introduce 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 quieras añadir o sobrescribir como pares clave-valor. Las siguientes etiquetas son obligatorias:

      • severity: elige el nivel de gravedad, como error, critical, warning o info.
      • code: introduce el código de alerta para identificarla.
      • resource: introduce un nombre corto para identificar el recurso relacionado, como AIS o DHCP.
    • Opcional: En el campo annotations, añade 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.

Configurar reglas de almacenamiento de registros y monitorización del sistema a partir de recursos personalizados

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

El recurso personalizado MonitoringRule

Para crear reglas de monitorización del sistema, debes crear un MonitoringRule recurso personalizado. Un MonitoringRule se compone 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>

Sustituye 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 se compone 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>

Sustituye PROJECT_NAMESPACE por el espacio de nombres de tu proyecto.