Créer des métriques à partir de métriques existantes

Cette page explique comment générer des métriques à partir de métriques existantes en déployant une ressource personnalisée MonitoringRule dans l'appliance Google Distributed Cloud (GDC) isolée.

Les règles d'enregistrement vous permettent de précalculer les expressions fréquemment utilisées ou coûteuses en termes de calcul, ce qui améliore les performances des tableaux de bord et des alertes. Définies dans les ressources personnalisées MonitoringRule, ces règles génèrent de nouvelles métriques de séries temporelles à partir de métriques existantes, ce qui améliore l'observabilité des données.

En stockant les résultats précalculés, les règles d'enregistrement éliminent les calculs redondants chaque fois qu'une expression est nécessaire. Cette méthode accélère considérablement les temps de réponse aux requêtes, en particulier pour les tableaux de bord et les alertes complexes qui nécessitent des évaluations répétées de la même expression. En substance, les ressources MonitoringRule vous permettent de dériver de nouvelles métriques à partir de celles existantes en spécifiant les calculs nécessaires dans leurs règles d'enregistrement.

Avant de commencer

Pour obtenir les autorisations nécessaires pour gérer les ressources personnalisées MonitoringRule, demandez à votre administrateur IAM de l'organisation ou du projet de vous accorder l'un des rôles MonitoringRule associés.

Selon le niveau d'accès et les autorisations dont vous avez besoin, vous pouvez obtenir des rôles de créateur, d'éditeur ou de lecteur pour cette ressource dans une organisation ou un projet. Pour en savoir plus, consultez Préparer les autorisations IAM.

Créer des règles d'enregistrement

Pour créer une règle d'enregistrement, définissez un nom pour la métrique enregistrée et une expression valide qui produit une valeur numérique. Lorsqu'elle est évaluée, cette expression génère la nouvelle métrique. Déployez la ressource personnalisée dans l'espace de noms de votre projet sur le serveur de l'API Management pour créer les règles d'enregistrement.

Pour en savoir plus sur les règles d'enregistrement, consultez https://grafana.com/docs/loki/latest/rules/.

Pour créer des règles d'enregistrement dans l'espace de noms de votre projet, procédez comme suit :

  1. Déterminez le projet GDC à partir duquel vous souhaitez créer des règles d'enregistrement.
  2. Créez un fichier YAML définissant la ressource personnalisée MonitoringRule.

    La spécification complète de MonitoringRule contient un exemple de règles d'enregistrement basées sur les métriques. Pour en savoir plus, consultez la documentation de référence sur les API.

  3. Remplacez les valeurs suivantes dans le fichier YAML en fonction de vos besoins :

    Nom du champ Description
    namespace Espace de noms du projet.
    name Nom de la configuration de la règle.
    interval Durée de l'intervalle d'évaluation des règles, en secondes.
    limit Facultatif. Nombre maximal d'alertes. Définissez la valeur sur 0 pour un nombre illimité d'alertes.
    recordRules Définitions pour calculer de nouvelles métriques.
    recordRules.record Nom de l'enregistrement pour la nouvelle métrique. La valeur doit être un nom de métrique valide qui définit la série temporelle dans laquelle les résultats sont stockés.
    recordRules.expr Expression PromQL pour la règle de métrique, qui doit renvoyer une valeur numérique.
    recordRules.labels Facultatif. Paires clé/valeur des libellés à ajouter ou à remplacer dans la nouvelle métrique.
  4. Enregistrez le fichier YAML.

  5. Appliquez la configuration MonitoringRule au serveur de l'API Management dans le même espace de noms que vos règles d'enregistrement :

    kubectl --kubeconfig KUBECONFIG_PATH apply -f MONITORING_RULE_NAME.yaml
    

    Remplacez les éléments suivants :

    • KUBECONFIG_PATH : chemin d'accès au fichier kubeconfig pour le serveur de l'API Management.
    • MONITORING_RULE_NAME : nom du fichier de définition MonitoringRule.

Spécification complète de MonitoringRule

Une ressource personnalisée MonitoringRule contient des règles d'enregistrement qui décrivent les conditions à remplir pour créer des métriques basées sur des métriques existantes à des fins d'observabilité.

Le fichier YAML suivant montre un modèle pour la ressource personnalisée MonitoringRule. Pour en savoir plus, consultez la documentation de référence sur l'API.

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

  # Configure the limit for the number of alerts.
  # A value of '0' means no limit.
  # Optional.
  # Default value: '0'
  limit: 0

  # Configure recording rules to generate new metrics based on existing metrics.
  # Recording rules precompute expressions that are frequently needed or computationally expensive.
  # Results are saved as a new set of time series.
  recordRules:
    # Define the time series where you want to write the recording rule.
    # The value must be a valid metric name.
  - record: MyMetricsName

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

    # Define labels to add or overwrite.
    # Map of key-value pairs.
    # Optional.
    labels:
      verb: read

Remplacez les éléments suivants :

  • PROJECT_NAMESPACE : espace de noms de votre projet.
  • MONITORING_RULE_NAME : nom du fichier de définition MonitoringRule.

Règles d'enregistrement LoggingRule

Un CR LoggingRule contient des règles d'enregistrement qui décrivent les conditions de calcul de nouvelles métriques basées sur des journaux préexistants.

Le fichier YAML suivant montre un modèle pour le champ recordRules de la 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>
...