Cómo calcular métricas a partir de datos de métricas

El cálculo de métricas implica generar métricas nuevas basadas en registros o métricas preexistentes para la observabilidad de los datos. Para calcular las métricas en GDC, debes configurar reglas de grabación en un recurso personalizado MonitoringRule. Las reglas de registro precalculan expresiones que se necesitan con frecuencia o que son costosas desde el punto de vista computacional. Estas reglas guardan su resultado como un nuevo conjunto de series temporales. Consultar el resultado precalculado es más rápido que ejecutar la expresión original cuando sea necesario. Esta precomputación es especialmente útil para los paneles y las alertas complejas, que deben consultar la misma expresión repetidamente cada vez que se actualizan o evalúan.

Configuras reglas de grabación en el recurso personalizado MonitoringRule para calcular métricas basadas en otras métricas de supervisión del sistema. El recurso personalizado MonitoringRule contiene reglas de grabación que describen las condiciones para calcular métricas nuevas basadas en métricas preexistentes.

Antes de comenzar

Para obtener los permisos que necesitas para calcular métricas a partir de otras métricas, pídele al administrador de IAM del proyecto que te otorgue uno de los siguientes roles:

  • 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).

Cómo crear reglas de grabación

Define un nombre de registro y una expresión válida que evalúe la regla. La expresión debe resolverse en un valor numérico para registrarse como una métrica nueva. Implementa el recurso personalizado en el espacio de nombres de tu proyecto en el clúster de administrador para crear las reglas de grabación.

Para obtener más información sobre las reglas de grabación, consulta https://grafana.com/docs/loki/latest/rules/.

Sigue estos pasos para crear reglas de registro y calcular métricas en el espacio de nombres de tu proyecto:

  1. Abre o crea el archivo YAML para el CR con la plantilla CR de MonitoringRule para las reglas de registros de supervisión.
  2. En el campo namespace del CR, ingresa el espacio de nombres de tu proyecto.
  3. En el campo name, ingresa el nombre de la configuración de la regla.
  4. Opcional: Puedes elegir la fuente de registro en el campo source. Las opciones válidas son operational y 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. En el campo recordRules, ingresa la siguiente información para calcular las métricas:

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

      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. Guarda el archivo YAML del CR.

  9. Implementa el CR en el espacio de nombres del proyecto del clúster de administrador para crear las reglas de registro.

Las reglas de registro de MonitoringRule

Un recurso personalizado MonitoringRule contiene reglas de grabación que describen las condiciones para calcular métricas nuevas basadas en métricas de supervisión del sistema preexistentes.

En el siguiente archivo YAML, se muestra una plantilla para el campo recordRules del CR MonitoringRule.

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

  # Configure limit for number of alerts (0: no limit)
  # Optional, Default: 0 (no limit)
  limit: <int>

  # Configure record rules to generate new metrics based on pre-existing metrics.
  # Record 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 (must be a valid metric name)
  - record: <string>

    # Define PromQL expression to evaluate for this rule
    expr: <string>

    # Define labels to add or overwrite
    # Optional, Map of {key, value} pairs
    labels:
      <labelname>: <labelvalue>
...

Reemplaza PROJECT_NAMESPACE por el espacio de nombres de tu proyecto.

Las reglas de registro de LoggingRule

Un CR de LoggingRule contiene reglas de registro que describen las condiciones para calcular métricas nuevas basadas en registros preexistentes.

En el siguiente archivo YAML, se muestra una plantilla para el campo recordRules del CR LoggingRule.

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

  # Rule evaluation interval
  interval: <duration>

  # Configure limit for number of alerts (0: no limit)
  # Optional, Default: 0 (no limit)
  limit: <int>

  # Configure record rules to generate new metrics based on pre-existing logs.
  # Record rules generate metrics based on logs.
  # Use record rules for complex alerts, which query the same expression repeatedly every time they are evaluated.
  recordRules:
    # Define which timeseries to write to (must be a valid metric name)
  - record: <string>

    # Define LogQL expression to evaluate for this rule
    # https://grafana.com/docs/loki/latest/rules/
    expr: <string>

    # Define labels to add or overwrite
    # Optional, Map of {key, value} pairs
    labels:
      <labelname>: <labelvalue>
...